Codeforces Round #428 (Div. 2) 839B. Game of the Rows(思维+贪心)

原创 2017年08月13日 09:30:57

写于newbee被李逵三比零之后.
关了直播,改了一个地方,就a了,可能我不要想太多无关的东西把.
这题讲实话我觉得挺难做的,如果不是在cf上可以看到数据,可能还要很久我才能a.
我的思路是把每一个军团的人,都分成三种,4个人一组,两个人一组,一个人一组,这样的话呢,两个人和一个人的组,每个军团最多一个.(关键)
然后就是贪心的策略,飞机中间的座位,一定要给四人连坐,因为这样不会浪费位置.然后如果四人座坐不完四人组,四人组就拆开,去坐两边.
然后处理二人组,同理,二人组要优先坐两边的位置.
然后一人,如果两边还有剩余,就让他们坐过去.
最后,我们的中间四人座,只坐了四人组对吧?因为这个地方,一排最多可以坐三个人,所以要特殊考虑,余下的二人组,最多占满同一侧,其他就可以给一个人了,但是注意到,二人组也可以拆开,所以就又要加一层判断.
详见代码.

/*  xzppp  */
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <map>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <list>
#include <math.h>
#include <iomanip>
using namespace std;
#define FFF freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mp make_pair
typedef long long  LL;
typedef unsigned long long ULL;
const int MAXN = 10000;
const int  INF = 0x7fffffff;
const int MOD = 1e9+7;
struct 
{
    int p1,p2,p4;
}all[MAXN+17];
int main()
{
    //FFF
    int n,k;
    cin>>n>>k;
    int h4 = n,h2 = 2*n;
    for (int i = 0; i < k; ++i)
    {
        int temp;
        cin>>temp;
        all[i].p4 = temp/4;
        temp -= all[i].p4*4;
        all[i].p2 = temp/2;
        temp -= all[i].p2*2;
        all[i].p1 = temp;
    }
    bool can = true;
    int r2=0,r1=0;
    for (int i = 0; i < k; ++i)
    {
        if(h4>=all[i].p4)
            h4 -= all[i].p4;
        else
        {
            all[i].p4 -= h4;
            h4 = 0;
            if(2*h2>=all[i].p4)
                h2 -= 2*all[i].p4;
            else
                can = false;
        }
        r2 += all[i].p2;
        r1 += all[i].p1;
    }
    if(h2>=r2)
    {
        h2 -= r2;
        r2 = 0;
    }
    else
    {
        r2 -= h2;
        h2 = 0;
    }
    if(h2>=r1)
    {
        h2 -= r1;
        r1 = 0;
    }
    else
    {
        r2 -= h2;
        h2 = 0;
    }
    if(!(h4>=r2&&r1+r2<=2*h4))
    {
        if(!(r2>h4&&(r2-h4)*2+r1<=h4))
            can = false;
    }
    if(can)
        cout<<"YES"<<endl;
    else
        cout<<"NO"<<endl;
    return 0;
}
版权声明:如果你想转载也真是看得起我,告诉我一下就行了

Codeforces Round #258 (Div. 2)-(A,B,C,D,E)

A:Game With Sticks 水题。。。每次操作,都会拿走一个横行,一个竖行。 所以一共会操作min(横行,竖行)次。 #include #include #include #include ...
  • rowanhaoa
  • rowanhaoa
  • 2014年07月25日 14:39
  • 1479

CodeForces Round 428 div2 839D Winter is here(数学)(详解)

唉,要是哪天我能不看题解就做出D题来就好了. 感觉自己数学底子好差啊,我怎么都想不出来的问题,他们一句就带过了,应该是很显然的吧. 这题一开始我想到枚举gcd,但是我发现会有重复的情况,然后我就不...
  • m0_37802215
  • m0_37802215
  • 2017年08月14日 16:34
  • 119

Codeforces Round #428 (Div. 2) ABCD

A.傻逼题 你每天只能给那个人最多8个,多的可以下一天再给他。 //china no.1 #pragma comment(linker, "/STACK:1024000000,1024000000")...
  • qq_36553623
  • qq_36553623
  • 2017年08月13日 12:51
  • 168

Codeforces Round #402 (Div. 2)D. String Game【二分】

D. String Game time limit per test 2 seconds memory limit per test 512 megabytes input s...
  • mengxiang000000
  • mengxiang000000
  • 2017年02月27日 13:11
  • 242

【解题报告】Codeforces Round #401 (Div. 2)

简略的解题报告。
  • TRiddle
  • TRiddle
  • 2017年02月25日 17:55
  • 413

Codeforces Round #395 (Div. 2)(ABCD)

ps:打完这场cf才知道自己真的很菜,还是停留在AB题的水平,有时候CD其实很简单,但就是想不到,别人一眼看出而我就是想不到,有时候想到了点子上但就是突破不了 题目链接:  Codeforc...
  • qq_34731703
  • qq_34731703
  • 2017年02月03日 12:50
  • 498

Codeforces Round #444 (Div. 2) D. Ratings and Reality Shows 贪心

http://codeforces.com/problemset/problem/887/D 题意:有一个模特,她有一个初始rating值 s。她每天可能进行拍照或show中的一种活动。每拍一次...
  • qq_36553623
  • qq_36553623
  • 2017年11月08日 23:47
  • 189

Codeforces Round #460 (Div. 2) D. Substring(拓扑排序)

题目链接题意:有一个n个点m条边的有向图,每个节点有一个字母,路径的权值是路径上相同字母的最大个数。求最大的路径权值。思路:因为只有26个字母,所以直接假设其中一个字母为相同字母数最大的字母。枚举每一...
  • cyf199775
  • cyf199775
  • 2018年02月01日 13:55
  • 40

Codeforces Round #378 (Div. 2) E. Sleep in Class

链接:http://codeforces.com/contest/733/problem/E 题意:给一个只含'U'和'D'的字符串,U表示向右走,D表示向左走。每个格子踩一次之后翻转(U变D,D变...
  • Fsss_7
  • Fsss_7
  • 2016年11月15日 13:48
  • 359

Codeforces Round #442 (Div. 2)

A. #include using namespace std; typedef long long ll; int main() { string s; cin >> s; ...
  • Egqawkq
  • Egqawkq
  • 2017年10月24日 02:15
  • 240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Codeforces Round #428 (Div. 2) 839B. Game of the Rows(思维+贪心)
举报原因:
原因补充:

(最多只允许输入30个字)