博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1281 书的复制
阅读量:6876 次
发布时间:2019-06-26

本文共 1322 字,大约阅读时间需要 4 分钟。

洛谷P1281 书的复制

二分

 

1 #include 
2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 using namespace std ; 4 5 const int N = 511,M = 511 ; 6 int a[N],L[M],R[M] ; 7 int n,k,MAX,num ; 8 struct node{ 9 int l,r ; 10 }ans[N] ;11 12 inline int read() 13 {14 int x = 0 , f = 1 ; 15 char ch = getchar() ; 16 while(ch<'0'||ch>'9') { if(ch=='-') f = -1 ; ch = getchar() ; } 17 while(ch>='0'&&ch<='9') { x = x * 10+ch-48 ; ch = getchar() ; } 18 return x * f ; 19 }20 21 inline bool check(int mid) 22 {23 int sum = 0 ; 24 num = 0 ; 25 ans[++num].l = 1 ; 26 For(i,1,n) {27 if(sum+a[i] > mid) 28 ans[num].r = i-1 ,ans[++num].l = i,sum = 0 ; 29 sum+=a[i] ; 30 }31 ans[num].r = n ; 32 return num <= k ; 33 }34 35 inline void work() 36 {37 int l = 0,r = MAX ; 38 while(l
>1 ; 40 if(check(mid)) 41 r = mid ; 42 else 43 l = mid + 1 ; 44 }45 check(r) ; 46 for(int i=k;i>=1;i--) 47 printf("%d %d\n",n-ans[i].r+1,n-ans[i].l+1) ; 48 }49 50 int main() 51 {52 n = read() ; k = read() ; 53 For(i,1,n) a[i] = read(),MAX+=a[i] ; 54 For(i,1,n/2) swap(a[i],a[n-i+1]) ; 55 work() ; 56 return 0 ; 57 }

 

转载于:https://www.cnblogs.com/third2333/p/7531537.html

你可能感兴趣的文章
Atom 初识
查看>>
通向架构师的道路(第一天)之Apache整合Tomcat - lifetragedy的专栏 - 博客频道 - CSDN.NET...
查看>>
Javascript创建对象的7种模式
查看>>
Shell工作笔记01
查看>>
项目、软件开发过程中版本术语
查看>>
CSS实现背景透明,文字不透明(各浏览器兼容)
查看>>
【转】[大学引导]超级链接、字体颜色、音乐播放公式
查看>>
T-SQL中INSERT、UPDATE
查看>>
Linux下Nginx服务器配置Modsecurity实现Web应用防护系统
查看>>
openSUSE13.2安装ruby和rails
查看>>
python 高级函数
查看>>
F.Cards with Numbers
查看>>
简单入门Buffer
查看>>
OO第四阶段总结
查看>>
javascript总结02
查看>>
创建windows服务
查看>>
HTML5 入门基础
查看>>
【转载】读懂IL代码就这么简单(二)
查看>>
RPC远程过程调用
查看>>
C++文件操作(fstream)
查看>>