ZOJ3770-Ranking System
来源:互联网 发布:linux oracle清空日志 编辑:程序博客网 时间:2024/06/10 07:38
Few weeks ago, a famous software company has upgraded its instant messaging software. A ranking system was released for user groups. Each member of a group has a level placed near his nickname. The level shows the degree of activity of a member in the group.
Each member has a score based his behaviors in the group. The level is determined by this method:
- ⌊x⌋ is the maximum integer which is less than or equal to x.
- The member with the higher score will get the higher level. If two members have the same score, the earlier one who joined the group will get the higher level. If there is still a tie, the user with smaller ID will get the higher level.
Please write a program to calculate the level for each member in a group.
Input
There are multiple test cases. The first line of input is an integer T indicating the number of test cases. For each test case:
The first line contains an integer N (1 <= N <= 2000) indicating the number of members in a group.
The next N lines, each line contains three parts (separated by a space):
- The ID of the i-th member Ai (0 <= Ai <= 1000000000). The ID of each member is unique.
- The date of the i-th member joined the group, in the format of YYYY/MM/DD. The date will be in the range of [1900/01/01, 2014/04/06].
- The score Si (0 <= Si <= 9999) of the i-th member.
Output
For each test case, output N lines. Each line contains a string represents the level of the i-th member.
Sample Input
15123456 2011/03/11 308123457 2011/03/12 308333333 2012/03/18 4555555 2014/02/11 0278999 2011/03/18 308
Sample Output
LV3LV2LV2LV1LV2
Author: DAI, Longao
Source: The 14th Zhejiang University Programming Contest
题意:有N个人,给出一个人的信息:id,注册时间,积分,然后根据积分大小对这些人进行排序,如果积分相同按注册时间排序,早的排名靠前,如果注册时间也相同,那么根据id进行排序。然后按照排名分别给出其VIP等级,每个VIP等级是根据总人数的百分比来的,然后按输入顺序输出各个人的VIP等级
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <cmath>#include <map>#include <set>#include <stack>#include <queue>#include <vector>#include <bitset>using namespace std;struct node{ int a,id; int m,d,n; int sorce; string s;}x[2005];bool cmp(node x,node y){ if(x.sorce!=y.sorce) return x.sorce<y.sorce; else if(x.n!=y.n) return x.n>y.n; else if(x.m!=y.m) return x.m>y.m; else if(x.d!=y.d) return x.d>y.d; else return x.a>y.a;}bool cmp1(node x,node y){ return x.id<y.id;}int main(){ int t; int n; scanf("%d",&t); while(t--) { scanf("%d",&n); int sum1=0; for(int i=1;i<=n;i++) { scanf("%d %d/%d/%d %d",&x[i].a,&x[i].n,&x[i].m,&x[i].d,&x[i].sorce); x[i].id=i; if(x[i].sorce==0) sum1++; } sort(x+1,x+1+n,cmp); int sum3=(n-sum1)*0.3,sum4=(n-sum1)*0.2,sum5=(n-sum1)*0.07,sum6=(n-sum1)*0.03; int sum2=n-sum1-sum3-sum4-sum5-sum6; for(int i=1;i<=n;i++) { if(x[i].sorce==0) {x[i].s="LV1";continue;} if(sum2) sum2--,x[i].s="LV2"; else if(sum3) sum3--,x[i].s="LV3"; else if(sum4) sum4--,x[i].s="LV4"; else if(sum5) sum5--,x[i].s="LV5"; else if(sum6) sum6--,x[i].s="LV6"; } sort(x+1,x+1+n,cmp1); for(int i=1;i<=n;i++) cout<<x[i].s<<endl; } return 0;}
- ZOJ3770:Ranking System
- ZOJ3770-Ranking System
- ZOJ3770
- Ranking System
- Ranking System
- D、Ranking System
- ZOJ 3770 Ranking System
- ZOJ 3770 Ranking System
- ZOJ 3770 Ranking System
- ZOJ 3770 Ranking System 模拟
- ZOJ 3770 Ranking System(模拟)
- ZOJ-3770(Ranking System)
- ZOJ 3770 Ranking System(排序)
- Ranking
- HLG 2120Ranking System【树状数组+map+二分】
- 第14届浙江大学程序设计竞赛 D. Ranking System(ZOJ 3770)
- ZOJ 3770 : Ranking System (第14届浙江大学程序设计竞赛 D) - 结构体排序,vector
- RANKING ACTIONS
- 几种朴素贝叶斯分类器
- windows下qt5.8.0配置opencv 3.1
- 编译原理之Tiny C 词法分析器
- Homestead 2.0.0 安装指南(2017-04更新)
- UITableView隐藏header
- ZOJ3770-Ranking System
- redis配置参数详解 (转)
- POJ 2282 The Counting Problem
- 349. Intersection of Two Arrays
- java源码解读之TreeMap------jdk 1.7
- Java Web中如何设置多个Access-Control-Allow-Origin
- Go语言的反射三定律
- NSFileManager文件操作的十个小功能
- linux网络编程(6)——TCP网络编程基础