50分求调awa
  • 板块P1174 打砖块
  • 楼主wuming_z
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/4 22:38
  • 上次更新2024/8/5 09:02:47
查看原帖
50分求调awa
1125000
wuming_z楼主2024/8/4 22:38
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
struct node{
	int f;
	bool sf;
}sr[1001][1001];
int mp[1001][1001];
int dp[1001][1001];
int zds[1001];
int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			char zf;
			cin>>sr[i][j].f>>zf;
			if(zf=='Y')sr[i][j].sf=1;
			
		}
	}
	for(int i=1;i<=m;i++){
		int c=1;
		bool ifs=1;
		for(int j=n;j>=1;j--){
			if(sr[j][i].sf){
				mp[i][c-1]+=sr[j][i].f;
				continue;
			}
			mp[i][c]=mp[i][c-1]+sr[j][i].f;
			c++;
		}
		zds[i]=c-1;
	}
	for(int i=1;i<=m;i++){
		for(int j=0;j<=k;j++){
			for(int c=0;c<=min(zds[i],j);c++){
				dp[i][j]=max(dp[i][j],dp[i-1][j-c]+mp[i][c]);
			}
		}
	}
	cout<<dp[m][k]<<endl;
//	for(int i=n;i>=1;i--){
//		for(int j=1;j<=m;j++){
//			printf("%3d ",mp[j][i]);
//		}cout<<endl;
//	}
	return 0;
} 
2024/8/4 22:38
加载中...