AC代码
1 | 3 |
看我手算样例

主要思路写在注释当中,具体来说就是算贡献度
1 |
|
心路历程(WA,TLE,MLE……)
对拍暴力程序(不用多说,肯定超时)
1 |
|
贪心有偏差做法,偏差在这个部分
其实复杂的样例都通不过
1 | }else { |
虽然从最后一位看上去 i 位置是没有贡献的(在个数上),但前面的某些位其实是有在个数上的贡献的
1 |
|
1 | 3 |
看我手算样例

主要思路写在注释当中,具体来说就是算贡献度
1 | #include <iostream> |
1 | #include <iostream> |
其实复杂的样例都通不过
1 | }else { |
虽然从最后一位看上去 i 位置是没有贡献的(在个数上),但前面的某些位其实是有在个数上的贡献的
1 | #include <iostream> |
AC
相比于上一次WA,修改了这些(这没啥好多说的,idx2为-会导致一系列问题)
1 | if(idx2<0) |
以及加了一个n+1(原来是n)(一般情况下不会被击穿因为如果超了我会减掉,但正巧空的默认值是0,即
xp[idx2].first)为0,正好我的判断条件是xp[idx2].first!=r,碰巧hack数据r也为0,就被击穿了,idx2没减,让我的程序WA了。
1 | for(int i=1;i<=n+1;i++) { |
AC代码
1 | #include <iostream> |
挺神奇的,就WA了一个点
1 | #include <iostream> |
这题面说起来也简单,就是P1=5 那我就用P5代替你———同理 所有的Pi都要进行这个操作
题意很简单,就是操作数很大,不可能模拟。
那我们的问题就变成了这个变化有什么规律吗?

一个非常详细的题解

1 | #include <iostream> |
挺难想的,实现起来其实也比较难,还需要快速幂,但确实是一次提交AC,只能说我的图论代码实现水平还是比较高的
给定 n 条线段 [Li,Ri],线段端点都在 1∼m 的范围内。需要统计满足题意的区间数量(等价于对每个左端点 l,能延伸到的最大右端点受右侧最小的 R 约束),并输出总数。
主要思路是一个点所能到达的最大边界取决于它的minR,也即在它右边的最小右边界
可以看到minR的统计过程是这样的
1 | for(int _=1;_<=n;_++) { |
可以证明在 【Li,Ri】,比Li还小的地方 l(包含Li)的【l,r】区间包含Ri,必然导致【l,r】包含【Li,Ri】
所以比Li更小的地方应该将Ri考虑在minR的取值中
比如说minR[1]==4 他的答案怎么统计那?
1 | 1 2 3 |
可以看到一共有三种区间([1,3],[1,2],[1,1])即区间长度之和即为答案([1,4])
然后还有一些离线化的优化方法,注释里写的很清楚
1 | #include <iostream> |
一次提交过的,之前的代码样例都过不了就不放在这里了
给定多个 n,要求输出满足某种异或性质的最小的 2k(或按题意构造出的答案)。本题可通过打表/找规律解决,并需要对小值(如 n=1,2)特判。
打表题
注意特判一下1 and 2
其他的没什么好多说的
其实下次这种题目建议写一个对拍程序
1 | #include <iostream> |
哈哈,没特判2