随笔分类 -  OI

摘要:赛时 先上来看T1,发现没有什么性质,所以一定是搜索 然后考虑到n很小,所以直接搜,然后剪枝,就一定能过 大概50分钟左右过了 然后看T2,先想了链和菊花的情况 但是剩下的就想不到了 能想到,大概率是个dp 但是感觉也有可能是贪心,没怎么想 然后就想T3了 T3真的感觉很可做 开始就想到了sb2 m 阅读全文
posted @ 2025-10-06 22:01 daydreamer_zcxnb 阅读(21) 评论(0) 推荐(0)
摘要:赛时 创飞了www 赛前还是给自己定了目标,事实证明,定目标对像昨天那种顺风局是有利的,然而对于今天纯逆风局是负面buff 赛时开T1,一眼区间dp,因为异或的和这种一看就不能贪心,然后也不具有局部最优性,所以赛时反复考虑的按位枚举也是错误的 发现当前区间的贡献是很好得出的 难点在于统计k个的分别贡 阅读全文
posted @ 2025-10-05 21:46 daydreamer_zcxnb 阅读(23) 评论(0) 推荐(0)
摘要:赛时 真是的,赛前目标230+,结果真就拿了230 T1不到半小时过了 T2仔细分讨了一下,发现了很多性质 感觉起来很麻烦,但是感谢没有放弃 然后花了3h切了 想这种分讨题目,写之前不光要想思路,还要想实现,这样正确性更高一点 赛时因为不知道a还能大于p,多调了好久 在开写代码之前应当再看眼题目!! 阅读全文
posted @ 2025-10-04 21:53 daydreamer_zcxnb 阅读(15) 评论(0) 推荐(0)
摘要:CF1716A 不难发现,只保留一个1即可,其余的怎么变都可以,所以变成k个后,直接取max在序列中有1的情况下必然可以构造出来 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=55; int t,n,k,ans; in 阅读全文
posted @ 2025-09-25 18:42 daydreamer_zcxnb 阅读(12) 评论(0) 推荐(0)
摘要:概括 每次查询一定范围内的点组成的点对中的最优值,而通过一些分析去减少有用点对的数量,这样子的有用点对称为 支配对 T1 策略是将 \(a_i\) 相同的序列取出来单独考虑 固定 \(b_i<b_j,i<j\) 然后考虑能找出来一个序列 \(i,j1,j2,j3...\) 但是发现选 \(i,j2\ 阅读全文
posted @ 2025-09-17 20:24 daydreamer_zcxnb 阅读(73) 评论(0) 推荐(1)
摘要:前言 数论专题模拟赛 来到北京第一场模拟赛 T1 赛时想了2h 分为1号点和2号点,但是发现同一种情况可以有不同的分法 所以我们固定以下,规定第一次出现的数为1号点,形式化的一号点个数不小于二号点 就可以dp来做,发现满足卡特兰数 做完了 赛场上由于求的是单独一个数的逆元而不是逆元的前缀和,调了好久 阅读全文
posted @ 2025-09-15 20:21 daydreamer_zcxnb 阅读(16) 评论(0) 推荐(0)
摘要:P3380 【模板】树套树 这里采取的是线段树套平衡树(FHQ) 考虑树套树可以解决类似于在两维区间限制类似操作的问题 把线段树上每个节点维护一颗平衡树,维护的方法也非常简单,发现只要知道root,就能够访问平衡树,非常简单 考虑每个节点会被添加log次,所以平衡树要 nlogn 个节点,线段树普通 阅读全文
posted @ 2025-09-11 20:45 daydreamer_zcxnb 阅读(15) 评论(0) 推荐(0)
摘要:CF1644C 注意到可以 \(n^2\) 然后发现我们发现了连续字串然后再加是更优的(因为x>0) 所以直接找最大的连续字串,然后直接算贡献,注意考虑特殊情况 CF1644D 一定要注意到q次操作都是给出的(大雾 然后因为最终方案差异表现为最终不同版面的印刷,所以倒着做,统计有效方案个数,然后根据 阅读全文
posted @ 2025-09-09 09:29 daydreamer_zcxnb 阅读(17) 评论(1) 推荐(0)
摘要:CF627A 本人大抵是切了 首先考虑这句话,异或是不带进位的加法 所以用 \(s-t\) 就代表二进制下哪一位进一了(大雾 由此得到 $ a + b = ( a\ \& \ b) * 2 +( a \oplus b ) $ 然后先判断合法,考虑加法中的二进制位如果有 1 则答案 *2 注意特判一个 阅读全文
posted @ 2025-09-05 18:22 daydreamer_zcxnb 阅读(28) 评论(0) 推荐(0)
摘要:CF1854A1 这种构造题,我觉得,思路应当是先从特殊情况开始,然后要么转化成特殊情况,要么找性质结合特殊情况构造 或先理解(理解结构)或找基本思路 特殊情况: 全部大于0,前缀和即可 \(n-1\) 次操作 全部小于0,后缀和即可 \(n-1\) 次操作 注意到一般情况,没有什么头绪,太乱了 能 阅读全文
posted @ 2025-09-03 14:28 daydreamer_zcxnb 阅读(8) 评论(0) 推荐(0)
摘要:CF1823D 构造题 这个题解写的蛮详细的 我的题解: 首先是在长度为 \(n\) 的串中,本质不同的回文串最多有 \(n\) 个 证明考虑新加入一个元素,若原来出现过,可能构成了较长和较短的两个回文串,只会增加较长的回文串贡献,因为较短的肯定已经被包含过了 答案贡献的用形如 aaaaaa 这种来 阅读全文
posted @ 2025-09-03 08:38 daydreamer_zcxnb 阅读(9) 评论(0) 推荐(0)
摘要:CF1834A 真水题 点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=105; int t,n; int a[N]; int main(){ scanf("%d",&t); while(t--){ scanf("%d" 阅读全文
posted @ 2025-08-29 11:26 daydreamer_zcxnb 阅读(15) 评论(0) 推荐(0)
摘要:CF1928A 首先我们想要拼出新的矩形,必然要把横向拼接的切割开,变成纵向拼接(横向纵向不固定) 所以只能对半切割,新的矩形为(a/2,b),所以a必须是偶数边(a,b不固定),此外,如果a/2=b那么拼接完的矩形和原矩形大小相等,也不可 点击查看代码 #include<bits/stdc++.h 阅读全文
posted @ 2025-08-27 15:57 daydreamer_zcxnb 阅读(68) 评论(0) 推荐(1)
摘要:前言 听了dottle的博客,这一周就练习推性质,题目就是从POI的蓝题起步,然后挨道往后刷 要求:每道题先想,然后看题解,总结性质,写博客 然后每天至少保证专注6h,1h3题,再写一两道喜欢的题练练手 时间:2025.8.25——8.31 8.25 P3536 建议直接看简化题意 先考虑暴力: 一 阅读全文
posted @ 2025-08-25 15:11 daydreamer_zcxnb 阅读(22) 评论(0) 推荐(0)
摘要:考虑到如果 \(a_i=sum_{i-1}\) 那么前缀和就会在经过 \(i\) 之后翻倍,然后考虑把它转化成 \(a_i>=sum_{i-1}\) 这种形式也同样满足上述性质。 考虑从一个满足 \(a_i>=sum_{i-1}\) 的点 \(i\) 开始寻找,下一个满足 \(a_j>=sum_{j 阅读全文
posted @ 2025-08-07 20:04 daydreamer_zcxnb 阅读(36) 评论(0) 推荐(0)
摘要:算法理解 复杂度证明 因为每次合并都会删除一个节点,所以合并次数即为节点次数 阅读全文
posted @ 2025-08-07 17:18 daydreamer_zcxnb 阅读(16) 评论(0) 推荐(0)
摘要:算法理解 建议阅读算法竞赛上的讲解,阅读之前请先阅读以下文字 算法本质是从一个字符往两边进行扩展,然后找到最长的回文串 \(p[i]\) 表示以 \(s[i]\) 为中心的回文子串的最长回文半径(回文半径包括中心字符) 考虑递推过程,也就是 \(p[1]...p[i-1]\) 已经预处理完了 \(R 阅读全文
posted @ 2025-08-06 18:45 daydreamer_zcxnb 阅读(16) 评论(0) 推荐(0)
摘要:算法理解 建议看这篇(和算法竞赛书上一模一样,也不知道谁抄谁的) 我对理解是就相当于是小学学的加减消元法,给他系统化了 #include<bits/stdc++.h> using namespace std; const int N=105; const double eps=1e-7; doubl 阅读全文
posted @ 2025-08-01 19:19 daydreamer_zcxnb 阅读(17) 评论(1) 推荐(0)
摘要:思想 以下为个人的理解,可供参考 考虑到一次修改只会影响到一个节点,那我们就直接另存一下这个节点就好了呗 但是不行,因为访问时我询问时间为 t 的节点,我找不到 t 时间这个点的改动什么的 而线段树有一个好的性质,就是它修改一个节点最多会动log个节点,其余的节点都是以前的,所以可以每一次修改,就把 阅读全文
posted @ 2025-07-31 19:30 daydreamer_zcxnb 阅读(11) 评论(0) 推荐(0)