码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-11-27 23:31:22      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:turn   开始   ini   ++   har   force   ios   ORC   out   

//为了连贯,采取一条路形式,从第一行开始    也就是s型 
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 106;
char str[MAXN][MAXN];
vector<char> ch;//存放鸡的名字 
void init() {
    for(char i=0; i<=9; i++) ch.emplace_back(i);
    for(char i=A; i<=Z; i++) ch.emplace_back(i);
    for(char i=a; i<=z; i++) ch.emplace_back(i);
}
int main() {
    std::ios::sync_with_stdio(false); 
    cin.tie(0),cout.tie(0);
    int T;
    init();
    cin >> T;
    while(T--) {
        int r,c,k,cnt=0;
        cin >> r >> c >> k;
        for(int i=1; i<=r; i++) {
            for(int j=1; j<=c; j++) {
                cin >> str[i][j];
                if(str[i][j]==R) cnt++;//米的总的数目
            }
        } 
        int x=cnt/k;//需要拿最少的鸡的数量 
        int y=cnt%k;//需要拿最多的鸡的数量 
        int cht=0;
        int xx=x;
        if(y) xx++,y--;//最多拿
        for(int i=1; i<=r; i++) {//
            if(i&1) {//如果是奇数行 
                for(int j=1; j<=c; j++) {//每一列 
                    if(str[i][j]==R)//如果是米 
                        xx--,cnt--;//数量减1,总数减一 
                    str[i][j]=ch[cht];//标记 
                    if(!cnt) {//如果总书减到0了 
                        str[i][j]=ch[cht];//说明没有米,赋值就行 
                        continue;
                    }
                    if(!xx) {//如果需要的米 完了 
                        if(y) xx=x+1,y--;//如果拿max的还没有搞完,就继续 
                        else xx=x;
                        cht++;
                    }
                }
            } else {
                for(int j=c; j>=1; j--) {//i=1结束了,但上面的那个还没有放完,就接着上面的,继续放,倒着 
                    if(str[i][j]==R) xx--,cnt--;
                    str[i][j]=ch[cht];
                    if(!cnt) {
                        str[i][j]=ch[cht];
                        continue;
                    }
                    if(!xx) {
                        if(y) xx=x+1,y--;
                        else xx=x;
                        cht++;
                    }
                }
            }
        }
        for(int i=1; i<=r; i++) {
            for(int j=1; j<=c; j++)
                cout << str[i][j];
            cout << endl;
        }
    }
    return 0;
}

 

 

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

标签:turn   开始   ini   ++   har   force   ios   ORC   out   

原文地址:https://www.cnblogs.com/QingyuYYYYY/p/11946101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!