一辆车,有n个车厢,每个车厢刚好有4个人

车上有n个学生,第i个车厢有a[i]个学生

如果一个车厢里面的学生数 <= 2,这个车厢里的学生会不开心

如果一个车厢里面的学生数 > 2,这个车厢里面的学生会开心

现在学生想和其他人换座位,使得每一位学生都开心

求最小的交换次数

思路:

num[i]表示有num[i]个车厢里面刚好有i个学生

现在,主要的就是处理num[1] 和 num[2]

分情况进行处理就可以了,很简单

代码:

  //File Name: cf356C.cpp
//Author: long
//Mail: 736726758@qq.com
//Created Time: 2016年07月11日 星期一 20时37分01秒 #include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream> #define LL long long using namespace std; const int MAXN = + ; int num[];
int a[MAXN]; int solve(int n){
//for(int i=1;i<=4;i++)
// printf("i = %d num[%d] = %d\n",i,i,num[i]);
int ans = ;
if(num[] >= num[]){
num[] += num[];
num[] -= num[];
ans += num[];
num[] = ;
num[] += num[] / ;
ans += num[] / * ;
num[] %= ;
if(num[] <= num[])
ans += num[];
else if(num[] && num[] == )
ans += ;
else if(num[] >= && num[] == )
ans += ;
else
ans = -;
}
else{
num[] += num[];
num[] -= num[];
ans += num[];
num[] = ;
num[] += num[] / * ;
ans += num[] / * ;
num[] %= ;
if(num[] == ){
if(num[])
ans++;
else if(num[] >= )
ans += ;
else
ans = -;
}
else if(num[] == )
ans += ;
}
return ans;
} int main(){
int n;
while(~scanf("%d",&n)){
memset(num,,sizeof num);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
num[a[i]]++;
}
printf("%d\n",solve(n));
}
return ;
}

codeforces 356 C. Compartments 构造 贪心的更多相关文章

  1. Codeforces.911F.Tree Destruction(构造 贪心)

    题目链接 \(Description\) 一棵n个点的树,每次可以选择树上两个叶子节点并删去一个,得到的价值为两点间的距离 删n-1次,问如何能使最后得到的价值最大,并输出方案 \(Solution\ ...

  2. CodeForces - 1255D (模拟+构造+贪心)

    题意 https://vjudge.net/problem/CodeForces-1255D rxc的农场里'R'表示有米,现在有K只鸡,给这k只鸡选一些格子,每个鸡可以有多个格子(每个鸡至少吃一个米 ...

  3. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  4. [Codeforces 1214A]Optimal Currency Exchange(贪心)

    [Codeforces 1214A]Optimal Currency Exchange(贪心) 题面 题面较长,略 分析 这个A题稍微有点思维难度,比赛的时候被孙了一下 贪心的思路是,我们换面值越小的 ...

  5. Codeforces 1082D Maximum Diameter Graph (贪心构造)

    <题目链接> 题目大意:给你一些点的最大度数,让你构造一张图,使得该图的直径最长,输出对应直径以及所有的边. 解题分析:一道比较暴力的构造题,首先,我们贪心的想,要使图的直径最长,肯定是尽 ...

  6. Codeforces Round #301 (Div. 2) B. School Marks 构造/贪心

    B. School Marks Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/540/probl ...

  7. Codeforces 985 最短水桶分配 沙堆构造 贪心单调对列

    A B /* Huyyt */ #include <bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define mkp(a, ...

  8. Codeforces Round #650 (Div. 3) D. Task On The Board (构造,贪心)

    题意:有一个字符串和一组数,可以对字符串删去任意字符后为数组的长度,且可以随意排序,要求修改后的字符串的每个位置上的字符满足:其余大于它的字符的位置减去当前位置绝对值之和等于对应序列位置上的数. 题解 ...

  9. Tea Party CodeForces - 808C (构造+贪心)

    Polycarp invited all his friends to the tea party to celebrate the holiday. He has ncups, one for ea ...

随机推荐

  1. iis 301重定向

    把www.a.com重定向到www.b.com 只需在www.a.com上面右键属性---主目录,重定向到url,下面填上www.b.com,再把资源永久重定向勾选上即可. 注意,如果你需要把域名后面 ...

  2. POJ 2226 最小点覆盖(经典建图)

    Muddy Fields Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8881   Accepted: 3300 Desc ...

  3. C# 反射/映射学习

    反射其实就是为了能够在程序运行期间动态的加载一个外部的DLL集合,然后通过某种办法找到这个DLL集合中的某个空间下的某个类的某个成员(通过反射可以访问该类所包含的所有成员,不论成员是公有还是私有) 1 ...

  4. SparkSQL之旅

    1.准备数据employee.txt ,Gong Shaocheng, ,Li Dachao, ,Qiu Xin, ,Cheng Jiangzhong, ,Wo Binggang, 将数据放入hdfs ...

  5. python leetcode 日记 --Contains Duplicate --217

    题目 Given an array of integers, find if the array contains any duplicates. Your function should retur ...

  6. JS判断是否已经到达页面底部

    $(window).scroll(function(){ var scrollTop=$(this).scrollTop(); var scrollHeight=$(document).height( ...

  7. ubuntu13.04 nfs配置

    开发板和主机之间共享文件,常常需要配置nfs服务: 服务器端安装:root#:apt-get install nfs-common root#:apt-get install nfs-kernel-s ...

  8. ubuntu fix the grub boot(need Internet)

    sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt-get update sudo apt-get install -y boot- ...

  9. window2008 r2 负载均衡

    两台服务器win2008 r2  ,iis7.5  ip地址192.168.5.16,  192.168.5.18  虚拟ip 192.168.5.30 设置过程: 1.在两台服务器上安装负载均衡模块 ...

  10. 2016 - 1 - 24 NSURLSession (一)

    一: NSURLSession简介 1.实施步骤 1.1 使用 NSURLSession对象 创建TASK ,然后执行TASK 2.TASK的类型: 二: NSURLSession的简单使用: - ( ...