E. Polycarp and Snakes

Posted starve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了E. Polycarp and Snakes相关的知识,希望对你有一定的参考价值。

https://codeforces.com/contest/1185/problem/E

题意:在矩阵上,用a~z代表,然后后来画的可以覆盖掉之前画的,问可行方法是怎么画的

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int M=2200;
 4 int x1[27],x2[27],y[27],yy[27];
 5 char fir[M][M],sec[M][M];
 6 
 7 
 8 int main()
 9     int t;
10     ios::sync_with_stdio(false);
11     cin>>t;
12     while(t--)
13         int n,m;
14         cin>>n>>m;
15         for(int i=1;i<=26;i++)
16             x1[i]=x2[i]=y[i]=yy[i]=0;
17         int maxx=0;
18         for(int i=1;i<=n;i++)
19             for(int j=1;j<=m;j++)
20                 cin>>fir[i][j];
21                 int x=fir[i][j]-a+1;
22                 sec[i][j]=.;
23                 if(fir[i][j]==.)
24                     continue;
25                 maxx=max(maxx,x);
26                 if(x1[x]==0)
27                     x1[x]=i,y[x]=j;
28                 x2[x]=i,yy[x]=j;
29             
30         if(maxx==0)
31             cout<<"YES"<<endl;
32             cout<<"0"<<endl;
33             continue;
34         
35         int flag=0;
36         for(int i=1;i<=maxx;i++)
37             if(x1[i]==0)
38                 x1[i]=x2[i]=x1[maxx],y[i]=yy[i]=y[maxx];
39             if(x1[i]!=x2[i]&&y[i]!=yy[i])
40                 flag=1;
41                 break;
42             
43             for(int j=x1[i];j<=x2[i];j++)
44                 for(int k=y[i];k<=yy[i];k++)
45                     sec[j][k]=a+i-1;
46         
47         if(flag)
48             cout<<"NO"<<endl;
49             continue;
50         
51         for(int i=1;i<=n;i++)
52             for(int j=1;j<=m;j++)
53                 if(fir[i][j]!=sec[i][j])
54                     flag=1;
55                     break;
56                 
57             if(flag)
58                 break;
59         
60         if(flag)
61             cout<<"NO"<<endl;
62             continue;
63         
64         cout<<"YES"<<endl;
65         cout<<maxx<<endl;
66         for(int i=1;i<=26;i++)
67             if(x1[i]==0)
68                 break;
69             cout<<x1[i]<<" "<<y[i]<<" "<<x2[i]<<" "<<yy[i]<<endl;
70             
71             
72         
73             
74     
75     return 0;
76 
View Code

 

以上是关于E. Polycarp and Snakes的主要内容,如果未能解决你的问题,请参考以下文章

[lightoj P1151] Snakes and Ladders

leetcode909. Snakes and Ladders

CF1005D Polycarp and Div 3 思维

CodeForces 659F Polycarp and Hay

CodeForces - 1618A Polycarp and Sums of Subsequences

CodeForces - 1618A Polycarp and Sums of Subsequences