求助 : 输出方式不同导致得分差异 ?
查看原帖
求助 : 输出方式不同导致得分差异 ?
250609
_pwl楼主2020/11/24 17:05

AC代码

#include<iostream>
#include<cstdio>
using namespace std;
const int Maxn=1e5+10;
struct Information{
	bool toward;
	string name;
}p[Maxn];
inline void read(int &x){
	int f=1;
	char ch=getchar();
	x=0;
	while(ch<'0'||ch>'9'){
	    if(ch=='-') f=-1;
	    ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
	    x=(x<<3)+(x<<1)+(ch&15);
	    ch=getchar();
	}
	x*=f;
}
inline void write(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
int n,m;
int a,s;
int main(){
	read(n);read(m);
	for(int i=0;i<n;i++) cin>>p[i].toward>>p[i].name;
	int pos=0;
	for(int i=1;i<=m;i++){
		read(a);read(s);
		if(p[pos].toward==0&&a==0) pos=(pos+n-s)%n;
        else if(p[pos].toward==0&&a==1) pos=(pos+s)%n;
        else if(p[pos].toward==1&&a==0) pos=(pos+s)%n;
        else if(p[pos].toward==1&&a==1) pos=(pos+n-s)%n; 
	}
	cout<<p[pos].name;
	return 0;
}

90pts90pts 代码

#include<iostream>
#include<cstdio>
using namespace std;
const int Maxn=1e5+10;
struct Information{
	bool toward;
	string name;
}p[Maxn];
inline void read(int &x){
	int f=1;
	char ch=getchar();
	x=0;
	while(ch<'0'||ch>'9'){
	    if(ch=='-') f=-1;
	    ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
	    x=(x<<3)+(x<<1)+(ch&15);
	    ch=getchar();
	}
	x*=f;
}
inline void write(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) write(x/10);
	putchar(x%10+'0');
}
int n,m;
int a,s;
int main(){
	read(n);read(m);
	for(int i=1;i<=n;i++) cin>>p[i].toward>>p[i].name;
	int pos=1;
	for(int i=1;i<=m;i++){
		read(a);read(s);
		if(p[pos].toward==0&&a==0) pos=(pos+n-s)%n;
        else if(p[pos].toward==0&&a==1) pos=(pos+s)%n;
        else if(p[pos].toward==1&&a==0) pos=(pos+s)%n;
        else if(p[pos].toward==1&&a==1) pos=(pos+n-s)%n; 
	}
	cout<<p[pos].name;
	return 0;
}

主要差异如下 :

其中 AC 代码中为 :

for(int i=0;i<n;i++) cin>>p[i].toward>>p[i].name;
int pos=0;

90pts90pts 代码中为 :

for(int i=1;i<=n;i++) cin>>p[i].toward>>p[i].name;
int pos=1;

这是什么原因

谢谢

2020/11/24 17:05
加载中...