第五场模拟,收获比较大,分也比较低。
100+0+47
第一题比较简单,第二题写了一个程序,写到一半卡住了,手出样例搞错,写不下去了。
第三题会做,但是考虑得实在是不周全。
主要还是因为心态没调整好,第二题把它想得太难,没想清楚就开始打,到了剩下一个半小时的时候发现思路错了,写不下去。
但是改第二题我只用了15分钟。
而且是在睡觉的时候想好的,思考过程5分钟。
冷静思考还是比较重要。
T1
题目大意:
平面上分别有n个起点和n个终点,每个起点只能匹配它右上方的终点。
求最大匹配。
n<=1e5
题解:
二位偏序问题,按某一维排序,剩下一维用multiset就好了。
T2
题目大意:
给出n*m的图案,每个位置时大写字母,可以进行相邻两行或两列的交换,问能否交换成中心对称图形。
多组数据。
t<=10,n,m<=12
题解:
大概就是说行和列可以任意排列。
最暴力的方法就是枚举行和列的排列。
考虑优化一下,预处理任意两行、两列可否有可能通过变换实现中心对称。
暴力完成这个是O(n^4)的,可以接受。
每次枚举可以直接一对一对地枚举,这样方案数只会有11*9*7*5*3=10395
用这些来优化原有的暴力。
T3
题目大意:
给出正整数n、k,问是否有可行的方法用k的因数的和(数可重复)组成n。
n<=1e18,k<=1e15,多组数据,数组组数<=1e4,保证不同的k最多50个
题解:
分情况讨论吧。
设c为k的质因数个数。
当c=1,直接判断。
当c=2,可以用拓展欧几里得解一下方程。
当c>=3,可以转换成最短路模型,经典题了啊。
原文:https://www.cnblogs.com/lmlysklt/p/9649084.html