Codeforces839B Game of the Rows
来源:互联网 发布:淘宝联盟贷款怎么操作 编辑:程序博客网 时间:2024/05/24 03:14
Daenerys Targaryen has an army consisting of k groups of soldiers, the i-th group contains ai soldiers. She wants to bring her army to the other side of the sea to get the Iron Throne. She has recently bought an airplane to carry her army through the sea. The airplane has nrows, each of them has 8 seats. We call two seats neighbor, if they are in the same row and in seats {1, 2}, {3, 4}, {4, 5}, {5, 6} or {7, 8}.
Daenerys Targaryen wants to place her army in the plane so that there are no two soldiers from different groups sitting on neighboring seats.
Your task is to determine if there is a possible arranging of her army in the airplane such that the condition above is satisfied.
The first line contains two integers n and k (1 ≤ n ≤ 10000, 1 ≤ k ≤ 100) — the number of rows and the number of groups of soldiers, respectively.
The second line contains k integers a1, a2, a3, ..., ak (1 ≤ ai ≤ 10000), where ai denotes the number of soldiers in the i-th group.
It is guaranteed that a1 + a2 + ... + ak ≤ 8·n.
If we can place the soldiers in the airplane print "YES" (without quotes). Otherwise print "NO" (without quotes).
You can choose the case (lower or upper) for each letter arbitrary.
2 25 8
YES
1 27 1
NO
1 24 4
YES
1 42 2 1 2
YES
In the first sample, Daenerys can place the soldiers like in the figure below:
In the second sample, there is no way to place the soldiers in the plane since the second group soldier will always have a seat neighboring to someone from the first group.
In the third example Daenerys can place the first group on seats (1, 2, 7, 8), and the second group an all the remaining seats.
In the fourth example she can place the first two groups on seats (1, 2) and (7, 8), the third group on seats (3), and the fourth group on seats (5, 6).
———————————————————————————————————
题目的意思是给出n排座位,和m组人数信息,要求不同组的不能相邻坐
思路:贪心先4个排,多出来的4人坐拆成2人座和1人座,剩下的2个排,最后判断剩下
的人剩下的座位是否足够,维护人数时可以用优先队列维护
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <cmath>#include <map>#include <set>#include <stack>#include <queue>#include <vector>#include <bitset>using namespace std;#define LL long longconst int INF = 0x3f3f3f3f;#define mod 10000007#define mem(a,b) memset(a,b,sizeof a)int main(){ int n,m,a; while(~scanf("%d%d",&n,&m)) { priority_queue<int>q; while(!q.empty()) q.pop(); for(int i=0; i<m; i++) { scanf("%d",&a); q.push(a); } int cnt=0; while(cnt<n&&!q.empty()) { if(q.top()<4) break; int f=q.top(); q.pop(); if(f/4+cnt<=n) { cnt+=f/4; f%=4; if(f>0) q.push(f); } else { f-=4*(n-cnt); cnt=n; q.push(f); } } int x=2*n+n-cnt; int y=0; while(y<x&&!q.empty()) { if(q.top()<2) break; int f=q.top(); q.pop(); if(f/2+y<=x) { y+=f/2; f%=2; if(f>0) q.push(f); } else { f-=2*(x-y); y=x; q.push(f); } } int ss=x-y+n-cnt; int xx=0; while(!q.empty()) { xx+=q.top(); q.pop(); } if(xx<=ss) printf("YES\n"); else printf("NO\n"); } return 0;}
- Codeforces839B Game of the Rows
- CodeForces839B Game of the Rows
- Game of the Rows
- Game of the Rows
- cf839B Game of the rows
- Game of the Rows CodeForces
- Game of the Rows CodeForces
- codeforces 839 B Game of the Rows
- Codeforces 839B-Game of the Rows
- B. Game of the Rows(贪心)
- Codeforces 839B Game of the Rows (贪心)
- 839B Game of the Rows(水,思维,贪心)
- Codeforces 839 B. Game of the Rows (贪心)
- Codeforce 839 -- B Game of the Rows 【思维 + 贪心】
- Arya and Bran & Game of the Rows & Multiple Clocks
- Codeforces Round #428 (Div. 2) Game of the Rows (思维)
- Codeforces Round #428 (Div. 2) B. Game of the Rows
- Codeforce-839B Game of the Rows 思维
- java 泛型
- 记一道面试题
- PDF Expert for mac 序列号 购买正版的方法
- JSDOM11
- JSONP的工作原理,如何解决跨域问题,以及JSON 和XML数据格式的区别
- Codeforces839B Game of the Rows
- UML类图快速入门
- Windows系统中命令提示符界面下常用快捷键整理笔记
- Android(2):ADT使用天天模拟器进行开发程序
- 目标检测的图像特征提取之(三)Haar特征
- Memcache应用场景介绍
- Nexus的详细介绍以及安装
- 基于RBAC访问控制框架Shiro简介
- 解题报告:Codeforces Round #325(Div. 1) E. Present for Vitalik the Philatelist (莫比乌斯反演)