连续不能放相同的(贪心)
来源:互联网 发布:西厢记赏析网络课答案 编辑:程序博客网 时间:2024/06/09 22:49
http://acm.hdu.edu.cn/showproblem.php?pid=5835
题意:t组数据,n个礼物,每种礼物的个数。每个桌子上都要放两种礼物,分别是特殊礼物和普通礼物,在n种礼物中的每一个,都既可以是普通礼物,也可以是特殊礼物。对特殊礼物没有要求,不能由空桌子,且相邻的桌子上放的普通礼物要是不相同的。
解析:贪心。每次选择与上一个礼物不相同,且当前个数最多的。与礼物的总数/2比较大小,最多不能超过礼物的总数/2
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <sstream>#include <string>#include <algorithm>#include <list>#include <map>#include <vector>#include <queue>#include <stack>#include <cmath>#include <cstdlib>using namespace std;int a[15];int main(){ //freopen("in.txt","r",stdin); int T; int n; scanf("%d",&T); for(int t = 1; t <= T; t ++) { int maxn,sum = 0,id,last; scanf("%d",&n); for(int i = 0 ; i < n; i ++) { scanf("%d",&a[i]); sum += a[i]; } sum = sum / 2; int ans = 0; while(1) { bool flag = false; maxn = 0; for(int i = 0; i < n; i ++){ if(a[i] > maxn && last != i) { id = i; maxn = a[i]; flag = true; } } if(flag == false) { break; } a[id] --; last = id; ans ++; if(ans >= sum) break; } printf("Case #%d: %d\n",t,ans); } return 0;}
0 0
- 连续不能放相同的(贪心)
- HDU 5642 不能出现连续四个数相同的组合情况 (组合数学)
- 删除连续相同的字符串
- 放鸡蛋问题:相同元素分配到相同的空间
- 重复去掉连续相同的字符
- 两个连续相同的字符正则
- javascript判断连续相同的字符
- 输出连续相同的子数组
- 给你m个东西,放在n个相同的盒子中(相同,即不计顺序),每个盒子可以放任意多,问有多少种放法
- hdoj1789(贪心算法)(一般来说,代价相同的都是用贪心的)
- 不能连续点击的按钮
- 查找连续相同值的算法,并给出连续相同值的个数以及位置
- 关于zxing不能连续扫描的问题(自用)
- 不能放下的 & 放不下的
- oracle中某列连续相同值的记录数统计(一个简单的例子)
- 类似于选择城市相同的首字母放在一起的效果
- Hihocoder 1356 分隔相同整数 (贪心)
- 判断字符串中是否包含连续相同的字符串(密码规范)
- MINA 实战
- 欧几里得
- java三线程循环有序打印ABC
- Android 命名规范 (提高代码可以读性)
- Jmeter“Java請求”使用總結
- 连续不能放相同的(贪心)
- C++顺序性容器、关联性容器与容器适配器
- linux 环境下 ,vi页面下对齐代码 老公教的
- Android应用长连接之后台服务集群开发
- 图结构练习——最短路径
- Linux下的lds链接脚本详解
- java中的BigInteger
- MatLab建模学习笔记6——数据拟合方法
- 两道设计题目~