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的更多相关文章

  1. Sorted Adjacent Differences(CodeForces - 1339B)【思维+贪心】

    B - Sorted Adjacent Differences(CodeForces - 1339B) 题目链接 算法 思维+贪心 时间复杂度O(nlogn) 1.这道题的题意主要就是让你对一个数组进 ...

  2. 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 ...

  3. 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 ...

  4. E. The Contest ( 简单DP || 思维 + 贪心)

    传送门 题意: 有 n 个数 (1 ~ n) 分给了三个人 a, b, c: 其中 a 有 k1 个, b 有 k2 个, c 有 k3 个. 现在问最少需要多少操作,使得 a 中所有数 是 1 ~ ...

  5. 贪心/思维题 Codeforces Round #310 (Div. 2) C. Case of Matryoshkas

    题目传送门 /* 题意:套娃娃,可以套一个单独的娃娃,或者把最后面的娃娃取出,最后使得0-1-2-...-(n-1),问最少要几步 贪心/思维题:娃娃的状态:取出+套上(2),套上(1), 已套上(0 ...

  6. 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】

    https://codeforces.com/contest/1256 A:Payment Without Change[思维] 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价 ...

  7. Codeforces Round #517 (Div. 2) C. Cram Time(思维+贪心)

    https://codeforces.com/contest/1065 题意 给你a,b,让你找尽量多的自然数,使得他们的和<=a,<=b,用在a和b的自然数不能重复 思路 假如只有一个数 ...

  8. codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)

    题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...

  9. CF思维联系--CodeForces -214C (拓扑排序+思维+贪心)

    ACM思维题训练集合 Furik and Rubik love playing computer games. Furik has recently found a new game that gre ...

随机推荐

  1. P1967 货车运输 未完成

    #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ...

  2. TigerGraph REST++API

    简介 - 什么是REST ++? TigerGraph TM 系统使用着名的REpresentational State Transfer(REST)架构来管理与TigerGraph核心组件,图形处理 ...

  3. iOS 蒲公英第三方打包平台

    http://www.pgyer.com/doc/view/ios_install_failed

  4. Javaweb学习笔记8—DBUtils工具包

    今天来讲javaweb的第8阶段学习. DBUtils技术,DBUtils是我们操作数据库很常用的功能,虽然后期使用都是它的封装结果,但是也需要掌握. 老规矩,首先先用一张思维导图来展现今天的博客内容 ...

  5. java语言基础-类型运算细节

    代码一: public class varDemo{ public static void main(String[] args) { byte a2; a2=3+4; System.out.prin ...

  6. win7创建无线(WIFI)cmd命令

    1.创建无限热点:netsh wlan set hostednetwork mode=allow ssid=name key=12345678. 2.承载网络:netsh wlan start(关闭s ...

  7. python基础一 day4 字典

    增加:   结果 删:  结果: 结果:   返回值是一个元组形式的键值   改: 结果: 结果:                                      代码: info=inpu ...

  8. Mac 下用homebrew安装配置MongoDB

    ---恢复内容开始--- 1.首先安装homebrew,已有就跳过 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent. ...

  9. linux下vi修改文件用法

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  10. Mysql数据库事件使用与示例

    1 事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象.一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”. 事件和触发器类似,都是在 ...