Codeforces Round #601 (Div. 2)D(蛇形模拟)

Posted ldudxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #601 (Div. 2)D(蛇形模拟)相关的知识,希望对你有一定的参考价值。

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 vector<char>ans;
 5 char a[107][107];
 6 int main(){
 7     ios::sync_with_stdio(false);
 8     cin.tie(NULL);
 9     cout.tie(NULL);
10     for(int i=0;i<=9;++i)
11         ans.emplace_back(i);
12     for(int i=A;i<=Z;++i)
13         ans.emplace_back(i);
14     for(int i=a;i<=z;++i)
15         ans.emplace_back(i);
16     int t;
17     cin>>t;
18     while(t--){
19         int r,c,k;
20         cin>>r>>c>>k;
21         int cnt=0;
22         for(int i=1;i<=r;++i)
23             for(int j=1;j<=c;++j){
24                 cin>>a[i][j];
25                 if(a[i][j]==R)
26                     ++cnt;
27             }
28         int x=cnt/k,y=cnt%k;
29         int pt=0;
30         int tx=x;
31         if(y)
32             ++tx,--y;
33         for(int i=1;i<=r;++i){
34             if(i&1){
35                 for(int j=1;j<=c;++j){
36                     if(a[i][j]==R)
37                         --tx,--cnt;
38                     a[i][j]=ans[pt];
39                     if(!cnt)
40                         continue;
41                     if(!tx){
42                         ++pt;
43                         if(y)
44                             tx=x+1,--y;
45                         else
46                             tx=x;
47                     }
48                 }
49             }
50             else{
51                 for(int j=c;j>=1;--j){
52                     if(a[i][j]==R)
53                         --tx,--cnt;
54                     a[i][j]=ans[pt];
55                     if(!cnt)
56                         continue;
57                     if(!tx){
58                         ++pt;
59                         if(y)
60                             tx=x+1,--y;
61                         else
62                             tx=x;
63                     }
64                 }
65             }
66         }
67         for(int i=1;i<=r;++i){
68             for(int j=1;j<=c;++j)
69                 cout<<a[i][j];
70             cout<<"
";
71         }
72     }
73     return 0;
74 }

 

以上是关于Codeforces Round #601 (Div. 2)D(蛇形模拟)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #601 (Div. 2)D(蛇形模拟)

Codeforces Round #601 (Div. 2) A-E

Codeforces Round #601 (Div. 2) D Feeding Chicken

Codeforces Round #601 (Div. 2) E1 Send Boxes to Alice (Easy Version)

Codeforces Round #601 (Div. 2)E(寻找质因子,DP)

Codeforces Round #436 E. Fire(背包dp+输出路径)