社区讨论

一个玄学问题求助,悬关

学术版参与者 3已保存回复 18

讨论操作

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

当前回复
18 条
当前快照
1 份
快照标识符
@mhj3lg33
此快照首次捕获于
2025/11/03 20:10
4 个月前
此快照最后确认于
2025/11/03 20:44
4 个月前
查看原帖
下面代码在不同的电脑(都是NOIlinux)上,同一个输入有不同的输出,请问是为什么?
CPP
#include<bits/stdc++.h>
#define file(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout);
#define io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define int long long
#define double long double
#define lop(i,a,b) for(int i=a;i<=b;i++)
#define pol(i,a,b) for(int i=a;i>=b;i--)
#define fi first
#define se second
#define pb push_back
#define mset(a,v) memset(a,v,sizeof a)
using namespace std;
const int NN=1e5+5;
int n,k,L;
int d[NN],b[NN];
bool dir[NN];
double t[NN];
int add[NN],tmp[NN];
signed main(){
	file("glow");
	cin>>n>>k>>L;
	lop(i,1,n){
		cin>>d[i]>>b[i];
		char ch;cin>>ch;
		if(ch=='D')dir[i]=1;
		if(dir[i]==1){
			t[b[i]]+=2*(L-d[i]);
		}
	}
	int all=0;
	lop(i,1,n){
		add[0]+=d[i]-d[i-1];
		if(dir[i]==1){
			all=(all+b[i])%k;
			lop(j,0,k-1)tmp[j]=add[j],add[j]=0;
			lop(j,0,k-1)add[(j+b[i])%k]=tmp[j];
		}else{
			lop(j,0,k-1)t[(j+b[i])%k]+=add[j];
			t[(b[i]+all)%k]+=d[i];
		}
	}
	lop(i,0,k-1)printf("%.1Lf\n",t[i]/2.0);
	return 0;
}/*
读懂题了,不只是看最后的颜色
*/

回复

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

正在加载回复...