标签:space 高性能 span sort 入门 性能 key sci 文件
话说这道题,作为一个哈迷,是不能错过的
我很惊讶本蒟蒻竟然看得懂题面
好了,闲话少说,这道题,虽说是入门难度,但凭着良心说,它还是一道普及 - 的吧
看到标签,“高性能”,大脑的第一反应是快读。
是不是 如雷贯耳 ?
是不是 久仰大名 ?
是不是仔细想想,咦?快读到底是干嘛的? 尴尬
本蒟蒻查了一下,快读就是快速读入 (从字面上来理解)
咳咳,emm…… 快读的原理就是将一个整数转化为先输入一个字符,再将其转化为整数。大家应该都知道,字符 0 的 ASCII 码是 48 ,那么,所有字符数字对应的整数是否就应该转化为它的 ACSII 码减去48 ( 即字符 ‘0‘ ) 呢?(从本义上来理解)
显然是的。
那么,具体应该怎么实现呢?
int read(){//快读
int r=0,f=1;//r为计数器,f为标志,看是正数还是负数
char c=getchar();//先入c
while((c<‘0‘||c>‘9‘)&&c!=‘-‘)
c=getchar();//为别的符号时直接读入,不管它是什么
if(c==‘-‘)//如果读入了负号,标记置-1,为后来做铺垫
f=-1,c=getchar();
while(c<=‘9‘&&c>=‘0‘)//正式读入数字
r=r*10+c-‘0‘,c=getchar();//r开始增加,转化为多位数
return r*f;//若f=1则为正数,f=-1为负数
}
是不是很容易理解?
还有一个知识点,就是
所谓排序,就是将数组按规定顺序 (从小到大或从大到小,以及其他) 排列
如果你的第一个下标为0,则排序为这样的:( 在函数库里规定为从小到大 )
sort(a,a+n);//n为元素个数
若为1,则是:
sort(a+1,a+1+n);
这里补充一下如果你要按从大到小排序应该怎样做:
//先定义自函数
int cmp(int a,int b){
return a>b;
}
//再排序
sort(a+1,a+1+n,cmp);
好了,本题的知识点都讲完了。 应该是我太蒟才没发现其他知识点
下面放出完整代码:( 我没开O2也没事? 应该没事,本人亲测)
#include<cstdio>
#include<algorithm>//不要在意头文件
#define maxn 101//定义maxn的值,即a与b数组的元素最多多少个
using namespace std;//本蒟蒻总会写这个
int n,a[maxn],b[maxn],i;
int read(){//快读万岁
int r=0,f=1;
char c=getchar();
while((c<‘0‘||c>‘9‘)&&c!=‘-‘)
c=getchar();
if(c==‘-‘)
f=-1,c=getchar();
while(c<=‘9‘&&c>=‘0‘)
r=r*10+c-‘0‘,c=getchar();
return r*f;
}
int main(){
n=read();//在用read函数时读入方法,get一下
for(i=1;i<=n;i++)
a[i]=read();//同上
for(i=1;i<=n;i++)
b[i]=read();//同上
sort(a+1,a+1+n);//排序 ( 我的第一个下标是1,所以这样排序 )
sort(b+1,b+1+n);//这里也是
for(i=1;i<=n;i++){
if(a[i]>b[i]){//如果魔杖放不下
printf("NE");//不满足题意直接拜拜,输出"NE"
return 0;
}
}
printf("DA");//检查完再输出"DA"
return 0;
}
OI 加油!洛谷冲鸭!
题解 P4613 【[COCI2017-2018#5] Olivander】
标签:space 高性能 span sort 入门 性能 key sci 文件
原文地址:https://www.cnblogs.com/SeashellBaylor/p/11079814.html