07 2023 档案

摘要:题很简单,一遍写对却比较困难。 犯的错误: - 预处理 basei 时应该要处理到 max{n,m}; - 去重的时候(reduce 函数)特判 m=1,2。 ### 代码 ```cpp #include using namespace std; using ll=long 阅读全文
posted @ 2023-07-28 20:24 A_zjzj 阅读(6) 评论(0) 推荐(0) 编辑
摘要:写到一半发现标签有二分图就不对劲了,题解区里都是欧拉回路。 然而我是随机化+模拟网络流!~~自豪~~ 首先可以先建模,观察同一种颜色,发现每一行或每一列的限制即为 t2xt2。 然后套路地把横 阅读全文
posted @ 2023-07-28 17:59 A_zjzj 阅读(17) 评论(0) 推荐(0) 编辑
摘要:妙妙题。 首先可以有一个 O(kn2) 的 dp,但是显然不行。 但是,发现其中的大多数转移都浪费在自环上了,所以考虑不要这个东西。 这个 dp 一共有三种转移: 1. 左右端点一起向内移动一格; 2. 左端点或右端点单独移动; 3. 左右端点都不动。 所以考虑加一维 k 表示走了 k 阅读全文
posted @ 2023-07-24 19:32 A_zjzj 阅读(25) 评论(0) 推荐(0) 编辑
摘要:有一个显然的 O(n3q) 的做法: - 设 fi,l,r,x 表示 i 次操作过后,区间 [l,r] 的数 xal1,ar+1>x 的方案数。 - 转移:$$f_{i,l,r,x}=f_{i-1,l,r,x}\times g_{l,r}+\s 阅读全文
posted @ 2023-07-23 13:52 A_zjzj 阅读(15) 评论(0) 推荐(0) 编辑
摘要:这类问题大概长这样: 求一个排列 p1n,最小(大)化如下值: $$ \sum\limits_{i=1}^{n-1}f(p_i,p_{i+1})\\ f(i,j)= \left\{ g(i)+h(j),ij \r 阅读全文
posted @ 2023-07-22 14:31 A_zjzj 阅读(43) 评论(0) 推荐(0) 编辑
摘要:思维 + dp。 如果像题意那样先放球再染色的话不是很好做。 所以考虑有 n 个白球,n 种其他颜色的球各 k1 个。 那么限制就是说对于每个前缀,白球的个数 其他颜色球的种数。 所以就可以设 fi,j 为放了 i 个白球,j 种颜色的 k1 个球的 阅读全文
posted @ 2023-07-22 12:14 A_zjzj 阅读(2) 评论(0) 推荐(0) 编辑
摘要:好像没做过 DAG 计数的题。 首先看到数据范围,考虑状压。 方便起见,记 cntS,T=(u,v)E[uSvT]。 设 fS 表示 S 为强连通分量的选边方案数,由于正面很难算。 考虑反面: $$ f_S=2^{ 阅读全文
posted @ 2023-07-22 11:53 A_zjzj 阅读(20) 评论(0) 推荐(0) 编辑
摘要:警告: - 注意区分【强连通分量】,【边双联通分量】,【点双连通分量】。 思考: - 之前没有做到过边双连通分量的拆解; - 一个边双联通分量可以看作一个基环上不断加一条链; - 注意,这里加的链首尾可以为同一个位置。 到这步代码就好弄了。 ### 代码 ```cpp #include using 阅读全文
posted @ 2023-07-21 13:05 A_zjzj 阅读(13) 评论(0) 推荐(0) 编辑
摘要:思路不错。 首先考虑把每个机器人转化为 (ai,bi) 两个参数。 表示向左 ai 步会进入左边的出口,向右 bi 会进入右边的出口。 > 注:此时其他只能进入唯一的出口的机器人不影响答案,不考虑。 记 ci=0/1 表示 i 号机器人是进入左边还是右边出口。 然后考虑 阅读全文
posted @ 2023-07-21 11:18 A_zjzj 阅读(12) 评论(0) 推荐(0) 编辑
摘要:借鉴了一下 namelessgugugu 的想法,妙妙题。 [link](https://www.luogu.com.cn/blog/namelessgugugu/solution-cf1842g) 这个神奇工具的构造确实挺妙的,非常好的思维题,在此记录一下 ### 代码 ```cpp #inclu 阅读全文
posted @ 2023-07-20 09:51 A_zjzj 阅读(39) 评论(0) 推荐(1) 编辑
摘要:计数好题。 首先对于每个连通块独立考虑,最后合并答案。 发现 点数超过 1 的强连通分量一定删不掉。 - 若连通块中存在 点数超过 1 的强连通分量 - tarjan 缩点之后,称这些点数超过 1 的强连通分量为关键点; - 那么两关键点之间的点也不能删; - 于是对于剩下的点直接 dp 即可,由于 阅读全文
posted @ 2023-07-16 22:51 A_zjzj 阅读(5) 评论(0) 推荐(0) 编辑
摘要:dp 套 dp 一般有三种形式: - 暴力搜出一种东西的状态,发现数量不大,建出自动机开始跑; - 有关字符串的匹配问题,例如 kmp 或 AC 自动机上; - 有关 LIS/LCS 问题的可以使用一种特殊的内层 dp 优化状态。 前两个没什么好讲的,讲一下第三个。 ## LIS 记 fi阅读全文
posted @ 2023-07-16 19:49 A_zjzj 阅读(64) 评论(0) 推荐(0) 编辑
摘要:赛时卡了很久,没想出来怎么做。 随便乱搞了个优先级队列,过拍直接走人,然后成为了唯一的 100 分,无语了。 完事后发现这样做确实是对的,而且好写,简单讲一下。 首先需要能够判断打两个怪 i,j 的优先级: - aibi,ajbj,则优先攻击 a 较小的那个; - 阅读全文
posted @ 2023-07-16 19:27 A_zjzj 阅读(27) 评论(0) 推荐(0) 编辑
摘要:[link](https://loj.ac/p/6160) 思维+容斥计数。 首先的转化比较妙,二分图转化为 n×n 的网格图染色。 > 与网络流的转化方向相反,值得注意。 然后发现两种颜色(红、蓝)如果独立染色,同一个格子可能会重复染色。 考虑容斥,式子很好列,直接容斥即可。 $$ 阅读全文
posted @ 2023-07-16 18:57 A_zjzj 阅读(55) 评论(1) 推荐(0) 编辑
摘要:> 法老找来的题,说是找了三道 其他模拟赛的 T4 拼成 T1~T3,另外搞了道 T4。 思维好题,但是放在 T1 有点搞心态,但是还好大样例够强,400 没挂。 > 然而 T3 大样例输出错了,浪费了我 0.5h,~~差评~~。 首先发现向左走之后向右走是一定不优的,所以最短路的情况只能先向右再向 阅读全文
posted @ 2023-07-16 15:29 A_zjzj 阅读(36) 评论(0) 推荐(0) 编辑
摘要:[link](https://yundouxueyuan.com/contest/64ad2248301edd5a35fdba9d) > 总体评价:~~因为 K 了,所以好评,~~练一下思维蛮好的,质量不错 比赛 2.5h K 的。 ## #A. 诗人小 G 初进 OI 界 标准送分,输出 $\fr 阅读全文
posted @ 2023-07-15 23:12 A_zjzj 阅读(472) 评论(2) 推荐(0) 编辑
摘要:在 NFLS 模拟赛上遇到的,赛后订正过的。 隔了蛮长时间的,总结一下。 - 首先转化为笛卡尔树上后缀前缀的问题。 - 然后考虑如何转移,发现转移形如 f(x)=min{f(x)+C,kx+b} 的形式。 - 可以直接线段树维护每个点的最优直线,在 update 的时候: - 如果 $f( 阅读全文
posted @ 2023-07-14 12:42 A_zjzj 阅读(35) 评论(0) 推荐(0) 编辑
摘要:发现根节点一定是 1,所以考虑两边的子树深度,然后发现只需要考虑一段后缀或前缀的深度即可。 所以循环位移后,可以从中间往两边构建笛卡尔树,实时维护深度即可。 ### 代码 ```cpp #include using namespace std; using ll=long long; const 阅读全文
posted @ 2023-07-14 12:37 A_zjzj 阅读(35) 评论(0) 推荐(0) 编辑
摘要:太久没见过启发式合并了,然后没想出做法。 首先笛卡尔树建出来。 然后直接枚举跨过 mid 的长度为 amid 的区间,RMQ O(1) 验证即可。 发现这样的区间个数不超过左右区间大小的较小值,时间复杂度:O(nlogn)。 ### 代码 ```cpp #include u 阅读全文
posted @ 2023-07-14 12:15 A_zjzj 阅读(11) 评论(0) 推荐(0) 编辑
摘要:> 随机排列的最长上升子序列长度的期望是 O(n)。 这个结论知道最好,不知道也问题不大,赛时随一个跑一下也行。 警告: - 一直考虑正着做,产生了思维定式 - 正难则反啊,反着做发现只需考虑第一次覆盖的数就行了。 - 接下来的贪心也没想到:序列中不应该出现不在 LIS 中的数 阅读全文
posted @ 2023-07-14 11:54 A_zjzj 阅读(31) 评论(0) 推荐(0) 编辑
摘要:赛时想了很久,可能是比较久没做这样的经典状压枚举子集的 dp 题了。 > 赛时大样例输出是错的,调了 40min 对的代码没看出来哪里错,写个对拍拍不出来,结果是 cxr 题面里的模数写错了,最后改了数据…… - 正难则反,求反面的方案数,即【1,2能到达的点无交集】的方案数 - 设 fS阅读全文
posted @ 2023-07-14 11:47 A_zjzj 阅读(26) 评论(0) 推荐(0) 编辑
摘要:思维妙妙题+神仙题。 首先发现 d 的限制满足单调性,所以可以转化为 lpr 的限制。 > 注意:p 是单调不降的 然后就是 prlr,maxi=lr{ci}rl+1。 这个 max 想到转化到笛卡尔树上操作。 阅读全文
posted @ 2023-07-14 11:40 A_zjzj 阅读(25) 评论(0) 推荐(0) 编辑
摘要:### 解题思路 容易想到从小到大加数,维护每个点的子树大小。 可转化为维护每个点为 max 时的 [L,R] 区间。 然后需要写一个支持 【区间+1】、【区间取min】、单点加入、全局查询。 上个吉司机线段树即可。 ### 注意点 - 吉司机线段树下推 fi 的标记的时候要注意 $f 阅读全文
posted @ 2023-07-13 21:48 A_zjzj 阅读(31) 评论(0) 推荐(0) 编辑
摘要:很容易考虑到计算贡献。 > 该问题的关键在于——如何使得钥匙和宝箱的对应关系不算重 > Warning:有这样的二元对应关系,可以考虑一下转化为括号序列! 转化为括号序列之后,发现路径上括号串的对应关系能够预处理出来。 套个虚树和扫描线,就做完了。 ### 代码 ```cpp #include us 阅读全文
posted @ 2023-07-12 21:18 A_zjzj 阅读(12) 评论(0) 推荐(0) 编辑
摘要:- 赛时想了 1.5h 没想出来做法,然后写了个随机化乱搞过了,有点侥幸。 ### 思路 赛时想到: - 答案上界为 n。 需要进阶: - 变化超过 1 的数的个数 n2。 - 所以随机一个数,这个数变化不超过 1 的概率 $\g 阅读全文
posted @ 2023-07-12 21:06 A_zjzj 阅读(26) 评论(0) 推荐(0) 编辑
摘要:需要保持: - 写代码前先仔细考虑一下细节,分类讨论清楚再开始码。 警告: - namespace 里面写了个 n,想调用全局 n 的时候没加 2*冒号。 思路大概就是分类讨论然后计数就完事了。 ### 代码 ```cpp #include using namespace std; using ll 阅读全文
posted @ 2023-07-12 20:26 A_zjzj 阅读(10) 评论(0) 推荐(0) 编辑
摘要:>tarjan 多测的时候 dfn 数组要清空!!! >树剖多测的时候 son 数组要清空!!! > 点双 tarjan 时可用 vector 建边,边双时用 vector 需要无重边 本题直接建圆方树,然后答案就是关键点构成的虚树上非关键原点个数。 ### 代码 ```cpp #include u 阅读全文
posted @ 2023-07-12 18:56 A_zjzj 阅读(11) 评论(0) 推荐(0) 编辑
摘要:赛时想写 60pts,结果 cxr 似乎少算了一点空间,导致我一直没把空间卡过去QWQ。 当时不会 dfs 求 topo 序,这里讲一下。 枚举所有非访问过的点依次 dfs,每次进行下列操作: - 找出 v 的一个未访问过的入点 u,调用 `dfs(u)`; - 找不到 u 的时候,把 阅读全文
posted @ 2023-07-12 13:53 A_zjzj 阅读(22) 评论(0) 推荐(0) 编辑
摘要:思路比较巧妙。 首先排序。 考虑目前维护出 a1i 不能表示的数的集合 S。 考虑如何加入 ai+1。 如果当前 sum S=S[sum+1,ai+11]{x+ai+1|xS} - 若 $|S\cup 阅读全文
posted @ 2023-07-11 20:17 A_zjzj 阅读(22) 评论(0) 推荐(0) 编辑
摘要:做题时想出来的东西: - 时光倒流 做题时的思维定式: - 按照操作顺序,挨个算出拿几个数到最后 - 没有想到在原序列上进行区间 dp。 - 反复只想到从小到大划分区间,每个区间计算贡献,具有一定局限性 > 需要发现,在考虑不同的值的时候,选择哪些操作顺序是独立的 ### 代码 ```cpp #in 阅读全文
posted @ 2023-07-10 21:40 A_zjzj 阅读(23) 评论(0) 推荐(0) 编辑
摘要:自己推性质的能力是真的差。 - 如果最后一个字符是 `A`,那么答案就是 `A`(分为全是 `A` 和存在 `B` 两种情况证明即可) - 否则如果最后一个字符是 `B`,检查是否会变为以 `A` 结尾 - 如果原串为 `AA...ABB...B` 的话,答案为 `B` - 否则最后的 `B` 会不 阅读全文
posted @ 2023-07-10 18:46 A_zjzj 阅读(11) 评论(0) 推荐(0) 编辑
摘要:[link](https://www.luogu.com.cn/problem/CF1601F) 这里提供一种不用 meet in middle 的方法,速度比较可观。 > 模拟赛上场切了,但是数组不清空,爆成 50pts 了,QWQ #### 发现性质 开始简单的推一下式子。 $\sum (i-a 阅读全文
posted @ 2023-07-10 14:39 A_zjzj 阅读(16) 评论(0) 推荐(0) 编辑
摘要:要点不多,记一下即可。 G 的对偶图记为 G。 - G 为连通图,若 G 联通,则 G=G - G 中的简单环对应着 G 中的极小割,(简单对应极小),利用该性质,可以把平面图上的最小割问题转化为对偶图上的最短路问题 - 平面图欧拉公式:$V- 阅读全文
posted @ 2023-07-09 20:29 A_zjzj 阅读(111) 评论(0) 推荐(0) 编辑
摘要:[link](https://www.luogu.com.cn/problem/P6545) 思维好题。 - 找到结论,即包住所有点的充要条件 两次最短路的思想确实很妙。 > 结论:找到 (0,0) 到每个标记方格左上角的最短路,那么一定存在包住这些路径的最优解。 证明考虑反证,比较好证的。 # 阅读全文
posted @ 2023-07-07 18:17 A_zjzj 阅读(28) 评论(0) 推荐(0) 编辑
摘要:> 本题转化为梯形面积就已经不是很好想了(赛时切掉,开心!) 进阶为静态区间查询。 使用不删除莫队+凸包合并 - 凸包合并就是把散块和整块的凸包合并 - 注意这里两个凸包的横坐标值域是无交的 - 于是可以使用二分套二分解决此问题 > 代码咕着,感觉非常难写 阅读全文
posted @ 2023-07-06 21:49 A_zjzj 阅读(22) 评论(0) 推荐(0) 编辑
摘要:> 引用:这是一道非常棒的思维题,可以说没有用到任何高深的知识点,却极大地考验了做题人的思维能力和创造性。 本题分为两步。 - 根据线性规划对偶或贪心,转化题意。 - 对 m 根号分治,然后分别进行分治。 > mn分治比较好想,m>n 的根号分治比较难 阅读全文
posted @ 2023-07-06 21:42 A_zjzj 阅读(53) 评论(0) 推荐(0) 编辑
摘要:有如下背包问题: - n 种物品,体积为 vi,价值为 wi,不限量,要求选 m 件物品,且总体积为 V,求总价值的最大(小)值。 解决方法: - 不妨令 vi 升序,首先先选 m1 号物品,计算体积 V0=m×v1,然后每选一件物品, 阅读全文
posted @ 2023-07-04 22:03 A_zjzj 阅读(20) 评论(0) 推荐(0) 编辑
摘要:[link](https://hydro.ac/d/bzoj/p/4766) 前置知识:Prufer 序列,二分图 别的题解都是直接给答案,没有比较易懂的思路。 首先,考虑 Prufer 序列,发现右边点删除一定会加入一个左边点,另一边类似。 且生成 Prufer 序列的最后一定会留下左右边各一个点 阅读全文
posted @ 2023-07-04 21:37 A_zjzj 阅读(38) 评论(0) 推荐(0) 编辑
摘要:[link](http://211.140.156.254:2333/contest/387) ### T1 转化为 (bi,ai)(bj,aj) 之间的斜率。 发现性质(省略),只需要计算相邻两个点之间的答案即可,用 set 就行了。 ### T2 先找性质,发现即为 $a, 阅读全文
posted @ 2023-07-04 16:18 A_zjzj 阅读(20) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示