上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 68 下一页
摘要: 模板题,但是有大量重边和自环,数据很坑,需要加引用优化 #include<bits/stdc++.h> using namespace std; const int N=4e5+10; int h[100010],ne[N],e[N],idx; int ans[N]; int used[N]; in 阅读全文
posted @ 2020-07-01 21:01 朝暮不思 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 首先想到如果将mod的顺序变化了一下,如果答案肯定不变,那么所有数必须要是最小的数的倍数。并且题目已知数列递增。 这是因为如果模数没有倍数关系,这就会破坏模的数据,可以通过在纸上举例子得出 因此本题答案只跟最小的数有关,枚举最小的数,之后就是在倍数中取k-1个,根据逆元组合数预处理得解 #inclu 阅读全文
posted @ 2020-07-01 14:38 朝暮不思 阅读(169) 评论(0) 推荐(1) 编辑
摘要: 本题是在DAG上求取最多的两两不相连的点 我们知道的是,所有某条路径上的点都是能看的见的 因此只有求出最小路径重复点覆盖,这样每条路径的起点就是不会被别的点走到,否则这条路径没有意义。 经过传递闭包后变成最小路径覆盖,而这个已经证明为总点数减去二分图的最大匹配(这个是特殊的,两方分别为出度和入度) 阅读全文
posted @ 2020-07-01 11:08 朝暮不思 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 比较容易看出是最小点覆盖问题,并且本题因为只有两种机器,所以是二分图问题,将对应的任务的两种机器连边 答案就是求取最大匹配数。 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,m,k; int match[ 阅读全文
posted @ 2020-07-01 09:46 朝暮不思 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 这题题意很清晰,就是求取区间和-区间最大值的最大 如果我们考虑直接求区间和再减最大值,显然复杂度比较高 因此考虑枚举每个位置,然后找到以他为最大值的最大区间 那么答案就是这段区间l-r中,i-r中的前缀和最大值减去l-1-i中前缀和最小值,这就是这段区间的最大和,之后减去当前位置即可 这种最大最小前 阅读全文
posted @ 2020-06-30 23:28 朝暮不思 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 没见过这种题型,所以感觉很巧妙,因为要求不能够有两个方块占用同一个格子 所以可以想到将相邻的两个格子想成一条线,而一个格子是一个点。 这也就是最大匹配问题,如何将选出的边没有公共点,而边其实就是相邻的两个格子 这点比较朴素,但是之后要想到可以把相邻的点按照横纵坐标和的奇偶性看成两种不同的点 而所有的 阅读全文
posted @ 2020-06-30 20:23 朝暮不思 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目问的是最小值,我们仔细观察,这个是具有二分性质的 因此可以先考虑二分最小答案后进行check 对于check,其实就是个二分图,看能否把所有的怒气值大于答案的分别放在两边,而直接略过怒气值小的边 #include<bits/stdc++.h> using namespace std; const 阅读全文
posted @ 2020-06-30 16:05 朝暮不思 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 根据贪心的思想,取月末比取月初好,所以答案肯定是连续几个月加上某个月的月末 那么其实就是某个月的某天到某个月的月底,因此我们可以枚举月底,二分一下满足条件且是最小的某个月,使得他们的之间的天数<=x 这可以用前缀和。之后更新答案即可。 #include<bits/stdc++.h> using na 阅读全文
posted @ 2020-06-10 09:20 朝暮不思 阅读(184) 评论(0) 推荐(0) 编辑
摘要: A 签到题,在变换的时候+1 B 显然是贪心从小到大排序,之后求和 C 这题就是思维瞎搞题,首先想到的一点是七天前的是可以感染当天的,但是十三天前的不行,所以想到一个前缀和记录一下前i天感染的人数。 因此又想到可以设计一个数组表示第i天被感染几人,然后递推一下即可,这里还有一点是,当所有人都被感染了 阅读全文
posted @ 2020-06-06 22:03 朝暮不思 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 看到区间修改,可以想想差分,这题显然就是在差分数组后,将b1-bn变为0,而个数就是b1的个数 最优答案肯定是刚开始挑一个正的和一个负的消掉,当某一个数被消完后,后面的就是跳同一种操作。 那么个数就是正数-负数的绝对值+1 #include<bits/stdc++.h> using namespac 阅读全文
posted @ 2020-05-29 22:10 朝暮不思 阅读(177) 评论(0) 推荐(0) 编辑
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 68 下一页