[P1281]书的复制[二分]
来源:互联网 发布:win10系统适合编程吗 编辑:程序博客网 时间:2024/06/06 18:09
原题链接
这个做法是用二分
解最大的页数
然后往这些人手里塞就行了
然后
少了个特判
懒得改了
口头说一句吧
就是判定一下
r是不是解
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>#include<queue>#include<vector>#include<climits>#include<string>#include<cstdlib>#include<map>#include<ctime>#define MAX 1000000007#define LL long longusing namespace std;struct nico{ int st,en,f;}as[505];int f[505],m,k,bok[505],l,r,mid,ans;int check(int x){ int s=m,p=0,i=0; memset(f,0,sizeof(f)); while(1) { i++; while(f[i]+bok[s]<=x) { f[i]+=bok[s]; if(s==1) { p=1; break; } s--; } if(p) break; } return i;}int main(){ int i,s; scanf("%d%d",&m,&k); if(k==0) return 0; for(i=1;i<=m;i++) { scanf("%d",&bok[i]); r+=bok[i]; l=max(l,bok[i]); } while(l<=r) { mid=(l+r)/2; if(check(mid)<=k) r=mid-1; else l=mid+1; } ans=l; s=m; for(i=k;i>=1;i--) { while(as[i].f+bok[s]<=ans) { if(!as[i].f) as[i].en=s; as[i].st=s; as[i].f+=bok[s]; if(s==1) break; s--; } } for(i=1;i<=k;i++) printf("%d %d\n",as[i].st,as[i].en); return 0;}
阅读全文
0 0
- [P1281]书的复制[二分]
- P1281 书的复制(二分)
- [P1281]书的复制[DP]
- P1281 书的复制 dp
- 洛谷P1281 书的复制
- 【DP】洛谷 P1281 书的复制
- dp——洛谷P1281 书的复制
- 书的复制 二分
- 书的复制 二分解法
- 再解“书的复制” 二分答案+贪心
- 洛谷1281 书的复制 二分
- 【基础练习】【二分】洛谷1281 书的复制题解
- BMH online judge刷题记——书的复制(二分)
- 【二分】复制书稿
- 书的复制
- 书的复制
- 书的复制
- 书的复制
- spring boot起步之返回json数据
- 树形问题和更多树
- BZOJ 2301 浅谈莫比乌斯函数对方程化简的应用
- C++学习笔记10:返回对象
- union合并查询结果
- [P1281]书的复制[二分]
- #Paper Reading# Abstractive Sentence Summarization with Attentive Recurrent Neural Networks
- oschina使用pages
- matlab数组运算
- Hdu1071 *完全就是考高数嘛*
- CSS3中的calc( )属性--可以计算的属性
- eclipse的版本
- Android 使用SQL数据库
- Cocos2d-x使用CCGLProgram和Shader文件实现精灵置灰