PAT1055___排序神题
题目意思比较简单,按财富,年龄,姓名来排序
看似挺普通的,但被坑了20多次TLE
首先排序只要一次,就是按题目规定的进行排序
然后在查询的时候,不是从头扫到尾看是否符合年龄的限制,而是记录这个年龄组在数组中的起始结束位置是多少,AC
#include<stdio.h>
#include<iostream>
#include<queue>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std; struct data{
char name[];
int age;
int worth;
}s[];
int ageFrom[],ageEnd[]; int cmp(data x,data y){
if(x.worth==y.worth)
if(x.age==y.age)
return strcmp(x.name,y.name)<;
else
return x.age<y.age;
else
return x.worth>y.worth;
} int main()
{
int n,m;
scanf("%d%d",&n,&m);{
data temp;
int i;
for(i=;i<=;i++){
ageFrom[i]=-;
ageEnd[i]=-;
}
for(i=;i<=n;i++){
scanf("%s",s[i].name);
scanf("%d%d",&s[i].age,&s[i].worth);
}
sort(&s[],&s[+n],cmp); for(i=;i<=n;i++){
if(ageFrom[s[i].age]==-){
ageFrom[s[i].age]=i;
}
ageEnd[s[i].age]=i;
} int j,k;
for(i=;i<=m;i++){
printf("Case #%d:\n",i);
int size,ll,rr,add=,first=,end=;
scanf("%d%d%d",&size,&ll,&rr);
for(k=ll;k<=rr;k++){
first=min(first,ageFrom[k]);
end=max(end,ageEnd[k]);
} for(k=first;k<=end;k++){
if(s[k].age>=ll&&s[k].age<=rr){
printf("%s %d %d\n",s[k].name,s[k].age,s[k].worth);
add++;
if(add==size)break;
}
}
if(add==)printf("None\n");
}
}
return ;
}
PAT1055___排序神题的更多相关文章
- Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 128[Submit][Status ...
- hdoj5821【贪心-神题】
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,比赛的时候直接读错题了,实力带坑队友.... 题意: 有两个序列都代表筐,每个筐里只有一个球,然后序列的值代表筐里的球的颜色,问你在m次操作后,a序列的球能否变成b ...
- POJ 2484 A Funny Game(神题!)
一开始看这道博弈题的时候我就用很常规的思路去分析了,首先先手取1或者2个coin后都会使剩下的coin变成线性排列的长条,然后无论双方如何操作都是把该线条分解为若干个子线条而已,即分解为若干个子游戏而 ...
- BUAA 724 晴天小猪的神题(RMQ线段树)
BUAA 724 晴天小猪的神题 题意:中文题,略 题目链接:http://acm.buaa.edu.cn/problem/724/ 思路:对于询问x,y是否在同一区间,可以转换成有没有存在一个区间它 ...
- UVa 10305 - Ordering Tasks (拓扑排序裸题)
John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...
- 【CF913F】Strongly Connected Tournament 概率神题
[CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...
- [agc007f] Shik and Copying String 模拟神题
Description "全"在十分愉快打工,第0天,给了他一个仅有小写字母构成的长度为N的字符串S0,在之后的第i天里,"全"的工作是将Si−1复制一份到 ...
- AtCoder 神题汇总
记录平时打 AtCoder 比赛时遇到的一些神题. Tenka1 Programmer Contest 2019 D Three Colors 题目大意 有 $n$ 个正整数 $a_1, a_2,\d ...
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
随机推荐
- CentOS6.6系统中安装配置Samba的教程
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通 ...
- 探究JS中的连等赋值问题
一.引子 最近在看别人的博客时无意中看到一个这样的问题 var a = {n: 1}; var b = a; a.x = a = {n:2}; console.log(a.x); //undefine ...
- Java复习11. 单例编程
Java复习11. 单例编程 1.最简单的写法,那个方式是线程不安全的 public class Singleton { private static Singleton instance; ...
- URAL 1203 Scientific Conference 简单dp 难度:0
http://acm.timus.ru/problem.aspx?space=1&num=1203 按照结束时间为主,开始时间为辅排序,那么对于任意结束时间t,在此之前结束的任务都已经被处理, ...
- 利用Docker编译Hadoop 3.1.0
前言 为什么要使用Docker编译,请自行百度 操作系统环境:Centos 6.8 uname -r 内核版本:2.6.32-642.el6.x86_64 除非有把握否则不要在Centos6.8中直接 ...
- c# DataTable行转列
/// <summary> /// datatable行转列 /// </summary> /// <param name="dtSrc">来源 ...
- ROS机器人操作系统在线练习
废话不说,先看图吧: 1. ROS in 5 Days Entering ROS 2. ROS Navigation in 5 Days Mastering ROS 3. ROS Autonomous ...
- Ubuntu与ROS的Docker桌面系统与ROS在线练习课程(在线Linux虚拟机)
ROS在线练习课程正在逐步完善中,目前以ROS官网中文资料制作,可参考: https://www.shiyanlou.com/courses/854 邀请码 U23ERF8H 安装Ubuntu+RO ...
- CBUS转MQTT
CBUS转MQTT,楼宇控制协议通过迈思德网关转MQTT
- ss-libev 源码解析local篇(4): server_recv_cb之STAGE_STREAM
继续探索server_recv_cb,我们已经来到了STAGE_STREAM状态.如果在0.05秒的timer来之前客户端就有数据过来,server_recv_cb被调用,此时已经在stream状态就 ...