1056. Mice and Rice (25)
来源:互联网 发布:双十一网络销售情况 编辑:程序博客网 时间:2024/05/18 06:29
题意比较晦涩,英文不大好,上网查的分析如下:
1)input中的第三行是索引,表示的是以第三行索引的顺序进行比较,也就是说第6、0、8个mice先组成一组进行比较,而这3个mice吃到的rice就是第二行中对应的值19、25、57,因此第8个mice吃到的是57数量最多晋级,同理第7、10、5个mice吃到的rice是22、10、3,第7个晋级,第9、1、4个mice吃到的rice是56、18、37,第9个晋级,剩下的只有第2、3个mice,分别吃到的rice是0、46,第3个晋级,于是第8、7、9、3一共4个mice晋级到下一轮,并继续按照这个顺序比较,那么其他没有晋级的mice的排名都是第5名。
2)第8、7、9、3个mice吃到的rice分别是57、22、56、46,前三个中第8个晋级,剩下的第3个也晋级,所以未晋级的7、9的排名都是第3。
3)第8、3个mice的排名分别是第1和第2了。
#include <iostream>#include <stdio.h>#include <string.h>#include <vector>#include <map>#include <stack>#include <queue>#include <algorithm>#include <set>using namespace std;//1056int p,g,r;vector<int> w,o,rk;int main(){ // freopen("input.txt","r",stdin); cin>>p>>g; w.resize(p),o.resize(p),rk.resize(p); for(int i=0;i<p;i++) cin>>w[i]; for(int i=0;i<p;i++) cin>>o[i]; while(o.size()>1) { r=o.size()/g+1; if(o.size()%g) r++; vector<int> tmp; tmp.clear(); int n=0; while(n<o.size()) //内层循环一遍,找到晋级下一轮的数的位置 { int mx=-1,idx=0; for(int i=0;i<g && n<o.size();++i,++n) { rk[o[n]]=r; if(w[o[n]]>mx) mx=w[o[n]],idx=o[n]; } tmp.push_back(idx); } o=tmp; } rk[o[0]]=1; cout<<rk[0]; for(int i=1;i<p;i++) cout<<" "<<rk[i]; return 0;}
0 0
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)*
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- 1056. Mice and Rice (25)
- LeetCode 9. Palindrome Number
- sql server replace替换字段内容
- MyBatis参数传入集合之foreach动态sql
- (21):用函数对象表示策略
- servlet详解
- 1056. Mice and Rice (25)
- JSON解析类库之JSON-lib --- JSON-lib类库学习, 生成与解析json数据, json字符串与Java对象互转
- 七大排序
- 函数(实验报告和作业报告)
- 存一下大数加减法
- 5.5FHD MIPI 调试记录
- 最简实例说明wait、notify、notifyAll的使用方法
- 基于Android的TCP/IP调试助手Demo
- hive中查询星期几的方法