It's All Squares【枚举计数】-2020杭电多校2

题意:

(n*m) 的棋盘,每个格子上有权值 (w_{i,j})(q) 次询问,每次给出起点,在边线上走出一个简单多边形,问多边形内部有多少个不同的权值。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6771

分析:

代码:

#include<bits/stdc++.h>
#define pb push_back
using namespace std;
const int N=410;
const int maxn=4e6+6;
int w[N][N];
int cnt[N*N];
char ss[maxn];
vector<int>num;
int main()
{
    int t,n,m,q;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d%d",&n,&m,&q);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
                scanf("%d",&w[i][j]);
        }
        int x,y,ans;
        while(q--)
        {
            scanf("%d%d",&x,&y);
            scanf("%s",ss+1);
            int len=strlen(ss+1),it=1;
            ans=0;
            num.clear();
            while(it<=len)
            {
                if(ss[it]=='L')//x-1
                {
                    for(int i=1;i<=y;i++)
                    {
                        cnt[w[x][i]]--;
                        if(cnt[w[x][i]]==-1)
                        {
                            ans++;
                            num.pb(w[x][i]);
                        }
                        else if(cnt[w[x][i]]==0)
                            ans--;
                    }
                    x--;
                }
                else if(ss[it]=='R')//x+1
                {
                    for(int i=1;i<=y;i++)
                    {
                        cnt[w[x+1][i]]++;
                        if(cnt[w[x+1][i]]==1)
                        {
                            ans++;
                            num.pb(w[x+1][i]);
                        }
                        else if(cnt[w[x+1][i]]==0)
                            ans--;
                    }
                    x++;
                }
                else if(ss[it]=='U') y++;
                else y--;
                it++;
            }
            for(int i=0;i<num.size();i++)
                cnt[num[i]]=0;
            printf("%d
",ans);
        }
    }
    return 0;
}

参考博客:
https://blog.csdn.net/qq_43202683/article/details/107548741

原文地址:https://www.cnblogs.com/1024-xzx/p/13419028.html