acm
文章平均质量分 58
要用bug来打败bug
这个作者很懒,什么都没留下…
展开
-
Ikki‘s Story IV - Panda‘s Trick(2-sat)
POJ Monthly--2007.03.04原创 2022-07-01 23:32:45 · 93 阅读 · 0 评论 -
F. Maximum White Subtree(dfs+bfs)
Codeforces Round #627 (Div. 3)原创 2022-06-27 00:24:21 · 117 阅读 · 0 评论 -
小睿睿的伤害(树上启发式合并)
小睿睿的伤害原创 2022-06-25 19:42:10 · 126 阅读 · 0 评论 -
Ex - I like Query Problem(线段树)
Atcoder Contest 256原创 2022-06-23 16:03:25 · 138 阅读 · 0 评论 -
D. River Locks(思维+简单dp)
Codeforces Round #802 (Div. 2)原创 2022-06-21 01:06:25 · 451 阅读 · 0 评论 -
G. Minimal Coverage(二分+bitset)
Codeforces Round #744 (Div. 3)原创 2022-06-20 14:50:34 · 157 阅读 · 0 评论 -
F. K-th Path
Codeforces Round #575 (Div. 3)原创 2022-06-10 22:40:58 · 114 阅读 · 0 评论 -
G. Moving to the Capital(记忆化搜索)
Codeforces Round #693 (Div. 3)原创 2022-06-10 22:15:35 · 114 阅读 · 0 评论 -
E. Two Platforms
Codeforces Round #667 (Div. 3)原创 2022-06-10 21:44:04 · 78 阅读 · 0 评论 -
Codeforces Round #527 (Div. 3 F-A)
Codeforces Round #527 (Div. 3)原创 2022-06-04 20:26:33 · 108 阅读 · 0 评论 -
Codeforces Round #595 (Div. 3) A-F
Codeforces Round #595 (Div. 3)原创 2022-06-03 00:11:11 · 105 阅读 · 0 评论 -
Codeforces Round #650 (A-F2)
A. Short Substrings思路:按照题意每次跳2即可,注意输出最后一个字符。Code:#include<bits/stdc++.h>using namespace std;const int N=2e5+10;char a[N];int main(){ int t; scanf("%d",&t); while(t--){ scanf(" %s",a+1); int len=strlen(a+1); for(int i=1;i<len;i+=2)原创 2022-05-30 03:29:18 · 102 阅读 · 0 评论 -
树上启发式合并入门-Lomsat gelral
简述:树上启发式合并又叫 dsu on tree ,是解决可以离线的子树问题的一种方法。优点:时间复杂度优秀O(nlogn)O(n logn)O(nlogn),在一些可以使用 dfs 序 + 莫队 算法O(nn)O(n\sqrt{n})O(nn)的题目中有很强的优越性,相比线段树码量要小的多。...原创 2022-05-17 10:07:17 · 279 阅读 · 0 评论 -
F. Pathwalks(dp+权值线段树)
题目链接思路:题目除了要求边权严格上升外还要求边的编号严格上升,就想到考虑每次加边的影响,dp[i][j]dp[i][j]dp[i][j] 表示的是以 i 点为结尾,结尾边权是 j 的最长长度,(其实和LIS差不多啦)每次加边输入设为 u,v, w 状态转移方程就是 dp[v][w]=max(dp[u][x])x≤w−1dp[v][w]=max(dp[u][x]) x\le w-1dp[v][w]=max(dp[u][x])x≤w−1 ,这个过程用权值线段树来维护就行了,考虑空间和时间需要动态开点(其原创 2022-05-13 20:25:59 · 131 阅读 · 0 评论 -
F. Ant colony(回滚莫队)
原题链接写在前面:看了看其他题解,居然都是线段树,于是便有了这篇文章。。。思路:题目本质是求区间 GCD 并求区间数字是 GCD 的个数。区间扩展时信息很好更新,但在缩小时信息难以更新,故考虑回滚莫队。因为要记录数字个数,数据范围又是 1e9 区间 GCD 又不能离散化, 开 map ??? 那可以T飞了(在cf上测了下 7000ms)现在区间只有扩展,GCD 只会不断减小 ,假如区间多了一个数 s ,区间 GCD 减小 , 可以证明原区间一定不含 s (反证法可以证明)原创 2022-05-11 22:03:56 · 164 阅读 · 0 评论 -
The 15th Jilin Provincial Collegiate Programming Contest F(AC自动机)
原题链接思路:题目是多模匹配问题故容易想到AC自动机。每次匹配都是以自己作为母串、考虑每次匹配成功对答案的贡献设匹配到的节点是 i不同的字符串可能有相同的前缀,故在字典树的每个节点中要记录以他为前缀的字符串个数 cnt[ ]当前字符串的长度其实就是深度 deep[ ]单点的贡献就是 cnt[i]*deep[i]答案就是所有的累和。思路很明确敲完自信测样例 很好比样例大很多!!!思考发现题目要求的是最长前后缀,而这么写会存在一个字符串对答案贡献多次的问题。多次贡献其..原创 2022-05-05 20:15:04 · 149 阅读 · 0 评论 -
Array and Segments (Hard version) 思维+线段树
题目链接解题思路:直接贪心选择区间,会有后效性!考虑枚举一种信息,这里选择枚举最小值出现的位置,对于每一个修改区间,只要包含了所枚举的位置,那么区间一定是可选的。因为最小值越小越好,如果区间又包含了最大值的位置,最大最小同减保证答案不会出错。如何实现??修改和查询考虑用线段树,如果每次选择的区间我们都复原,T飞了!!枚举的点是依次增大的,可以记录区间是否已经修改,不断更新就可以了!Code:#include <iostream>#include <map&g原创 2022-04-21 15:00:02 · 213 阅读 · 0 评论 -
数星星 Stars(思维+树状数组)
题目链接写在前面:题目卡内存,离散化+二维树状数组 爆内存。思路:观察到一个点的左下部分,x和y一定是小于等于这个点的。题目数据已经排序了,按 y 单调递增的顺序每次查询比当前比 x 小的点的个数就是左下部分的个数 ,再add(x) 即可。Code#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#i.原创 2022-04-04 17:13:15 · 318 阅读 · 0 评论 -
Caesar Cipher(线段树维护哈希)
https://codeforces.com/gym/102798/problem/G解题思路:1.和普通线段树维护哈希不同的是,这里要求原数组对一个数模mod,观察发现区间一次只加1,线段树记录区间最大值,在查询时如果区间的最大值大于等于mod,重建这部分线段树。2.其他部分和普通的线段树维护哈希就一样了,建议写双哈希,以免被卡。Code:#include <iostream>#include <map>#include <set>#incl原创 2022-04-02 21:56:05 · 613 阅读 · 0 评论 -
牛客挑战赛58C1(二分+贪心)
原题链接解题思路:一条线段可以站多个人,容易想到是二分+贪心贪心思路不太好想,线段可以相互转移故放在一起考虑,尽量要 1 中的线段大,按照 b 的大小升序排序(这样他前面的最大值一定可以转移到他自身,线段相交问题),尽量要 2 中的线段小,2 中线段记录当前时刻排序判断即可参考代码:#include <iostream>#include <map>#include <set>#include <queue>#include &原创 2022-03-21 10:21:42 · 226 阅读 · 0 评论 -
小石的妹子
原题链接解题思路:考虑贪心思路,假如我们按 ai 的大小排序 ,后面出现的人 ai 一定比前面小,考虑 bi 可以二分求第一个比 bi 小的----说的不清楚具体看代码参考代码#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#include <algorithm>#include <vec原创 2022-03-20 21:23:56 · 365 阅读 · 0 评论 -
可达性(tarjan)
原题链接:https://ac.nowcoder.com/acm/contest/22353/M思路1:kao原创 2022-03-12 10:16:11 · 493 阅读 · 0 评论 -
最大化平均值(二分)
小咪买东西思路:求最大平均值的板题考虑二分答案+贪心思想 把每个分母减去答案和分子的积再从大到小排序参考代码:#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#include <algorithm>#include <vector>#include <string>#原创 2022-03-09 21:25:43 · 65 阅读 · 0 评论 -
[HEOI2014]南园满地堆轻絮
原题链接思路一 (二分+贪心):二分答案 ans 每个数就变成一个区间 a[i]-ans,a[i]+ans ,问题转化为 判断n个区间各任选一点是否可以形成一个非严格递增的序列 ,解决这个问题贪心即可 。 具体看代码参考代码:#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#include <algorit原创 2022-03-09 15:53:27 · 81 阅读 · 0 评论 -
HDU-4768(二分+思维)
原题链接题目翻译:n个社团派发传单,有a,b,c三个参数,派发的规则是,派发给序号为a,a+c....a+k*c,序号要求是小于等于b这其中,有一个学生只收到了奇数传单,要求找出这个学生的编号与得到的传单数目思路:可以知道奇数的编号只有一个。设区间1-x有答案编号,则区间1-x的个数和一定是奇数。故,可以去二分这个区间端点,判断这个区间和(时间复杂度是 O(n) )。如果是奇数,那么所求的人肯定在左区间,否则在右区间,这样二分下去找到答案。代码:#include <原创 2021-10-26 09:24:42 · 140 阅读 · 0 评论 -
codeforces-1538-f(思维)
写在前面:参考博客:live4m很有意思的一个题。---------------------------------------------------------------------------------------------------------------------------------原题链接:F. Interesting Function题目大意:给你两个整数l和r,其中l<r。我们将在l上加1,直到结果等于r为止。对于每一个这样的加法,让我们看看在原创 2021-08-15 17:28:13 · 159 阅读 · 0 评论 -
Running Median(动态中位数)
原题链接牛客原题链接acwingacwing 的数据量要比牛客少好多可以先写acwing的,牛客的还卡空间。。。。原题目:解题思路:要求在输入每一个奇数个数时输出中位数,由于是奇数位,中位数的左右个数相同,我们可以用两个优先队列分别记录中位数的左边和右边的数。可以假设小根堆的队头(左边最大)是中位数,在偶数位的时候,维护以小根堆的队头为中位数时的左右区间(暂不维护左右区间数的个数差),在奇数位的时候,维护左区间的size-右区间的size=1(左区间的最大值是中位数)。AC.原创 2021-08-01 09:34:32 · 171 阅读 · 0 评论 -
Sunscreen(算法竞赛进阶指南-贪心+优先队列)
原题链接:Sunscreen题目大意:题目本身不好理解,大致题意是:有C头牛L瓶防晒霜,每一头牛有一个区间,一头牛可以涂一瓶防晒霜,如果可以涂在这头牛的区间内,是好的.(一瓶防晒可以涂多个牛),答案尽可能大.主要思路:万能的排序。。。。牛:按照牛的左区间从小到大排序,如果左区间一样则按照右区间从小到大排序防晒霜:按照防晒值按照从小到大排序优先队列:定义从小到大排好后按顺序遍历每一个防晒霜,和牛,如果当前防晒霜的值小于牛的左端点(说明可能是答案),将牛的右端点放入队列(将.原创 2021-07-31 08:52:04 · 235 阅读 · 0 评论 -
算法竞赛进阶指南-cow(浮点数二分)
题目大意:小明的农场由一长排N块(1≤N≤100,000)田地组成。每块田都有一定数量的奶牛,0≤奶牛≤2000。小明想在这些田地的连续组周围建一个围栏,以使该区块内每块田地的平均奶牛数量最大化。该区块必须至少包含F(1≤F≤N)块田地,其中F为输入值。在给定的约束条件下,计算出使平均数最大化的围栏位置。输入格式*第1行。两个隔开空间的整数,N和F。* 第2...N+1行:每行包含一个整数,即田地里的奶牛数量。第2行给出田间1的奶牛数,第3行给出田间2的奶牛数,以此类推。输出格式* 第1原创 2021-07-25 11:48:05 · 208 阅读 · 0 评论 -
谜一样的牛(AcWing-244)
写在前面:参考大佬博客Initialize.题目大意:有nn头奶牛,已知它们的身高为1∼n1∼n且各不相同,但不知道每头奶牛的具体身高。现在这nn头奶牛站成一列,已知第ii头牛前面有AiAi头牛比它低,求每头奶牛的身高。输入格式第11行:输入整数nn。第2..n2..n行:每行输入一个整数AiAi,第ii行表示第ii头牛前面有AiAi头牛比它低。(注意:因为第11头牛前面没有牛,所以并没有将它列出)输出格式输出包含nn行,...原创 2021-07-16 14:52:04 · 144 阅读 · 0 评论 -
HDU-1506(dp写法)
题目大意:给定N个数字,X1,X2,......,XN,让我们计算每一对数字的差值。,XN,让我们计算每一对数字的差。∣Xi-Xj∣(1≤i<j≤N)。通过这个工作,我们可以得到C(N,2)个差值,现在你的任务是尽快找到差值的中位数!注意在这个问题中,中位数的定义是:如果m,即差异的数量是偶数,那么中位数就是第(m/2)个最小的数字。例如,在m=6的情况下,你必须找到第三个最小的数字。输入输入由几个测试案例组成。在每个测试案例中,第一行将给出N。然后给出N个数字,代表X1, X2, ....原创 2021-07-10 11:08:43 · 231 阅读 · 0 评论