noip模拟22[d·e·f]】的更多相关文章

noip模拟22 solutions 哈哈哈,这次暴力打满直接190,其实不到哈哈哈,187.. 这次的题暴力极其好打,但是正解确实不简单... 打了好久才改完这个题,改完的时候爽暴了 这些一个字母的题就非常的迷人,题面很短,题目很难,但是拿分还是挺简单的 · T1 d 就这个题考场一小时切掉,还是慢了点 这个就是一个排序加上,疯狂弹, 就是一个按照a排序,一个按照b排序 我们知道一定要删去小的,所以我们就.... 我们先删掉m个a中的a较小的矩形,然后我们就开始一个一个往回拿. 肯定我们要拿回…
又发现模拟 \(22\) 的总结也咕掉了,现在补上它... 似乎又是gg的一场. 以为自己的部分分数打的很全,然而到后面发现自己的树剖打假了 \(\color{green}{\huge{\text{树剖打假???}}}\) 好废啊... 然后我的 \(lca\) 就变成了 \(\mathcal O(n)\) 的向上标记法 罪魁祸首: 然后... 然而改成: 然后: 原地爆炸... 生气... 然而并没有什么用.. 部分分数都打不全...还是水平问题... d: 利用上一场单调指针的思想,然后我们…
题解 \(by\;zj\varphi\) 对于一个数,如果它二进制下第 \(i\) 位为 \(1\),那么 \(\rm x\) 在这一位选 \(1\) 的贡献就是和它不同的最高为为 \(i\) 的数的个数 这个东西很好搞,整一个 \(\rm 01trie\) 就行,每会插入的时候直接统计即可 但是如何求第 \(p\) 位,二分,但每回二分时 \(2^k\) 搜索一遍就超时了,\(\rm meet\;in\;the\;middle\) 发现每一位是相互独立的,也就是说它们之间是不会互相影响的,所以…
T1:d   枚举.   现在都不敢随便打枚举了.   实际上我们只关注最后留下的矩阵中最小的长与宽即可.   所以我们将所有矩阵按a的降序排列.   从第\(n-m\)个开始枚举.   因为你最多拿走\(m\)个.   考虑到交面积是越交越小的,所以我们尽可能的多拿矩阵走.   我们将前\(n-m\)个矩阵丢进堆里,按b排序,小根堆.   我们只关心b第\(n-m\)大的矩阵,因为我们已经决定要刘m个了,原因已经说过了.   所以我们要让堆顶尽可能大.并维护堆的大小为\(n-m\)即可.具体实…
T1 d 简化题意就是找到相对平均长宽的偏移量较大的矩形给他删掉 可以说是个贪心,按照a,b分别为第一关键字排序 然后假装删去要求的那么多个按a排序的较小的,然后再去b中, 找到 删去的a中的那几个矩形 比 按b排序的却并未删去的矩形 优的加回到最终用的矩形集合中 上述操作用经典指针可以实现.(%%zxs活学活用指针场上A掉此题) 1 #include<bits/stdc++.h> 2 #define int long long 3 using namespace std; 4 inline…
终于碾压小熠了乐死了 T1 d 小贪心一波直接出正解,没啥好说的(bushi 好像可以主席树暴力找,但我怎么可能会呢?好像可以堆优化简单找,但我怎么可能想得到呢? 那怎么办?昨天两道单调指针加桶,我直接使用经典方法. 先把a该删的全删了,之后按a填一个按b删一个,O(m)枚举所有情况. code: 1 #include<bits/stdc++.h> 2 #define debug exit(0) 3 #define LL long long 4 using namespace std; 5 c…
T1d 一道垃圾贪心,写个堆优化或者桶就行 1 #include<bits/stdc++.h> 2 #define int long long 3 using namespace std; 4 inline int read() 5 { 6 int x=0,f=1; 7 char ch=getchar(); 8 while(ch<'0'||ch>'9') 9 { 10 if(ch=='-') f=-1; 11 ch=getchar(); 12 } 13 while(ch>='…
题解 对于这个 \(abs\) 就是求大于 \(r\) 的最小值,小于 \(r\) 的最大值,建权值线段树或平衡树. 因为是 \(k\) 个点的联通块,就是求它们的 \(lca\) 到它们的链,可持久化线段树就行 在这里,只需要儿子继承父亲即可,因为要求一条链. 在搜前趋时,右儿子有就搜右儿子,搜出一个答案后就停止,这样可以做到每次最多搜 \(log\) 个区间,只有一个区间会继续向下搜,所以总的也是 \(log\) 总复杂度 \(\mathcal O\rm (klogn)\) Code #in…
题解 很好的贪心题 考虑去掉的矩形一定是几个 \(a\) 最小的,几个 \(b\) 最小的,枚举去掉几个 \(a\),剩下的去掉 \(b\) 先对 \(a\) 排序,用小根堆维护 \(b\) ,记录哪些已经在 \(a\) 中删了,这些在 \(b\) 中就需要跳过 但跳过时也需要记录一下曾经跳过,因为以后在放回 \(a\) 时,如果它在 \(b\) 中出现过,直接填坑即可 Code #include<bits/stdc++.h> #define ri register signed #defin…
剧情回放:xuefeng:考场上你们只打暴力不打正解,我不满意! skyh:考场怒切T2以表明自己拥护xuefeng的决心 BoboTeacher:这场考试就没想让你们上100 神犇skyh:(笑而不语) 众蒟蒻:跪. T1 数论 忘删调试信息跪了20. 正解运用了迭代收敛的思想.. 首先$ d(x)=\pi (c_i +1) $表明$ d(x) $中各个质数的贡献是独立的 即:考虑了一部分质数之后,如果此时数x不优,那么将来加(乘)上其他质数相同的贡献之后仍然不优. 举例,$ d(x)=4,d…