【思维+贪心】codeforces Game of the Rows
http://codeforces.com/contest/839/problem/B
【题意】
- 给定n组人,告诉每组人的人数,这些人要在飞机上坐座位
- 飞机上座位的分布看图可以知道,12 3456 78
- 要求任意两个相邻座位不能是不同组的人
- 问在满足约束的情况下能不能保证所有的人有座位
【思路】
- 首先先占用中间四连坐的,这时剩下cnt个四连坐的和2*n个两连坐的
- 然后先满足剩下的a[i]中一对一对的,这时要优先选用两连坐的
- 那么最后剩下的是一个一个单个坐的,这时cnt个四连坐的有x个坐了一对,那么这x个只能做x个1,剩下了cnt-x个四连坐的,那么可以坐2*(cnt-x)个
【AC】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath> using namespace std;
const int maxn=1e4+;
int a[maxn];
int n,k;
int main()
{
while(~scanf("%d%d",&n,&k))
{
int cnt=;
for(int i=;i<k;i++)
{
scanf("%d",&a[i]);
cnt+=a[i]/;
}
cnt=min(cnt,n);
int cpcnt=cnt;
cnt=n-cnt;
for(int i=;i<k;i++)
{
if(cpcnt==) break;
int tmp=a[i]/;
tmp=min(tmp,cpcnt);
a[i]-=tmp*;
cpcnt-=tmp;
}
// cnt=n-cnt;
//剩下cnt个4,2*n个2
int cnt2=;
for(int i=;i<k;i++)
{
cnt2+=a[i]/;
}
cnt2=min(cnt2,*n+cnt);
int x=;
for(int i=;i<k;i++)
{
if(cnt2==) break;
int tmp=a[i]/;
tmp=min(tmp,cnt2);
x+=tmp;
a[i]-=tmp*;
cnt2-=tmp;
}
int sum=;
for(int i=;i<k;i++)
{
sum+=a[i];
}
if(x<=*n)
{
int tot=*n-x;
tot+=cnt*;
if(sum<=tot)
{
puts("YES");
}
else
{
puts("NO");
}
}
else
{
int d=x-*n;
int tot=d+(cnt-d)*;
if(sum<=tot)
{
puts("YES");
}
else
{
puts("NO");
}
}
}
return ;
}
贪心
【思维+贪心】codeforces Game of the Rows的更多相关文章
- Sorted Adjacent Differences(CodeForces - 1339B)【思维+贪心】
B - Sorted Adjacent Differences(CodeForces - 1339B) 题目链接 算法 思维+贪心 时间复杂度O(nlogn) 1.这道题的题意主要就是让你对一个数组进 ...
- Codeforces Round #768 (Div. 2) D. Range and Partition // 思维 + 贪心 + 二分查找
The link to problem:Problem - D - Codeforces D. Range and Partition time limit per test: 2 second ...
- 2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest- H. Rikka with A Long Colour Palette -思维+贪心
2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest- H. Rikka with A Long Colour Palette -思维+贪心 [Proble ...
- E. The Contest ( 简单DP || 思维 + 贪心)
传送门 题意: 有 n 个数 (1 ~ n) 分给了三个人 a, b, c: 其中 a 有 k1 个, b 有 k2 个, c 有 k3 个. 现在问最少需要多少操作,使得 a 中所有数 是 1 ~ ...
- 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas
题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...
- 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】
https://codeforces.com/contest/1256 A:Payment Without Change[思维] 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价 ...
- Codeforces Round #517 (Div. 2) C. Cram Time(思维+贪心)
https://codeforces.com/contest/1065 题意 给你a,b,让你找尽量多的自然数,使得他们的和<=a,<=b,用在a和b的自然数不能重复 思路 假如只有一个数 ...
- codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)
题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...
- CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)
ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that gre ...
随机推荐
- pyspark中使用累加器Accumulator统计指标
评价分类模型的性能时需要用到以下四个指标 最开始使用以下代码计算,发现代码需要跑近一个小时,而且这一个小时都花在这四行代码上 # evaluate model TP = labelAndPreds.f ...
- 非常强大的前端插件:emmet
安装 Emmet 也有快速生成文件头的功能啊,而且更强大啊输入下边加粗的缩写,然后Tab,就OK了啊http://docs.emmet.io/cheat-sheet/ html:4t <!DOC ...
- Java基础学习-一切皆为对象
一切皆为对象 引用 String s; //s是引用,并不是对象. String s = "asdf" //创建一个引用的同时便进行初始化
- Win10 隐藏盘符
1.隐藏盘符 打开磁盘管理 -> 对要隐藏的盘符单击右键 -> 更改驱动器号和路径 -> 删除. 打开资源管理,已经看不到该盘符,该盘符已被隐藏.只是隐藏,该盘符上的数据仍然还在. ...
- bootstrap CSS表单、按钮和字体图标
基础表单 <form role="form"> <div class="form-group"> <l ...
- WEB前端研发工程师编程能力成长之路(2)(转)
WEB前端研发工程师编程能力成长之路(2) 四.[入微] 最强解决方案.你能够走在需求的前面,将当前需求里有的.没有直接提出来的.现在暂时没有但将来可能有的等等,及前端编程潜规则等各个方方面面都综 ...
- springBoot + KISSO实现单点登录
1:创建一个maven项目 kisso,然后再创建二个子项目都是springboot 2:二个boot项目的pom.xml都是一样的 就这三个依赖,3:接下来就是码代码了,首先在(在我这里)sprin ...
- System类与两种输入流
1.System类对I/O的支持系统输出System.out.println 是利用了I/O流的模式完成的.实际是打印流PrintStream对象 System类中定义了三个操作的常量 1.标准/系统 ...
- oracle的系统表
-- DBA/ALL/USER/V_$/GV_$/SESSION/INDEX开头的绝大部分都是视图-- DBA_TABLES意为DBA拥有的或可以访问的所有的关系表.-- ALL_TABLES意为某一 ...
- dos命令及HTML基础语法