
分治
沙茶
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[noip2015] 跳石头
题目链接题解:要求最小值最大,是典型的二分问题#include <cstdio> #include <iostream> using namespace std; int L,n,m,l,r; int i,mid,ans; int d[65536]; inline void init() { cin>>L>>n>>m; for(int i=1;i<=n;i++) scanf原创 2016-08-10 19:55:53 · 555 阅读 · 0 评论 -
[luogu1843] 奶牛晒衣服
题目链接题解:二分后变为可行性问题#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; int n,P,Q,l,r,mid,ans; int w[500005]; bool ok(int x){ int t=0; for(int i=1;i<=n原创 2016-10-17 20:50:35 · 345 阅读 · 0 评论 -
[luogu1577] 切绳子
题目链接题解:递推#include<iostream> #include<cstdio> using namespace std; int x,y,z; long long a[55],b[55]; int main() { scanf("%d%d%d",&x,&y,&z); for(int i=1;i<=x;i++) a[i]=1,b原创 2016-11-05 16:48:19 · 288 阅读 · 0 评论 -
[vijos1763] wormhole
题目链接 题解:二分距离,局部不满足就放,由局部最优推出整体最优#include <iostream> #include <cstdio> #include <cmath> #include <climits> using namespace std; #define INF INT_MAX-100000 const int M=200005; int n,l,r,mid,T,ans,k; int原创 2016-11-05 17:43:07 · 242 阅读 · 0 评论 -
[noip2012tg] 借教室
题解:满足单调性。开始时二分可行的最大订单号,比较麻烦,可以二分最小的不可行的订单号最大可行#include <iostream> #include <cstdio> using namespace std; const int M=1000005; int n,m; int l,r,mid,ans; int d[M],s[M],e[M],w[M],sum[M]; void init() {原创 2016-11-05 17:26:56 · 227 阅读 · 0 评论 -
[noip2011tg] 聪明的质监员
题解:显然,二分W值,满足单调性#include <iostream> #include <cstdio> #include <algorithm> #include <climits> using namespace std; const int M=200005; #define ll long long #define INF LLONG_MAX ll sum[M],cnt[M]; int w原创 2016-11-05 16:54:39 · 276 阅读 · 0 评论 -
[luogu1316] 丢瓶盖
题解:二分,贪心#include <iostream> #include <cstdio> #include <algorithm> using namespace std; #define INF 0x3f3f3f3f int n,k,now,t; int l,r,ans,mid; int w[100005]; void init() { cin>>n>>k; for(int i=原创 2016-11-05 16:50:30 · 271 阅读 · 0 评论 -
[Usaco07Mar&luogu2884]Monthly Expense
题目链接题解:二分搞一搞#include <iostream> #include <cstdio> #include <climits> using namespace std; #define INF INT_MAX-1000 int n,m,l,r,mid,ans; int w[100005]; bool ok(int x) { int s=0,k=1;//至少要有一组 for原创 2016-09-25 17:46:40 · 299 阅读 · 0 评论 -
二分答案模板
while(l<=r) { mid=(l+r)>>1; if(check(mid)) ans=mid,l=mid+1; else r=mid-1; } //二分最大 while(l<=r) { mid=(l+r)>>1; if(check(mid)) ans=mid,r=mid-1; else原创 2016-08-25 23:29:54 · 432 阅读 · 0 评论 -
[Usaco14Mar] Sabotage
题目链接题解:看到题目,马上YY了一个贪心:序列每个数减去初始序列的平均值然后求最大连续字段和。但是!这样的盲目贪心是错误的对于这样一组数据:6 20 30 40 60 89 1来说,如果按照上述贪心法则,结果得到 20 30 1,正解应为20 1二分答案!#include <cstdio> #include <cstring> #include <iostream> using namespace原创 2016-11-10 21:27:47 · 466 阅读 · 0 评论