2018ccpc吉林 C:JUSTICE 思维
题意:n个物品,每个物品重量1/2^k[i],问可不可以分成两份,让这两份的总量都大于1/2
题解:因为两份都要大于1/2,那么我们两份都找出1/2,剩下的就无所谓了。我们把问题转化为,两份都需要找到一个1,因为 1/2==1/4+1/4,所以一个1等价于两个2,4个3.....,我们先从小到大排个序,令cnt1,cnt2表示这两组当前还需要pre这样的数的数量,如果cnt1+cnt2>后面剩余的数就直接break即可,cnt1和cnt2都为0时,即两组都已达到1/2,即符合条件
#include<bits/stdc++.h>
using namespace std;
int vis[100010];
struct node{int id;int x;
}a[100010];
int n;
int cmp(const node &xx,const node &yy)
{return xx.x<yy.x;
}
int main()
{int T;scanf("%d",&T);int nn=1;while(T--){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i].x);a[i].id=i;vis[i]=0;}printf("Case %d: ",nn++);sort(a+1,a+1+n,cmp);int flag=1;int pre=1; // pre初始为1,两组各需要一个即可 int cnt1=1,cnt2=1;for(int i=1;i<=n;i++){while(cnt1+cnt2<=n-i+1&&pre<a[i].x) // 转化为当前这个数,更新需要的数的数量 {cnt1=cnt1*2;cnt2=cnt2*2;pre++;}if(cnt1+cnt2>n-i+1) // 剩余的数的数量无法满足 {flag=0;break;}if(cnt1){cnt1--;vis[a[i].id]=1;}else{cnt2--;}if(!cnt1 && !cnt2) break; // 两个都满足了 }if(flag==0 || cnt1 || cnt2) puts("NO");else{puts("YES");for(int i=1;i<=n;i++){printf("%d",vis[i]);}printf("\n");}}return 0;
}
2018ccpc吉林 C:JUSTICE 思维相关推荐
- 2018ccpc吉林 C:JUSTICE
妈耶,这个博客讲的好清晰 搜了好几个都是不怎么好理解的,直到我遇到了这个. 题意:n个物品,每个物品重量1/2^k[i],问可不可以分成两份,让这两份的总量都大于1/2 解: 要找两份都大于等于1/2 ...
- 2018CCPC吉林赛区 hdu6555~hdu6566
2018CCPC吉林赛区(重现赛)- 感谢北华大学 A 基础数论. #include<bits/stdc++.h> using namespace std;typedef long lon ...
- 2018CCPC吉林赛区(重现赛)补题部分——F线段树待补
A - The Fool 数论分块暴力求和 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optim ...
- 2018CCPC吉林赛区 题解
1001. The Fool 整除分块,签到 #include<bits/stdc++.h> #define ll long long using namespace std; const ...
- 2018CCPC吉林赛区 The Hermit
//昨天在杭电上有了重现赛,组队打了一下,这个题没做出来,公式推的过程有点复杂,以后要多做做这种思维题,其实只要推出公式,代码就那么几行,放题~~~ http://acm.hdu.edu.cn/con ...
- 2018CCPC吉林总结
文章目录 2018 CCPC 吉林 A 题意 分析 B 分析 C 题意 分析 D 题意 分析 E 题意 分析 F H Lovers 2018 CCPC 吉林 A 题意 求 ∑ i n ⌊ n i ⌋ ...
- 2018CCPC吉林赛区 | 部分题解 (HDU6555 HDU6556 HDU6559 HDU6561)
// 杭电上的重现赛:http://acm.hdu.edu.cn/contests/contest_show.php?cid=867 // 杭电6555~6566可交题 A - The Fool 题目 ...
- ARC107——D - Number of Multisets
D - Number of Multisets 之前写过一个类似表示的题(2018CCPC吉林赛区--C - Justice),也是让用12,14,18-\frac1 2 ,\frac 14,\fra ...
- HDU-6555-The Fool(整除分块)
The Fool Problem Description The Fool is numbered 0 – the number of unlimited potential –and therefo ...
最新文章
- php中mysqli_query,在PHP中如何使用mysqli_query()函数
- 教你从0到1搭建秒杀系统-订单异步处理
- linux su无效_如何处理Linux中su命令无反应的情况
- akka2.5_发布Akka Toolkit 2.3
- 国外前端开发大神经验:目标越明确,计划就越专业,切记,不要撒网!
- 右手残疾学计算机学什么专业好,我是右手和右脚残疾 左手和左脚好的 可以学残疾人驾照吗...
- RPC(远程过程调用)原理及应用
- VC 2008 Express下安装OpenCV2.3.1
- 牛客 2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛 签到题13题
- wxparse的使用php返回数组输出,小程序应用实践:wxParse多数据循环使用方法
- 安装 VS2010 中文旗舰版
- 阿里在线字体库超级简单又快捷的使用方法+Dcloud插件使用图标
- attributeerror: module 'numpy.random' has no attribute 'randon'
- 室内光缆与室外电力光缆特点简介
- TCP与UDP协议,socket套接字编程,通信相关操作
- python语音唤醒功能_百度语音识别 语音唤醒失败
- JS事件监听手机屏幕触摸事件 Touch
- redis客户端predis介绍
- Redhat防火墙端口设置
- 调用微信公众平台API免费给自己发消息