1056. Mice and Rice (25)
来源:互联网 发布:中国电信网络在线测速 编辑:程序博客网 时间:2024/06/08 01:14
题目链接:https://www.patest.cn/contests/pat-a-practise/1056
采用递归调用的方法求解
#include <cstdio>#include <vector>#include <string>#include <algorithm>#include <iostream>#include <map>#include <numeric>using namespace std;struct Mice{ int id; int wt; int rk; int _rank; Mice(){}};bool cmp1(const Mice &a ,const Mice &b){return a.rk>b.rk;}bool cmp2(const Mice &a ,const Mice &b){return a.id<b.id;}vector<Mice> mices;int total, groupNum;void proc(vector<int> _orders , int _rk){ for(int i=0;i<_orders.size();i++)mices[ _orders[i] ].rk=_rk; vector<int> next; for(int i=0;i<_orders.size();i+=groupNum){ int t=(i+groupNum)<_orders.size() ? groupNum : ( _orders.size()-i ) ; int maxID=-1 , maxWt=-1; for(int j=i; j<i+t; j++){ if(mices[_orders[j]].wt > maxWt){ maxWt=mices[_orders[j]].wt ; maxID=_orders[j]; } } next.push_back(maxID); } if(next.size()==1)mices[next.front()].rk=_rk+1; else proc(next,_rk+1 ); return;}int main(){ cin>>total>>groupNum; mices.resize(total); vector<int> orders(total); for(int i=0;i<total;i++){ mices[i].id=i; cin>>mices[i].wt; } for(int i=0;i<total;i++)cin>>orders[i]; proc(orders , 0); sort(mices.begin() , mices.end() ,cmp1); mices[0]._rank=1; for(int i=1;i<mices.size();i++) { if(mices[i].rk==mices[i-1].rk) mices[i]._rank=mices[i-1]._rank; else mices[i]._rank=i+1; } sort(mices.begin() , mices.end() ,cmp2); for(int i=0;i<mices.size();i++){ printf("%d", mices[i]._rank); if(i<mices.size()-1)printf(" "); } 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)
- JS用法之Object妙用一
- 音速启动-软件工具箱制作
- bond,team,br0
- 源码圈 300 胖友的书单整理(最后更新时间:2017.09.22)
- vue2.0之axios使用详解(一)
- 1056. Mice and Rice (25)
- 网卡bonding模式
- Java和JNI中引用(强引用,软引用, 弱引用,虚引用)
- TermVectorLeafReader overrides final method terms
- npm常用命令
- Linux modprobe 命令
- 命令行基础
- Java概述
- 总结数组的相关知识