关于这道红题
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/15 16:36
  • 上次更新2023/11/2 13:37:59
查看原帖
关于这道红题
750292
封禁用户楼主2023/10/15 16:36

这个

原代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,m,b[1001],op[201],x[201],y[201];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	for(int i=1;i<=m;i++){
		cin>>op[i]>>x[i]>>y[i];
	}
	for(int i=m;i>=1;i--){
		if(op[i]==1){
			b[x[i]]-=b[y[i]];
		}
		else{
			b[x[i]]/=b[y[i]];
		}
	}
	for(int i=1;i<=n;i++){
		cout<<b[i]<<" ";
	}
	cout<<endl;
	return 0;
}

这样由于捆绑测试会爆零。

但是加上x=y的特判之后:

#include<bits/stdc++.h>
using namespace std;
int n,m,b[1001],op[201],x[201],y[201];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	for(int i=1;i<=m;i++){
		cin>>op[i]>>x[i]>>y[i];
	}
	for(int i=m;i>=1;i--){
		if(op[i]==1){
			if(x[i]!=y[i]) b[x[i]]-=b[y[i]];
			else b[x[i]]/=2;
		}
		else{
			if(x[i]!=y[i]) b[x[i]]/=b[y[i]];
			else b[x[i]]=sqrt(b[x[i]]);
		}
	}
	for(int i=1;i<=n;i++){
		cout<<b[i]<<" ";
	}
	cout<<endl;
	return 0;
}

就会AC,但是不明白为什么要特判(只是因为题目中好像特别强调了一下x=y时的情况才加上特判的),而且为什么不特判就会错呢?求各位大佬解答

2023/10/15 16:36
加载中...