社区讨论

NOIPT4疑似宇宙射线36->0

学术版参与者 2已保存回复 6

讨论操作

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

当前回复
6 条
当前快照
1 份
快照标识符
@lp45vafg
此快照首次捕获于
2023/11/18 22:45
2 年前
此快照最后确认于
2023/11/19 09:31
2 年前
查看原帖
CPP
//[Data Removed] [Data Removed] qinianji [Data Removed]
#include<bits/stdc++.h>
using namespace std;
struct kill{
	int x,y,v;
}a[100006];
int n,m,k,d,c,t;
long long dp[1005][1006],f[1005],get[1005][1005];
long long mmax(long long a,long long b){
	if(a>b)    return a;
	return b; 
}
long long mmin(long long a,long long b){
	if(a<b)    return a;
	return b; 
}
bool cmp(kill aa,kill bb){
	if(aa.x==bb.x)    return aa.y<bb.y;
	return aa.x<bb.x;
}
int main(){
    freopen("run.in","r",stdin);
	freopen("run.out","w",stdout);
	cin >> c >> t;
	if(c<=9){
	    while(t--){
		    cin >> n >> m >> k >> d;
		    for(int i=1;i<=m;i++){
			    scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].v);
			}
			sort(a+1,a+m+1,cmp);
			int cnt=1;
			for(int i=1;i<=n;i++){
				for(int j=1;j<=mmin(k,i);j++){
					get[i][j]=get[i][j-1]+get[i-1][j-1]-(j!=1?get[i-1][j-2]:0);
					while(cnt<=m){
						if(a[cnt].x!=i)    break;
						if(a[cnt].y!=j)    break;
						get[i][j]+=a[cnt].v;
						cnt++;
					}
				}
			}
		    for(int i=1;i<=n;i++){
		        f[i]=-1e18;
		        for(int j=0;j<=mmin(k,i);j++){
		        	if(j==0){
		        		dp[i][j]=f[i-1];
					}
		        	else if(j==i || j==i-1){
		        		dp[i][j]=get[i][j]-j*d;
					}
					else{
						dp[i][j]=get[i][j]-j*d+f[i-j-1];
					}
					f[i]=mmax(dp[i][j],f[i]);
				}
		    }
		    cout<<f[n]<<endl;
	    }
    }
	return 0;	
}
本地编译通过了 但是好像kill这个名字oj上会CE
改掉这个名字全WA

回复

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

正在加载回复...