Construction sets 二分+背包
来源:互联网 发布:比特精灵软件下载 编辑:程序博客网 时间:2024/06/01 07:33
XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
二分 用bitset处理背包
#include <bits/stdc++.h>using namespace std ;typedef long long ll ;int n , down , up ;int m[10000] , c[10000] ;bitset<10005> f , temp;bool check(int K){ f.reset() ; f[0] = 1 ; for(int i = 1 ; i <= n ; i ++ ){ int tot = c[i] / K ; int g = 1 ; ll v = m[i] ; temp = f ; /* while( tot ){ if(v > up) break ; f |= f << v ; tot -= g ; g = min(g*2 , tot) ; v = (ll)m[i] * g ; }*/ for(int j = 1 ; j <= tot ; j ++ ){ if(v * j > up) break ; f |= temp << ( v * j ) ; } } for(int j = down ; j <= up ; j ++ ){ if(f[j]) return true ; } return false ;}int main(){ while( ~ scanf("%d %d %d" , &n , &down , &up)){ for(int i = 1 ; i <= n ; i ++ ){ scanf("%d %d" , &m[i] , &c[i]) ; } int l = 0 , r = 1e6 ; while( l < r ){ int mid = (l + r + 1) >> 1 ; if(check(mid)) l = mid ; else r = mid - 1 ; } cout << l << endl ; } return 0 ;}
阅读全文
0 0
- Construction sets 二分+背包
- CodeForces 468B Two Sets 二分匹配
- Codeforces722D-Generating Sets(set + 二分答案)
- hdu5188 二分 or 背包
- Inviting Friends(二分+背包)
- Sets
- 【CF 675D】 Tree Construction(离线二分+左右指针)
- cf Two Sets (我用二分最大匹配做的)
- cf 468B Two Sets | dfs、二分搜索
- Codeforces 468B Two Sets(二分图匹配)
- hdu3244Inviting Friends(二分+完全背包)
- 二分查找,背包问题v3
- Codeforces 675C Money Transfers 【思维】 + 675D Tree Construction 【二分】
- 【HDU】5313 Bipartite Graph【二分图+背包】
- NYOJ 还是01背包(枚举+二分)
- 超大背包问题(枚举二分)
- [bzoj4753][Jsoi2016]最佳团体 树上背包+二分
- UVA 1627 【二分图判定+背包问题】
- 算法设计与分析笔记之(7):概率算法
- 数学趣事
- 最短排序数组(动态规划)
- 用C2制作小游戏
- Jzoj4604 树
- Construction sets 二分+背包
- The C Programming Language 练习题2-7
- 递归删除链表中的指定元素x
- [LeetCode]20. Valid Parentheses
- C语言习题一
- 前端之路——jquery第一课
- xml入门
- 【死磕Java并发】-----J.U.C之线程池:ThreadPoolExecutor
- DB2 根据表名查找存储过程