【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)C】【排序 模拟】Classy 课程难度排序超多关键字
来源:互联网 发布:个人顶级域名 编辑:程序博客网 时间:2024/05/17 22:00
#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<ctype.h>#include<math.h>#include<set>#include<map>#include<vector>#include<queue>#include<bitset>#include<algorithm>#include<time.h>using namespace std;void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);}#define MS(x,y) memset(x,y,sizeof(x))#define MC(x,y) memcpy(x,y,sizeof(x))#define MP(x,y) make_pair(x,y)#define ls o<<1#define rs o<<1|1typedef long long LL;typedef unsigned long long UL;typedef unsigned int UI;template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;}template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;}const int N=0,M=0,Z=1e9+7,ms63=1061109567;int casenum,casei;int n;struct A{ char name[300]; int b[50]; bool operator < (const A& bb)const { for(int i=0;i<48;++i) { if(b[i]>bb.b[i])return 1; if(b[i]<bb.b[i])return 0; } return strcmp(name,bb.name)<0; }}a[1010];char s[300];int b[50];int main(){ while(~scanf("%d",&n)) { MS(a,0); for(int i=1;i<=n;++i) { scanf("%s",a[i].name); int l=strlen(a[i].name);a[i].name[l-1]=0; int top=0; while(1) { scanf("%s",s); if(s[0]=='c')break; if(s[0]=='u')b[++top]=1; else if(s[0]=='m')b[++top]=0; else if(s[0]=='l')b[++top]=-1; } int p=0; while(top)a[i].b[p++]=b[top--]; } sort(a+1,a+n+1); for(int i=1;i<=n;++i)printf("%s\n",a[i].name); }}/*【题意】n(1<=n<=1000)个人,参加了n种难度的课程。我们要把这n个人的课程难度按照从大到小排序,并依次输出人名。具体的排序规则是——课程前缀由 upper>middle>lower的顺序排序。多个前缀关键字,位于最后的关键字作为第一关键字,依次类推。如果发生关键字数量差别,空关键字被认定为middle。如果最后依然重复,则按照人名字典序。【类型】模拟 排序 多关键字排序【分析】这题只是一个关键字有点多的排序而已。最多会有256/6个关键字。我们直接把所有的关键字提取出来,位置越后,级别越高。upper=1middle=0(初始也为0)lower=-1然后排个序,这道题就做完啦!【时间复杂度&&优化】O(关键字数*nlogn)【数据】5mom: upper upper lower middle classdad: middle middle lower middle classqueenelizabeth: upper upper classchair: lower lower classunclebob: middle lower middle class*/
0 0
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)C】【排序 模拟】Classy 课程难度排序超多关键字
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)H】【迭代 排序 模拟】Hilbert Sort 图形拐拐划分,经过所有点的
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2 全部题目题解
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears)
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)G】【坐标轴变换 LIS】Racing Gems 开车吃宝石,横向速度不能超
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 【solved:9 / 12】
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)D】【水题】Triangle 两个三角形是否可以恰好拼成矩形
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)【solved:12 / 13】
- [CF Gym 100827C] Containment [2014-2015 ACM-ICPC Pacific Northwest Regional Contest C]
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)E】【水题 贪心】Excellence n个数两两组合使得最小和尽可能大
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)A】【floyd 最小路径覆盖】最少飞机数满足所有航班要求
- Codeforce Gym 100819P : 2015-2016 ACM-ICPC Pacific Northwest Regional Contest - P 仔细看题啊!
- 2017/9/23周测(CF2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2))
- Codeforce Gym 100819L : 2015-2016 ACM-ICPC Pacific Northwest Regional Contest - L 这是一道阅读理解(微笑)
- [CF Gym 100827E] Hill Number [2014-2015 ACM-ICPC Pacific Northwest Regional Contest E]
- [CF Gym 100827F] Knights [2014-2015 ACM-ICPC Pacific Northwest Regional Contest F]
- MyEclipse配置Tomcat
- C语言编写小游戏——骑士飞行棋
- Android Studio 手动完成项目配置
- 14.9.3 InnoDB Checkpoints InnoDB 检查点
- 通过xmpp 上传头像 -- IOS端
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)C】【排序 模拟】Classy 课程难度排序超多关键字
- css样式表
- scala高阶函数实现类似sql查询
- 10个 ssh 简单命令选项
- 在iPhone的浏览器中页面将以原始大小显示,并不允许缩放。
- 50,第一个OC程序解析
- MySQL数据库inset性能优化
- [hadoop2.7.1]I/O之tfile
- 16.2 调色板动画