Guilds | (Stage I) | (100/100) |
Railway | (Stage I) | (0/100) |
Beads | (Stage I) | (100/100) |
Divine Divisor | (Stage I) | (100/100) |
Intelligence Test | (Stage I) | (100/100) |
Antisymmetry | (Stage II - day 0) | (100/100) |
Hamsters | (Stage II - day 1) | (100/100) |
Blocks | (Stage II - day 1) | (100/100) |
Sheep | (Stage II - day 2) | (100/100) |
Teleportation | (Stage II - day 2) | (100/100) |
Monotonicity | (Stage III - day 0) | (100/100) |
Monotonicity 2 | (Stage III - day 0) | (100/100) |
The Minima Game | (Stage III - day 1) | (100/100) |
Lamp | (Stage III - day 1) | (0/100) |
Frog | (Stage III - day 1) | (100/100) |
Ones | (Stage III - day 2) | (0/100) |
Bridges | (Stage III - day 2) | (100/100) |
Pilots | (Stage III - day 2) | (100/100) |
不做了不做了弃坑了。。。写下题解吧。本来想把railway切掉的发现线段树套set水不掉还要在写一个线段树。。。就放弃了。
Guilds SB题。如果有孤点,显然无解;否则按照在dfs(或者bfs)树的深度奇偶性染色即可。
Beads 根据调和级数可知暴力是NlnN的。具体判断用hash即可。
Divine Divisor 数学好题。这题就是统计幂次最高的质数的个数和幂次。显然由于每个数<=10^18,预处理10^6的质数然后把每个数中<=10^6的质数都去掉;剩下的显然只有p,p^2,pq,前两种分别用miller_rabin和开根号;否则可以把这个数和所有数求一下gcd得到p和q,如果得不到也没事,只要知道出现次数即可。
Intelligence Test 对每一个询问维护一个指针表示当前到了哪里然后统一操作即可。
Antisymmetry 把奇数位的取反就变成manacher求最长偶数回文串。
Hamsters 用kmp预处理两个串最长的重叠部分然后Floyd+倍增即可。注意自己也可以套上自己。
Blocks 对于询问k,把所有的都减去k然后求前缀和b[i],然后就是求最大的j-i使得b[j]>=b[i],显然i在单调递减队列上,j同理。然后维护两个指针即可。
Sheep 显然对于某一个分割线合法就永远合法,否则永远不合法,然后dp即可。注意不能nmlogm预处理某一条线是否合法,要枚举羊然后双指针去扫。
Teleportation 把所有点分成三类,s1为和直接和1相连的,s2为和直接和2相连的,剩下为s3。显然s3里面的不能同时连向s1和s2,那么对于s3里面的点,如果和s1中某个点相连那么不妨和s1里面所有点相连,和s2相连同理;否则连向s1和s2中点多的那个。这样应该是最优的吧因为每个点都连了尽可能多的点。
Monotonicity 下面那题的弱化版。
Monotonicity 2 令dp[i]表示到i为止的最优解,显然因为定下dp[i]就定下了符号然后树状数组优化转移即可。可以贪心地证明这样是对的。
The Minima Game 显然如果取了某一个不妨把比它大的都去掉不会吃亏。那么排序然后令dp[i]表示先手取前i个的最大值,然后就是dp[i]=max{a[i]-dp[i-1],dp[i-1]},可以变成两个变量转来转去。
Frog 预处理每个点下一步会跳到哪里然后倍增。
Bridges 二分答案然后就变成经典的混合图欧拉回路网络流模型。还要输出方案十分蛋疼。
Pilots 单调队列SB题。
代码戳→这里
by lych
2016.6.8