二分
Larry1118
这个作者很懒,什么都没留下…
展开
-
【NOIP2018提高组D1T3】赛道修建
唉,这题考场想到了,就是细节搞爆了。。。 主要是二分答案然后判一下,每次深搜(类似贪心)即可。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct node{int v,fr,l;}e[100010原创 2018-12-15 16:29:51 · 593 阅读 · 0 评论 -
【JSOI2016】最佳团队
这题,二分+树上背包即可。 由于答案要最大(最值),所以我们可以二分。 然后我们可以简化一下答案。 那么每个点的贡献即为 p[i]-mid*s[i]。 做树上背包,看一下f[0][K]是否大于0即可。 上标: #include<cstdio> #include<cstring> #include<algorithm> #define db double usi...原创 2019-01-18 16:02:10 · 138 阅读 · 0 评论 -
【NOIP2015模拟10.20】平均数
这题不可贪心,只能二分+前缀和判。 上标: #include<cstdio> #include<algorithm> #define N 300010 #define db double using namespace std; int n,K,a[N]; db l,r,mid,mi,b[N]; bool bz; inline int read() { int x=0;...原创 2019-01-31 13:29:24 · 197 阅读 · 0 评论 -
3103. 【NOIP2012提高组】借教室
以前打的,放个标在这儿。 二分答案+判断即可。 code #include<cstdio> #include<cstring> using namespace std; int a[1000001],b[1000001][3],f[1000001]; int n,m; bool pd(int x) { int num=0,i; memset(f,0,sizeof(f))...原创 2019-03-02 15:40:33 · 227 阅读 · 0 评论 -
jzoj 3104. 【NOIP2012提高组】疫情控制
这题题目全是图片,就不贴了。。。 这题的思想很明显: 就是二分+贪心判断 但是细节很多,很坑的地方。 我们对于一个二分出来的答案,算出以下几个东东: 1.如果是能到达根节点的,那么求出它是从根节点的哪个儿子跳来的以及它还剩余的步数,存进can数组里。 2.如果不能,就将它能跳到的最高的那个点打一个标记(贪心思想) 而后,我们找出哪些根节点的儿子还没有被控制住,并存入na数组里。 然后对于这两个数组...原创 2019-03-12 18:40:41 · 359 阅读 · 0 评论 -
jzoj 3188. 【GDOI2013模拟8】找数
Description 找出第N个最小素因子是P的正整数。 Input 一行两个整数N和P(1<=N,P<=10^9),保证P是素数。 Output 如果结果超过10^9则输出0否则输出这个数。 Sample Input 输入1: 1 2 输入2: 2 3 输入3: 1000 1000003 Sample Output 输出1: 2 输出2: 9 输出3: 0 Data Constra...原创 2019-03-30 15:46:07 · 201 阅读 · 0 评论 -
jzoj 4614. 【NOIP2016模拟7.12】字符串
Question Solution 这题是道后缀数组的题目。 对于原串,我们先搞一遍后缀数组并求出heightheightheight数组。 由于我用的是线段树,所以我们应当把询问按照a从大到小排个序。 线段树的叶子节点iii表示rank[i]rank[i]rank[i]的位置,对于非叶子节点则维护其区间的最小值。(初始值为无穷大) 我们倒着枚举串中的位置,每到一个位置,便将它在线段树所在的位置...原创 2019-07-04 21:26:31 · 234 阅读 · 0 评论 -
jzoj 1287. 躲雨
Question 给你nnn个点,mmm条边。每个点都有一个容量限制和当前存在的量,每条边都有一个所需时间。 求当所有点的量都符合限制是的最少需要时间。 Solution 我们先用floydfloydfloyd求出两两点之间的最短时间。 然后二分答案,对于时间<=mid<=mid<=mid的边就加,而后跑一遍网络流看看是否全都能流完即可。 加边具体操作: 设起始点...原创 2019-07-05 11:47:18 · 157 阅读 · 0 评论