题目大意:将k个鸡放到一个n*m的矩阵中,要求每个鸡所占的rice的个数只差最小

题解:构造,设一共有cnt个rice,可以分cnt/k个,即每一只鸡要么占用cnt/k个rice,要么占cnt/k+1个rice。蛇形跑一边矩阵即可。

注意:要判断当前鸡的个数,即如果当前鸡的个数达到k个,那么放置完毕,鸡的数量不能再增长,而且剩下的格子一定是"."。

#include<bits/stdc++.h>
using namespace std;
const int N=1E2+;
char arr[N][N];
char mark[N][N];
string s="1abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
void solve(){
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++) scanf("%s",arr[i]+);
int cnt=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(arr[i][j]=='R') cnt++;
int x=cnt/k;
int a=cnt%k;
int pos=;
int sum=;
for(int i=;i<=n;i++){
if(i&){
for(int j=;j<=m;j++){
if(arr[i][j]=='R'){
sum++;
if(pos<=k-a){
if(sum<x) mark[i][j]=s[pos];
else {
mark[i][j]=s[pos];
if(pos<k)
pos++;
sum=;
}
}
else {
if(sum<x+) mark[i][j]=s[pos];
else {
mark[i][j]=s[pos];
if(pos<k)
pos++;
sum=;
}
}
}
else mark[i][j]=s[pos];
}
}
else {
for(int j=m;j>=;j--){
if(arr[i][j]=='R'){
sum++;
if(pos<=k-a){
if(sum<x) mark[i][j]=s[pos];
else {
mark[i][j]=s[pos];
if(pos<k) pos++;
sum=;
}
}
else {
if(sum<x+) mark[i][j]=s[pos];
else {
mark[i][j]=s[pos];
if(pos<k) pos++;
sum=;
}
}
}
else mark[i][j]=s[pos];
}
}
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
printf("%c",mark[i][j]);
}
printf("\n");
}
}
int main(){
int t;
scanf("%d",&t);
while(t--) solve();
return ;
}

D. Feeding Chicken(构造)的更多相关文章

  1. Feeding Chicken

    D - Feeding Chicken 从左上角开始,往右下角开始遍历,但是遍历的时候需要注意一点,就是遍历的时候需要连起来,就比如第一行从左往右进行遍历,但是第二行不能从左往右了,因为这样就分开了, ...

  2. Codeforce 1255 Round #601 (Div. 2)D. Feeding Chicken (模拟)

    Long is a huge fan of CFC (Codeforces Fried Chicken). But the price of CFC is increasing, so he deci ...

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

    //为了连贯,采取一条路形式,从第一行开始 也就是s型 #include <bits/stdc++.h> using namespace std; ; char str[MAXN][MAX ...

  4. Codeforces Round #601 (Div. 2)

    传送门 A. Changing Volume 签到. Code /* * Author: heyuhhh * Created Time: 2019/11/19 22:37:33 */ #include ...

  5. 学习笔记:Maven构造版本号的方法解决浏览器缓存问题

    需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...

  6. 一步步构造自己的vue2.0+webpack环境

    前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...

  7. About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷

    构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...

  8. Eos开发——构造查询条件

    1.ajax 方式 var data = { orgid :orgid,year:year ,month: month,type:type,sortField:'sellEmpname' ,sortO ...

  9. 【C++】类和对象(构造与析构)

    类 类是一种抽象和封装机制,描述一组具有相同属性和行为的对象,是代码复用的基本单位. 类成员的访问权限 面向对象关键特性之一就是隐藏数据,采用机制就是设置类成员的访问控制权限.类成员有3种访问权限: ...

随机推荐

  1. leetcode 签到 836. 矩形重叠

    836. 矩形重叠 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的 ...

  2. git的cd命令

    这个命令是进入某个文件夹的命令.进入文件夹后可以对文件夹中的文件进行一系列操作.

  3. CF 1012C Dp

    Welcome to Innopolis city. Throughout the whole year, Innopolis citizens suffer from everlasting cit ...

  4. HDU 3303 Harmony Forever 前缀和+树状数组||线段树

    Problem Description We believe that every inhabitant of this universe eventually will find a way to ...

  5. 一个完整的机器学习项目在Python中的演练(二)

    大家往往会选择一本数据科学相关书籍或者完成一门在线课程来学习和掌握机器学习.但是,实际情况往往是,学完之后反而并不清楚这些技术怎样才能被用在实际的项目流程中.就像你的脑海中已经有了一块块"拼 ...

  6. App压力稳定性测试之Monkey

    一.Monkey简介 Android系统自带monkey程序,模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常. Monkey的使用是在产 ...

  7. 宝塔phpmyadmin可能问题及解决方法

    1. 端口问题检查宝塔phpmyadmin的默认端口888是否放行,和在服务器的安全组规则有没有添加888端口 2.phpmyadmin的php版本问题 在phpmyadmin的设置里的版本选择php ...

  8. opentsdb探索之路——部分设计与实现

    opentsdb 概览(overview) opentsdb 存储细节(Writing) rowkey的设计 rowkey的具体实现 压缩(compaction) 追加模式(appends) open ...

  9. B - Bound Found POJ - 2566(尺取 + 对区间和的绝对值

    B - Bound Found POJ - 2566 Signals of most probably extra-terrestrial origin have been received and ...

  10. Java 混淆器

    在脑海中假想一下,在你苦苦经历 81 难,摸爬滚打研制的技术轮子,终于成型得以问世,遂打个 JAR 包投放于万网之中.可是没过几天,同样功能的轮子出现在你的眼前,关键是核心代码都一样,此时你的内心是否 ...