摘要:
赛后独立做出了这道题,开心~ 在随机数据下,朴素维护已经是一个比较高效的过程了 考虑特殊情形1:链,引入树链剖分算法(链上的每一条边都是重边) 考虑特殊情形2:菊花图,倍增法查找后继节点 节点的w为0不完全等价于该点已失去价值——也可能是遭遇了蝗灾 点击查看代码 #include <bits/std 阅读全文
摘要:
要统计差值为k的数对(i,j)的数量,这种感觉类似于卷积,我们把和差放到幂次中体现,就可以用NTT做到O(ailogai) 其中,对于差值为0的特殊情况,不仅需要减去数自匹配的n种情况,还要除以2 NTT要预处理step+倍增法优化,否则会TLE 将游戏每轮的操作抽象为数学函数 点击查看代码 #in 阅读全文
摘要:
考场思路是,离线处理询问,从大到小枚举bi,对每个ai维护已被统计的询问区间 由于数据随机,我们似乎可以感受到已统计询问区间扩张的次数不会太大,于是自然想到有没有办法精准扩张呢?很遗憾,难做 另一个思路是,区间扩张的情况往往集中出现在最大的几个bi 于是引入分块的“大段维护,局部朴素”思想,我们进行 阅读全文
摘要:
素数的密度约为ln(n),这就是说,1~n中素数的个数约为\(\frac {n}{ln(n)}\) 观察你写出来的DP转移式,可以发现检查时没有必要DP,直接贪心就好了 由于数据随机,最后十分钟“乱搞”两次成功过题,开心~ 点击查看代码 #include <bits/stdc++.h> using 阅读全文
摘要:
本质不同的合法日期至多只有366个,我们可以先生成所有合法日期,再采用和维护名字一样的方法统计 点击查看代码 #include <bits/stdc++.h> #define pii pair<int,int> using namespace std; int f[1000005],cnt[1000 阅读全文
摘要:
建立【正向目标】——1号队伍所在的组至多一支队伍的实力不小于L,实力极差超过D 点击查看代码 #include <bits/stdc++.h> using namespace std; struct t1 { int a,id; }t[100005]; bool cmp(t1 a,t1 b) { r 阅读全文
摘要:
枚举每个数属于哪组,有\(\frac {4^{18}}{24}\)种情况,我们无法承受这样的时间复杂度 但是我们可以用\(2^n\)的时间枚举每个数属于左边两组还是右边两组 由于分组是无序的,我们强制规定a1属于左边两组,时间复杂度降至\(2^{n-1}\) 在每个大组中,用01背包统计合法状态,这 阅读全文
摘要:
树状数组可以用来维护前缀最大值 把矩形按某个坐标排序来处理问题的思想 点击查看代码 #include <bits/stdc++.h> using namespace std; int p[300005],v[300005],n,m; long long ans[300005],tmp[300005] 阅读全文
摘要:
二维数点问题 我们通过扫描线可以将静态的二维问题转换为动态的一维问题 维护动态的一维问题就使用数据结构维护序列 点击查看代码 #include <bits/stdc++.h> using namespace std; struct t1 { int x,y; }t[500005]; struct q 阅读全文
摘要:
怎么感觉杭电OJ有好几台不同的评测机,而且评测机之间不但速度不同,而且对代码长度的统计都不同? 理论上答案是可以超过int存储范围的,反正没有这种数据,我不管了 点击查看代码 #include <bits/stdc++.h> using namespace std; vector<int>a[200 阅读全文