社区讨论

我该怎么办?

灌水区参与者 11已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@lpb0dl8u
此快照首次捕获于
2023/11/23 17:46
2 年前
此快照最后确认于
2023/11/23 20:35
2 年前
查看原帖
我今年NOIP第一题大样例过了,结果因为某个函数没加return 导致报零,与省一无缘,考场代码如下
CPP
#include<cstdio>
#include<string>
#include<iostream> 
#include<algorithm>
using namespace std;
typedef unsigned long long ll;
const ll N=3e3+1000;
const ll hs=22739;
ll n,m;
bool cmpb(ll a,ll b){
	return a>b;
}
bool cmps(ll a,ll b){
	return a<b;
}
struct node{
	char s[N];
	char as[N];
	char is[N];
	ll ma;
	ll mi;
}zxx[N];
string s;
//char zxx[N][N];
ll ans[N];
ll last;
ll slove(ll x){
	sort(zxx[x].s+1,zxx[x].s+m+1,cmpb);
	
//	for(int i=1;i<=m;i++)cout<<ll(zxx[x].s[i])<<' ';
//	printf("\n");
//	
	for(int i=1;i<=m;i++)zxx[x].as[i]=zxx[x].s[i];
	
//	for(int i=1;i<=m;i++)cout<<char(zxx[x].as[i]+'a'-1)<<' ';
//	printf("\n");
	
	for(int i=1;i<=m;i++){
		zxx[x].ma=zxx[x].ma*hs+ll(zxx[x].s[i]);
	}
	
	sort(zxx[x].s+1,zxx[x].s+m+1,cmps);
	
//	for(int i=1;i<=m;i++)cout<<ll(zxx[x].s[i])<<' ';
//	printf("\n");
//	
	for(int i=1;i<=m;i++)zxx[x].is[i]=zxx[x].s[i];
	
	for(int i=1;i<=m;i++){
		zxx[x].mi=zxx[x].mi*hs+ll(zxx[x].s[i]);
	}
	
//	for(int i=1;i<=m;i++)cout<<char(zxx[x].is[i]+'a'-1)<<' ';
//	printf("\n");
}
bool chick(ll x){
	for(ll i=1;i<=n;i++){
		if(i==x)continue;
		//if(zxx[i].ma<zxx[x].mi)return false;
//		string s1,s2;
//		for(ll j=1;j<=m;j++){
//			s1[j]=zxx[i].as[j];
//			s2[j]=zxx[x].is[j];
//		}
		for(ll j=1;j<=m;j++){
//			cout<<x<<endl;
//			cout<<char(zxx[i].as[j]+'a'-1)<<' '<<char(zxx[x].is[j]+'a'-1)<<' '<<(zxx[i].as[j] < zxx[x].is[j])<<endl;
			if(zxx[i].as[j] < zxx[x].is[j])return false;
			if(zxx[i].as[j] > zxx[x].is[j])break;
		}
//		if(s1<s2)return false;
	}
	return true;
//	ll y=x;
//	while(!ans[y])y--;
	//printf("%d\n",y);
//	for(ll i=1;i<=m;i++){
//		//cout<<zxx[y][i]<<"  "<<zxx[x][i]<<endl;
//		if(zxx[y][i]>zxx[x][i])return true;
//		if(zxx[y][i]<zxx[x][i])return false; 
//	}
//	return false;
	/*
	if(ans[x-1]==1){
		for(ll i=1;i<=m;i++){
			if(zxx[i][x-1]!=zxx[i][x])return false;
		}
		return true;
	}
	else {
		ll y=x;
		while(!ans[y])y--;
		for(ll i=1;i<=m;i++){
			if(zxx[i][y]!=zxx[i][x])return false;
		}
		return true;
	}
	*/
}
int main(){
	freopen("dict.in","r",stdin);
	freopen("dict.out","w",stdout);
	scanf("%lld%lld",&n,&m);
	for(ll i=1;i<=n;i++){
		cin>>s;
		for(ll j=1;j<=m;j++)zxx[i].s[j]=s[j-1]-'a'+1;
		slove(i);
		
	}
	for(ll i=1;i<=n;i++){
//		if(i==1){
//			printf("1");
//			ans[i]=1;
//			continue;
//		}
//		sort(zxx[i-1]+1,zxx[i-1]+m+1,cmpb);
//		sort(zxx[i]+1,zxx[i]+m+1,cmps);
//		for(ll j=1;j<=m;j++)cout<<zxx[i-1][j];
//		printf("\n");
//		for(ll j=1;j<=m;j++)cout<<zxx[i][j];
//		printf("\n");
		ans[i]=chick(i);
		printf("%lld",ans[i]);
	}
//	printf("\n");
//	for(ll i=1;i<=n;i++){
//		for(ll j=1;j<=m;j++)cout<<zxx[i][j];
//		printf("\n");
//	}
	printf("\n");
	return 0;
}
/*
4 7
abandon
bananaa
baannaa
notnotn

*/
当初我答应她,拿了省一就找她表白,所以我写数组都用的她的名字,但是我没拿到,我该怎么办?

回复

11 条回复,欢迎继续交流。

正在加载回复...