UVa #714 Copying Books (例题8-10)
来源:互联网 发布:天猫双11数据直播网址 编辑:程序博客网 时间:2024/05/23 18:31
最大值最小化,第一反应是Convex Optimization,想起了拉格朗日乘子法和对偶性哈哈哈
Rujia这个不断压低上限的做法,又让我想起了EM算法(其实完全不是一个东西吧)
这道题需要注意几点:
1、书的顺序是不能改变的。
2、RE有可能是因为整型溢出。每道题都必须仔细检查所有可能溢出的地方
3、好好照顾循环的出入口、妥善处理循环跳出后还没有处理的数据(例如归并排序的循环结束后)
Run Time: 0.016s
#define UVa "LT8-10.714.cpp"char fileIn[30] = UVa, fileOut[30] = UVa;#include<cstring>#include<cstdio>#include<vector>#include<algorithm>using namespace std;//Global Variables. Reset upon Each Case!const long long maxn = 1000;long long m, k;long long books[maxn];/////int P(long long x) { long long groups = 1; long long sum = 0; for(long long i = 0; i < m; i ++) { if(books[i] > x) return 0; if(sum + books[i] > x) { groups ++; sum = 0; } sum += books[i]; } if(sum > x) { groups ++; } if(groups > k) return 0; return 1;}int main() { int N; scanf("%d", &N); for(int kase = 0; kase < N; kase ++) { scanf("%d%d", &m, &k); for(long long i = 0; i < m; i ++) scanf("%d", &books[i]); long long l = 0; long long r = 5000000010L; while(l < r) { long long mid = l + (r-l)/2; if(P(mid)) { r = mid; } else { l = mid + 1; } } vector<int> ans[maxn]; //one vector per scriber long long sum = 0; long long cur_scriber = k-1; long long cur_book; for(cur_book = m-1; cur_book >= 0; cur_book --) { if(sum + books[cur_book] > l) { sum = 0; cur_scriber --; } if(cur_book == cur_scriber) { //one book per scriber. for(int i = 0; i <= cur_book; i ++) ans[i].push_back(books[i]); break; } ans[cur_scriber].push_back(books[cur_book]); sum += books[cur_book]; } for(long long i = 0; i < k; i ++) { for(long long j = ans[i].size()-1; j >= 0; j --) { if(j != ans[i].size()-1) printf(" "); printf("%d", ans[i][j]); } if(i!=k-1)printf(" / "); } printf("\n"); } return 0;}
0 0
- UVa #714 Copying Books (例题8-10)
- 例题8-10 抄书(Copying Books, UVa 714)
- uva 714 Copying Books
- UVa 714 - Copying Books
- uva 714 - Copying Books
- uva 714 - Copying Books
- UVA 714 Copying Books
- UVa:714 Copying Books .
- uva 714 Copying Books
- Uva 714 - Copying Books
- uva 714 Copying Books
- UVa 714 Copying Books
- Uva - 714 - Copying Books
- UVA 714 - Copying Books
- UVa 714 Copying Books
- uva 714 - Copying Books
- UVA - 714 Copying Books
- uva 714 Copying Books
- transform的使用(动画)
- linux下使用jfreechart
- 2003与2007excel数据导入小(5M)中(10M)大(80M以上)
- 转载一篇开源http服务器(C语言)
- ShopNum1为独立网店解决分销的后顾之忧
- UVa #714 Copying Books (例题8-10)
- derby数据库基础
- 32位和64位系统区别及int字节数
- MongoDB深究之ObjectId
- Android状态机
- ArcGIS api for javascript-图层控制(图层树)
- hdu3976--Electric resistance(高斯消元问题7)
- 【Javaweb】更改Eclipse的默认的开发工程空间的方法
- Could not change executable permissions on the application