洛谷P1159 排行榜
创始人
2025-05-29 07:19:34

题面:

样例输入#1:5
HIGHHOPES
UP
LOWFEELINGS
UP
UPANDDOWN
DOWN
IAMSTILLSTANDING
DOWN
FOOLINGAROUND
DOWN
样例#1输出:UPANDDOWN
IAMSTILLSTANDING
FOOLINGAROUND
HIGHHOPES
LOWFEELINGS

解题:

制表如下图所示:

  • 可见,对于“UP”的歌曲,上周可能的排名为:(排名+1)~N

  • 同样,对于“DOWN”,上周可能的排名为: (1~排名-1)

  • 而对于“SAME”,我们只需要记录,输出答案时将其照搬原位即可...

可见,越靠前的“UP”可能的排名区间大于,且包含靠后的“UP”的区间

靠后的“DOWN”可能的排名区间大于,且包含考前的“DOWN”的区间

此后,我们将“UP”、“DOWN”分别用两个不同的vector容器储存,

UP可能的排名从N开始,因此应该从后往前排,

DOWN可能的排名从1开始,因此应该从前往后排,

“DOWN”中:

“UPANDDOWN”可排区间最小,1~2,置入答案顶部,即1名

“IAMSTILLSTANDING” 、“FOOLINGAROUND”可排区间递增,分别置入2、3名

DOWN区间排完,开始排UP区间的

“UP”中:

“HIGHHOPES”、“LOWFEELINGS”可排区间递减,分别置入4、5名

  • 模拟完成,得到正确的样例输出

❀❀❀❀❀❀❀完结撒花❀❀❀❀❀❀❀

AC代码奉上:

#include
#include
#include
#include
using namespace std;class Song //歌曲类
{
public:string name;int type;  //up:1     same:0      down:-1int index; //区间值,为id+type,用于排序int id;    //编号Song() {}  //默认构造Song(int id, string name, string change){this->id = id;this->name = name;if (change == "UP")this->type = 1;else if (change == "SAME")this->type = 0;else this->type = -1;this->index = id + type;}
};class MyCompare
{
public:bool operator ()(Song s1, Song s2){return s1.index > s2.index;}
};vectorv, vUp, vDown, vAns;
int n, sameBook[520] = { 0 };int main()
{cin >> n;v.push_back(Song()); vAns.push_back(Song()); //占据0位置,使id对应1~nfor (int i = 1; i <= n; i++){string s, change;cin >> s >> change;Song song = Song(i, s, change);v.push_back(song);switch (song.type){case 1:vUp.push_back(song);break;case -1:vDown.push_back(song);break;case 0:sameBook[i] = 1;      //记录此samebreak;}}sort(vUp.begin(), vUp.end(),MyCompare());   //按index排序sort(vDown.begin(), vDown.end(), MyCompare());for (int i = 1; i <= n; i++){if (sameBook[i]){vAns.push_back(v[i]); //same直接置入答案,跳过continue;}if(vDown.size()){vAns.push_back(vDown.back());vDown.pop_back();continue;}vAns.push_back(vUp.back());vUp.pop_back();}for (int i = 1; i <= n; i++)cout << vAns[i].name << endl;return 0;
}

相关内容

热门资讯

匈奴人长什么样子?境外考古还原... 匈奴人长什么样子?不清楚的读者可以和趣历史小编一起看下去。这是一个长期以来困扰中国人和欧洲人的大问题...
安徽汽车职业技术学院最新或20... 我院毕业生具有理论知识扎实、技能突出等优势,主要在江汽集团公司及安徽省大中型企事业单位就业。第四章 ...
邯郸之战秦国为什么会输呢 只因... 今天趣历史小编给大家准备了:邯郸之战的文章,感兴趣的小伙伴们快来看看吧!长平之战后,秦国已经战胜当时...
为什么秦国会被称为虎狼之师 而... 今天趣历史小编给大家准备了:秦国虎狼之师的文章,感兴趣的小伙伴们快来看看吧!说到我国历史上的战国时期...
秦国书同文车同轨 秦国之前的文... 还不知道:七国文字的读者,下面趣历史小编就为大家带来详细介绍,接着往下看吧~秦国的统一,不仅仅是地域...