输入疑问(我拿前缀和做的)
  • 板块P3392 涂国旗
  • 楼主fazeup
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/9 08:46
  • 上次更新2024/7/9 10:11:13
查看原帖
输入疑问(我拿前缀和做的)
801312
fazeup楼主2024/7/9 08:46

求助大佬

这是AC代码

#include<bits/stdc++.h>
using namespace std;

int f[55][3],n,m,mm,now,ans=4000; 
char op;

int main(){
	ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
    mm=n*m;
    for(int i=1;i<=n;i++){
    	for(int j=0;j<=2;j++){
			f[i][j]+=f[i-1][j];
		}
    	for(int j=1;j<=m;j++){
    		cin>>op;
    		if(op=='B')f[i][1]++;
    		if(op=='R')f[i][2]++;
         //!!!!!!!!
    		else if(op=='W')f[i][0]++;
		}
	}
//	for(int i=1;i<=n;i++){
//		for(int j=0;j<=2;j++)cout<<f[i][j]<<",";
//	    cout<<'\n';
//	}
//	
	
    for(int i=1;i<=n-2;i++){
    	for(int j=i+1;j<=n-1;j++){
    		now=mm-f[i][0]-f[j][1]+f[i][1]-f[n][2]+f[j][2]; 
			ans=min(ans,now);         
		}
	}
    cout<<ans;
	return 0;
}

这是AC代码样例输入后的前缀和数组

但是如果把输入时的

else if(op=='W')f[i][0]++;

换成

else f[i][0]++;

样例输入后的前缀和数组就是这样且14分

所以为什么?

2024/7/9 08:46
加载中...