
二分
Sirius_Ren
▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇自己刮~~~
展开
-
POJ 3104 二分
题意:有一些衣服,每件衣服有一定水量,有一个烘干机,每次可以烘一件衣服,每分钟可以烘掉k滴水。每件衣服没分钟可以自动蒸发掉一滴水,用烘干机烘衣服时不蒸发。问最少需要多少时间能烘干所有的衣服。 思路:首先可以想到二分枚举答案。枚举一个mid值时,若一件衣服的水量大于mid,则一件衣服的最短时间是烘干一段时间,在自己蒸发一段时间。可以算出烘干的时间,为(num[i] - mid) / (k - 1)。原创 2016-07-03 22:41:56 · 279 阅读 · 0 评论 -
POJ 2456 二分
这不就是跳石头嘛 (加上sort) 然后就二分答案 搞定~//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;int n,k,l=0,r=0x3fffffff,ans,Mid,a[100500];bool check(){ int temp=1,rec=a[1]; for(int原创 2016-10-29 16:15:09 · 372 阅读 · 0 评论 -
POJ 2391 Floyd+二分+拆点最大流
题意: 思路:先Floyd一遍两两点之间的最短路 二分答案 建图 跑Dinic只要不像我一样作死#define int long long 估计都没啥事……我T到死辣……..最后才改过来……(不过注意一哈 答案 &最短路确实是会爆int的)//By SiriusRen#include <cstdio>#include <cstring>#include <a原创 2016-10-28 23:51:11 · 633 阅读 · 0 评论 -
POJ 2018 二分
题意: 思路: 二分一个答案 让整个数组都减掉它 判判有没有相距>len的逆序对//By SiriusRen#include <cmath> #include <cstdio>#include <algorithm>using namespace std;int n,len;double a[100500],sum[100500],l=0x3ffff原创 2016-10-31 08:25:30 · 675 阅读 · 0 评论 -
BZOJ 1305 二分+网络流
思路: 建图我根本没有想到啊…….(我是不会告诉你我借鉴了一下题解的思路)把每个人拆成喜欢的和不喜欢的点男 喜欢 向 男 不喜欢 连 边权为k的边如果男喜欢女 那么 男喜欢向 女喜欢 连 1如果男 不喜欢女 那么 男不喜欢 向 女不喜欢 连1男 喜欢 向 男不喜欢 连k女 不喜欢 向 女喜欢 连k源点 向 男喜欢 连 二分的那个值女喜欢 向汇点 连 二分的那个值最后判断一下 总流原创 2016-12-10 11:58:07 · 365 阅读 · 0 评论 -
BZOJ 1146 二分+链剖+线段树+treap
思路: 恶心的数据结构题……首先 我们 链剖 把树 变成序列 再 套一个 区间 第K大就好了…… 复杂度(n*log^4n)//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 88888#define inf 1000000原创 2016-12-12 10:46:49 · 654 阅读 · 0 评论 -
BZOJ 4552 排序 Heoi2016
记得当年省选的时候 这道题连暴力都没写对(尴尬ing) (当年天真的认为sort是左闭右闭的hhhhhh) 思路: 首先 二分答案线段树 首先二分答案,然后需要知道进行m次排序后p位置上的数字是否大于mid。 对于一个mid,我们可以把序列里的数字分为两类,即大于mid的数和小于等于mid的数,分别用1和0表示。 对这些0和1进行排序时,对于一个区间[l,r]进行升序排序,等原创 2017-01-02 11:47:33 · 376 阅读 · 0 评论 -
BZOJ 3130 二分+网络流
思路: 不被题目忽悠就是思路 二分一下max 判一下等不等于最大流 搞定7 9 1 1 2 3 1 3 3 2 3 3 3 4 2 3 5 2 3 6 1 4 7 2 5 7 2 6 7 2这里有组Bob是小数的例子//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <a原创 2017-01-05 16:19:04 · 353 阅读 · 0 评论 -
POJ 3261 后缀数组+二分
思路: 论文题… 二分+对后缀分组这块一开始不用基数排序 会更快的(其实区别不大)//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 20050int n,k,s[N],cntA[N],cntB[N],A[N],B[N],rk[N],sa[原创 2017-01-15 23:17:23 · 472 阅读 · 0 评论 -
BZOJ 2821 分块+二分
题意: N个数,M组询问,每次问[l,r]中有多少个数出现正偶数次。 思路: 把N个数分成sqrt(n)块,预处理d[i][j]表示第i块起点到第j块末尾的答案 枚举起点i,并维护一个数组记录每个数到目前为止出现的次数,从偶变奇、从奇变偶时相应增减答案。 把每个数在数列中出现的位置从小到大排序后放入到一个数组Arr中备用。 读入每个询问[l,r]。如果l和r在同一个块中暴力即可,否则设l原创 2017-02-15 16:11:01 · 426 阅读 · 0 评论 -
BZOJ 1012 单调队列+二分
思路: 维护一个单减的序列 序号是单增的 每回二分查找第一个比询问的大的值 我手懒 用得lower_bound//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;#define int long longint m,mod,top,jy,ans,tot;char ch[3];struc原创 2016-10-23 21:31:08 · 635 阅读 · 0 评论 -
POJ 1631 nlogn求LIS
方法一: 二分我们可以知道 最长上升子序列的 最后一个数的值是随序列的长度而递增的 (呃呃呃 意会意会)当我们枚举到i的时候 就从已知的最长上升子序列中找到第一个比它大的值,并取个min//By SiriusRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,cas原创 2016-09-25 14:34:07 · 615 阅读 · 0 评论 -
POJ 3662 二分+Dijkstra
题意: 思路: 二分+Disjktra二分一个值 如果某条边的边权比它小,则连上边权为0的边,否则连上边权为1的边最后的d[n]就是最小要免费连接多少电话线。//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#def原创 2016-09-25 14:23:19 · 758 阅读 · 0 评论 -
POJ 3122 二分
大致题意: 就是公平地分披萨pie 我生日,买了n个pie,找来f个朋友,那么总人数共f+1人 每个pie都是高为1的圆柱体,输入这n个pie的每一个尺寸(半径),如果要公平地把pie分给每一个人(就是所有人得到的pie尺寸一致,但是形状可以不同),而且每个人得到的那份pie必须是从同一个pie上得到的 后面那句很重要, 就是说如果有3个pie, 尺寸分别为1,2,3, 如果要给每人尺寸原创 2016-07-03 22:47:54 · 370 阅读 · 0 评论 -
POJ 3258 (NOIP2015 D2T1跳石头)
河中跳房子总时间限制: 1000ms 内存限制: 65536kB 描述 每年奶牛们都要举办各种特殊版本的跳房子比赛,包括在河里从一个岩石跳到另一个岩石。这项激动人心的活动在一条长长的笔直河道中进行,在起点和离起点L远 (1 ≤ L≤ 1,000,000,000) 的终点处均有一个岩石。在起点和终点之间,有N (0 ≤ N ≤ 50,000) 个岩石,每个岩石与起点的距离分别为Di (0 <原创 2016-07-04 08:40:00 · 1360 阅读 · 2 评论 -
NOIP 2010 关押罪犯 并查集 二分+二分图染色
题目描述:S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。 每年年末,警察局会将本年内监原创 2016-07-04 22:19:22 · 1025 阅读 · 0 评论 -
NOIP2012 D2 T2 借教室 线段树 OR 二分法
思路:1.线段树 维护区间的最小值,每次修改可以运用打标记的方法节省时间(关于节省时间 我后面有话说)。。。2.二分?(可惜并不会写,不知道怎么二分)。晚上补了个二分的程序。(若要看正解,请直接翻至页面底部。。 中间废话多)原创 2016-07-04 21:04:55 · 2453 阅读 · 2 评论 -
POJ 3233 矩阵快速幂&二分
题意: 给你一个n*n的矩阵 让你求S: 思路: 只知道矩阵快速幂 然后nlogn递推是会TLE的。所以呢 要把那个n换成log那这个怎么搞呢二分!当k为偶数时: 当k为奇数时: 就按照这么搞就能搞出来了 (我是看的题解才A的,,, 中间乱搞的时候犯了一些脑残的错误)// by SiriusRen#include <cstdio>#include <cstring>u原创 2016-07-20 22:30:20 · 715 阅读 · 0 评论 -
POJ 3657 并查集
题意: 思路:1.二分+线段树(但是会TLE 本地测没有任何问题,但是POJ上就是会挂……) 2.二分+并查集 我搞了一下午+一晚上才搞出来…………..(多半时间是在查错)首先 如果我们想知道这头奶牛之前的奶牛回答的是不是错的怎么办呢?把回答的A从大到小排个序。这里有几种错的方式:如果后面的区间完全被前面的区间包含,这是错的如果有两个不相交的区间的A是一样的,这也是错的(题目保证没有两原创 2016-08-30 11:20:54 · 754 阅读 · 0 评论 -
POJ 2110 二分+暴搜
题意: 给你一个矩阵 ,你能往各个方向走(不走出去就行),每次只能上下左右走一格,问路径上的点权最大值和最小值的差最小是多少。 思路: 首先 二分最后的答案, 暴力枚举当前的区间是啥。 DFS 就OK 了 (我的代码可能有点儿小问题…… 枚举的时候没有判左上角的点) (但是AC了哈哈哈)//By SiriusRen#include <cstdio>#include <cstr原创 2016-09-14 23:42:54 · 688 阅读 · 0 评论 -
POJ 3273 二分答案
思路:二分答案经典题吧。。。。注意边界就OK了//By SiriusRen#include <cstdio>#include <algorithm>using namespace std;int n,m,a[100050],ans;bool check(int x){ int jy=0,temp=0; for(int i=1;i<=n;i++){ if(a[原创 2016-09-14 23:49:47 · 760 阅读 · 0 评论 -
POJ 3122 Pie 二分答案
题意:给你n个派,每个派都是高为一的圆柱体,把它等分成f份,每份的最大体积是多少。 思路: 明显的二分答案题…… 注意π的取值… 3.14159265359 这样才能AC,,,//By SiriusRen#include <cstdio>using namespace std;int n,f,cases,a[10050];double v[10050];bool check(do原创 2016-09-18 19:22:57 · 642 阅读 · 0 评论 -
BZOJ 1196 二分+Kruskal
思路: 二分答案 判一下能不能加//By SirisuRen#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N=40050;int n,m,k,xx,yy,aa,bb,ans,f[N],top;struct Node{ int from,to,type,原创 2017-03-04 21:12:37 · 443 阅读 · 0 评论