关于AT D题意
  • 板块学术版
  • 楼主Kalenist
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/19 23:24
  • 上次更新2023/11/3 02:33:18
查看原帖
关于AT D题意
557754
Kalenist楼主2023/8/19 23:24

一个 naivenaive 的想法:按照蒟蒻的理解,一次将某种颜色能删就删,而不同颜色间互不影响,那么对于某一行或某一列如果一种颜色出现了超过1次就能把该行或列的这种颜色删光,但是这样只过了 3030 个点。题意理解是否有误?或者能否 hackhack 该做法?

#include<bits/stdc++.h>
#define N 2010
#define For(i,a,b) for(register int i=a;i<=b;i++)
using namespace std;
int n,m,cnt[130],mark[N][N],num;
char s[N][N];
int main()
{
    scanf("%d%d",&n,&m);
    For(i,1,n) scanf("%s",s[i]+1);
    For(i,1,n)
    {
        memset(cnt,0,sizeof(cnt));
        For(j,1,m) cnt[s[i][j]]++;
        For(j,1,m) if(cnt[s[i][j]] > 1) mark[i][j]=true;
    }
    For(j,1,m)
    {
        memset(cnt,0,sizeof(cnt));
        For(i,1,n) cnt[s[i][j]]++;
        For(i,1,n) if(cnt[s[i][j]] > 1) mark[i][j]=true;
    }For(i,1,n) For(j,1,m) num+=mark[i][j];
    printf("%d\n",n*m-num);
    return 0;
}

2023/8/19 23:24
加载中...