摘要: 题目链接 O(n^2)的DP是显然的,但没有优化思路。考虑证伪数据范围。发现n>2600时,根据抽屉原理,一定有一个字符出现了至少101次。 阅读全文
posted @ 2024-07-24 19:35 D06 阅读(19) 评论(0) 推荐(0)
摘要: 题目链接 考场上被这道题卡了三个半小时,没想到自己的构造水平这么差…… 正解是,考虑“字典序最小”的要求还是有点抽象了,其必要条件是:1号点连的边尽量多,相同时2号点连的边尽量多,相同时3号点连的边尽量多,以此类推 构造题的核心在于数学推导而不在于代码实现 一步步优化得到正解似乎是可行的,但耗时太长 阅读全文
posted @ 2024-07-24 13:33 D06 阅读(28) 评论(0) 推荐(0)
摘要: 坐标变换:令\(y_i=x_i+2i\) 2147483648=\(2^{31}\) 缺少的一位是符号位 点击查看代码 #include <bits/stdc++.h> using namespace std; vector<int>ans; int main() { long long n; ci 阅读全文
posted @ 2024-07-23 17:06 D06 阅读(7) 评论(0) 推荐(0)
摘要: 题目链接 s.find()函数可以直接返回位置,找不到则返回-1 点击查看代码 #include <bits/stdc++.h> using namespace std; bool check(string s) { for(int i=0;i<s.size();i++) { if(s[i]=='= 阅读全文
posted @ 2024-07-23 12:20 D06 阅读(7) 评论(0) 推荐(0)
摘要: 题目链接 ios::sync_with_stdio(false); cin.tie(0); \(\Uparrow\) 关闭同步/解除绑定,可以优化读入字符串的效率 这行代码的缺失,不仅导致程序在本地运行时需要过好几秒才能读入数据,更导致程序在OJ上评测时TLE AC自动机解决的是“每个模式串在文本串 阅读全文
posted @ 2024-07-23 12:10 D06 阅读(53) 评论(0) 推荐(1)
摘要: 题目链接 点对的权值都是可以拆的 逆用完全平方公式,将两两乘积之和转化为和的平方 树上启发式合并的核心在于保留重儿子的信息 动态开点线段树空间计算:考虑到\(2^{20}>10^6\),区间【1,1000000】至多分裂20次,产生21个子节点 线段树合并:任意节点为空就不再递归 点击查看代码 #i 阅读全文
posted @ 2024-07-22 23:04 D06 阅读(12) 评论(0) 推荐(0)
摘要: 题目链接 除了扫描线,二维前缀和也可以O(\(n^2\))地求出矩形的面积并,且两种方法的前提都是离散化 二维差分:在矩形的四个顶角做标记,也有容斥原理的影子 变量名不能起y1,y2似乎还是C++98时代的事情,打开-std=c++11就没有这个问题了;现在连NOIP都使用C++14标准了,所以应该 阅读全文
posted @ 2024-07-22 21:51 D06 阅读(14) 评论(0) 推荐(0)
摘要: 汉明码的精髓在于,既然你无法分辨更改检验位的情况,就把检验位放到冲突的位置,消掉那一位 位运算的性质:a+b=(a|b+a&b) \(a\oplus b\oplus 0\)+\(a\oplus b\oplus (111…11)\)=111…11 其实D题才是最简单的题目,比赛的整体难度低于省赛,明年 阅读全文
posted @ 2024-07-21 23:02 D06 阅读(14) 评论(0) 推荐(0)
摘要: 题目链接 位运算的性质:各位之间的运算是相互独立的 因此,分别考虑每一位的方案数,显然比你的考场做法更优 阅读全文
posted @ 2024-07-21 11:19 D06 阅读(8) 评论(0) 推荐(0)
摘要: 题目链接 直接做很难下手。考虑“出现次数的立方值”的组合意义,就是在原序列中选三个相同的子序列的方案数,然后DP即可 利用容斥原理计算高维前缀和 老生常谈的取模后运算得负数的问题 阅读全文
posted @ 2024-07-19 20:25 D06 阅读(144) 评论(0) 推荐(0)
//雪花飘落效果