第一场
第一题筛素直接过。
第二题dp直接过。
第三题。
朋友的朋友是你的朋友 也就是说,这个事情控制在两层。就没事了。
in other word 合并集合的时候保留原集合。
第四题。不会。。。
第五题。太长看不动。。。
第六题。给定gcd和lcm,求可能数;
突然发现poj做过。。。心梗。枚举。
lcm(a,b) = (ab)/gcd(a,b) ==> ab = lcm(a,b)*gcd(a,b);
然后枚举。
不过区别在于因子个数。
感觉一枚举就要T。
第七题。不想说了太水了。
第八题。和第二场的第一题是一致的。
第九题。和第六题挺像;N选K的所有乘积之和;
1) 选择 data的第1个元素为arr的第一个元素,即:arr[0] = data[0];
2) 在data第一个元素之后的其它元素中,选取其余的 m - 1个数,这是一个上述问题的子问题,递归即可。
3) 依次选择 data的第 2 到 n - m + 1元素作为起始点,再执行1、2步骤。
4) 递归算法过程中的 m = 0 时,输出 arr 的所有元素。
排列组合过程。
第十题图论。
邻接矩阵建立有向图。
floyd稳稳的超时。2000的三次方。
s级的数据应该控制在百万。无解了
第二场
这场基本就是10th...
第一题暴力直接上循环 千万别深搜 好好优化 别为难自己.
第十二题lcm一直T,后来仔细想了下1-60的用意;gcd函数是要打表的。
第二题 看不懂。。。如解题报告所示辣么简单
第三题 忽略前导0.求子串数的期望。。。
就统计两遍呗加起来除以2...麻烦的是怎么判断被3整除啊!
reg = /^(0+|01((101)|(010))10)$/
意会一下:三种可能性:
第一种:0+表示全0
第二种:1((101)|(010))10*)
所以理智的做法是写正则表达式然后枚举子串match??
正规军的套路
Answer
列举所有状态做状态转移 庆幸我是大电子的人。
第四题:二分查找合适的气球高度。前提是最优解唯一。
第五题:简单的不想说话。
第六题:太长看不动。。。
第七题:map和pair什么的都可以的。
第八题:这个博弈。。。还tm是个线段树啊
第九题:这题变态,宝宝不会。
第十题:RMQ
第十一题:类似第十二题。如果当时把12的心思花在11上
也会T。。。10^9了亲。
第三场
强A两题。
网选
A三元组distinct枚举求平方和;
(set就可以吧?而且只要不重载,set应当是自动排序的)
先考虑特殊情况:长度不到3;
对所有数据排序;判重;找符合条件的;计算;
B有点心疼 大数阶乘。数据是1e+5那么大;(当然要取余)
应该不会再出大数的题了吧 如果出,全tm高精度做法
然后至于这种取模的,打表。
freopen("np.out","w",stdout);记得这个就可以
C是线段树无疑
D区间维护
E应该是要直接写模拟的
F快速幂不说了
G多叉树dp
H最短路
I高中物理
j不会。。。
没把B和H做出来真是心塞