Codeforces 309C Memory for Arrays 二进制模拟进位
来源:互联网 发布:工程宝测试网络摄像头 编辑:程序博客网 时间:2024/05/21 15:02
题目链接:点击打开链接
题意:
给定n个箱子m个物品
下面n个数字表示箱子的容量
下面m个数字b1-bm 表示物品体积为2^bi大
问最多有多少个物品可以放入箱子。
思路:
贪心,先放小的,小的不能放再放大的
显然我们把n个箱子拆成二进制,然后模拟二进制减法运算。
剩下就是简单模拟
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<math.h>#include<set>#include<queue>#include<map>#include<vector>using namespace std;#define ll __int64#define N 50ll n,_gcd,m,k;ll a[N],b[N],er[N];bool jie(ll pos, ll ge){bool hav = false;ll now;for(ll i = pos+1; i < N; i++)if(a[i]){hav = true;now = i;break;}if(hav==false)return false;ll ned = ge / er[now-pos];if(ned==0){a[now]--;a[pos]++;for(ll i = pos; i < now; i++)a[i]++;return true;}ned = min(ned, a[now]);a[now] -= ned;a[pos] += ned*er[now-pos];return true;}int main(){ll i, u;for(i=0, u = 1;i<N;i++, u<<=1)er[i] = u;while(cin>>n>>m) {memset(a, 0, sizeof a);memset(b, 0, sizeof b);while(n--){scanf("%I64d",&u);for(i=0;i<N && u>=er[i];i++){if(u&er[i]){a[i]++;}}}ll ans = 0;while(m--){scanf("%I64d",&u);b[u]++;}bool hav = false;for(i=0;i<N;i++)if(b[i]){while(b[i]){ll now = min(a[i],b[i]);ans += now;a[i]-=now;b[i]-=now;if(b[i]){if(!jie(i, b[i])){hav = false;break;}}else break;}if(hav)break;}cout<<ans<<endl;}return 0;}
0 0
- Codeforces 309C Memory for Arrays 二进制模拟进位
- 二进制 模拟 codeforces 485C
- 【模拟】Codeforces #444 C. Solution for Cube
- Codeforces Round #373 (Div. 2) C. Efim and Strange Grade(贪心+模拟,t次进位之后的数是什么)
- 剑指-二进制相加进位
- Codeforces Round #444 (Div. 2) C. Solution for Cube【模拟】
- Codeforces 887C:Solution for Cube(模拟)
- CodeForces 7B Memory Manager 模拟题
- Codeforces 370D - Memory and Trident(模拟)
- CodeForces 382C【模拟】
- Codeforces 749C【模拟】
- CodeForces 118C 【模拟】
- Codeforces 863C 模拟
- codeforces 864C 模拟
- 模拟-Codeforces 777C
- codeforces 868c(二进制)
- noip1998 进位制表 (模拟)
- Codeforces 433C Ryouko's Memory Note
- android 关于提高第三方app的service优先级
- MFC (VS2010)picturecontrol控件简单动画实现
- js图片滚动效果 时间随便定 鼠标移上去停止
- 2014.06.14 GlusterFS技术交流视频
- mongodb介绍
- Codeforces 309C Memory for Arrays 二进制模拟进位
- ios开发——基本控件与变量(数据)的关联与使用
- csdn【畅言】管理是权力的游戏吗?
- Linux内核学习之顺序文件
- 将c#控制台程序关闭按钮取消
- 【剑指offer】面试题25:二叉树中和为某一值的路径
- C/C++开发语言系列之2--const用法总结2
- 内存中堆和栈的区别
- 【AllJoyn框架-02】ubuntu下编译测试AllJoyn