专栏文章
题解 CF2094F
CF2094F题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipgp83s
- 此快照首次捕获于
- 2025/12/03 11:43 3 个月前
- 此快照最后确认于
- 2025/12/03 11:43 3 个月前
题意
给定 格子,往里面填入 的整数,使得各个整数出现次数相同且相同整数不相邻。
思路
简单构造。我们观察 的情况,不难发现这个结果其实非常容易满足。
如果按照横平竖直的顺序,依次填入 ,在很多情况下就可以满足条件。唯一一点例外是当 是 的倍数时,每一横行的所有数都会相同。
严谨一点说,当 不是 的倍数时,依次填入 ,由于 ,所以一个数左右两边一定是与此数不同的。而上下的数由于存在余数的缘故,也一定不同。
因此特判 是 的倍数的情况,将一行所有数平移一格并将头部数字放到尾部即可。
程序如下
CPP#include<cstdio>
#include<cstring>
using namespace std;
int T,n,m,k;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&k);
int cur=0;
for(int i=1;i<=n;i++){
if(m%k==0&&i%2==0){
cur++;
for(int i=1;i<=m;i++)printf("%d ",(++cur)%k+1);
cur--;
}
else
for(int i=1;i<=m;i++)
printf("%d ",(++cur)%k+1);
puts("");
}
}
return 0;
}
THE END

相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...