选机房(贪心模拟)
来源:互联网 发布:java实验指导书答案 编辑:程序博客网 时间:2024/03/29 23:41
选机房
Time Limit: 1000ms
Memory Limit: 65535KB
64-bit integer IO format: %lld Java class name: MainPrev
Submit Status Statistics Discuss
NextBNU程序设计大赛就要开始了,决赛地点暂时定在电子楼,因为电子楼有很多各种大小的机房,目前估计参赛的队伍总数为n,但是学校可能没有那么大的机房容纳所有队伍,可能要将选手分配在几个小机房中进行比赛,xyjian老大安排你去选机房,为了让比赛选手相对集中,要求选中机房的总数最少,另外在满足这一前提的情况下尽可能选择较大的机房。现在你得到了BNU所有机房的能容纳队伍数目的情况表,请你编程自动选择机房。
Input
输入文件包含多组数据。
文件第一行:一个正整数t<=20表示测试数据的组数。
接下来t行表示t组数据,每组数据按照以下格式:
第一行两个正整数n<=100000和k<=1000以空格隔开,表示参赛队的总数和可以选择的机房总数k。
接下来k行每行一个正整数c<=20000。
第1行表示1号机房所能容纳的队伍总数,第2行表示2号机房能容纳的队伍数,以此类推,已知所有k个机房的大小均不相同,并且所有机房的总容量大于n。
文件第一行:一个正整数t<=20表示测试数据的组数。
接下来t行表示t组数据,每组数据按照以下格式:
第一行两个正整数n<=100000和k<=1000以空格隔开,表示参赛队的总数和可以选择的机房总数k。
接下来k行每行一个正整数c<=20000。
第1行表示1号机房所能容纳的队伍总数,第2行表示2号机房能容纳的队伍数,以此类推,已知所有k个机房的大小均不相同,并且所有机房的总容量大于n。
Output
对每组数据输出所要选择的机房的编号,每个编号一行,从小到大输出,每组数据后请输出一个空行。
Sample Input
2200 2300400100 550420405
Sample Output
2134
题目大意:
这道题说的是,首先给你n个人,然后k个机房,让你给这些人来分配房间,使得所分配的房间能尽可能的大,然后还需要你使用尽可能少的房间数目。
解题思路:
这题一开始写了两个cmp,直接WA了,然后用stable_sort调了下,还是WA,就不装逼了,用了一个b数组专门来记录下标,然后从小到大sort了一次就A了。
代码:
# include<cstdio># include<iostream># include<algorithm># include<cstring># include<string># include<cmath># include<queue># include<stack># include<set># include<map>using namespace std;# define inf 999999999# define MAX 10000+4struct node{ int id; int val;}a[MAX];int b[MAX];int cmp ( const struct node & x,const struct node & y ){ return x.val > y.val;}int cmp2 ( const struct node & x,const struct node & y ){ return x.id < y.id;}int main(void){ int t;cin>>t; while ( t-- ) { int pos = 0; int n,k; cin>>n>>k; for ( int i = 0;i < k;i++ ) { cin>>a[i].val; a[i].id = i+1; } stable_sort(a,a+k,cmp); int sum = 0; int j = 0; int i = 0; while ( sum <= n ) { sum += a[i].val; b[j] = a[i].id; i++; j++; } sort(b,b+j); for ( i = 0;i < j;i++ ) cout<<b[i]<<endl; if ( t!=0 ) cout<<endl; }return 0;}
0 0
- 选机房(贪心模拟)
- 机房练习赛kun (贪心 模拟)
- 2017.7.3 机房测试(模拟,贪心,图论)
- 2017.7.7 机房测试 (模拟,贪心,二分)
- 集训DAY1 机房测试(贪心,图论)
- Delete HDU5210 (模拟贪心)
- UVA 11039(模拟,贪心)
- LA 3602 (贪心,模拟)
- Crossing River(贪心+模拟)
- 国王游戏(贪心+模拟)
- ZOJ 3715 投票选国王 (枚举+贪心+模拟)
- zzulioj--1828-- 贪心的小猫咪(贪心模拟)
- hdu 4600 Harvest Moon (模拟+贪心)
- UVA 12545 Bits Equalizer(模拟+贪心)
- CF D. Population Size(贪心+模拟)
- POJ 1017 - Packets(贪心+模拟)
- FZU 2041 Checker (贪心+模拟)
- [NOI2014]随机数生成器(模拟+贪心)
- KNN算法及R语言实现
- Linux内核分析 第一次作业
- 不借助第三个量,交换两个量的值
- js事件的监听器的使用
- Object类中的toString和equal方法
- 选机房(贪心模拟)
- 基于SVN + Maven的构建发布Demo之二——解决回滚问题
- 搜索引擎倒排索引表压缩:gamma编码
- Linux显示邮件状态等信息
- 递归四条基本法则
- #include <sys/types.h>的作用
- HDU 3631 Shortest Path (Floyd的深层理解)
- Linux程序设计(Linux shell编程八)
- android中 camera 拍照应用详解