非常巧妙的一道构造题,发现对于所构造的 \(n\) 有上限,那么对于 \(K<=500\) 的情况,很好构造,每行全是一个数就行了,对于 \(K>500\) 的情况,显然每行都是 \(1,2,...,n\) 的循环同构构造就行了,也可以理解是斜着填,然后对于剩下的 \(K-500\) 个数,每次选择一条斜线,发现每次交替填一定会满足条件。

为什么能想到斜线?因为我们观察到了斜线的个数是 \(2n-1\) 个,所以启发我们往斜线思考构造

算是独立写的题

#include<bits/stdc++.h>

#define maxn 1005

using namespace std;

template<class T>

inline T read(){
T r=0,f=0;
char c;
while(!isdigit(c=getchar()))f|=(c=='-');
while(isdigit(c))r=(r*10)+(c^48),c=getchar();
return f?-r:r;
} int n,ans[maxn][maxn]; queue<int>q,q2; inline void print(){
printf("%d\n",n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%d ",ans[i][j]);
}
puts("");
}
} vector<int>mp[10005]; int main(){
// freopen("sol.out","w",stdout);
int K=read<int>();
if(K<=500){
printf("%d\n",K);
for(int i=1;i<=K;i++){
for(int j=1;j<=K;j++){
printf("%d ",i);
}
puts("");
}
return 0;
}
n=500;
for(int i=1;i<=n;i++)q.push(i);
for(int i=1;i<=n;i++){
int pos=0;
while(!q.empty()){
ans[i][++pos]=q.front(),q2.push(q.front());
if(!mp[q.front()].size())mp[q.front()].emplace_back(i+pos);
else if(mp[q.front()].size()==1&&i+pos!=mp[q.front()][0])mp[q.front()].emplace_back(i+pos);
q.pop();
}
int Top=q2.front();q2.pop();
q2.push(Top);
while(!q2.empty())q.push(q2.front()),q2.pop();
}
int num=n+1;
for(int i=2;i<=n+1;i++){
int pos=1;
int shu=ans[i-pos][pos];
while(1){
if(i-pos<1)break;
int pos2=i-pos;
ans[pos2][pos]=num;
pos+=2;
}
int i2=mp[shu][1];
if(i2==i)i2=mp[shu][0];
while(1){
if(i2-pos<1)break;
int pos2=i2-pos;
ans[pos2][pos]=num;
pos+=2;
}
if(num==K)break;
++num;
}
print();
return 0;
}

[AGC030C] Coloring Torus的更多相关文章

  1. [Atcoder AGC030C]Coloring Torus

    题目大意:有$k$种颜色,要求构造出一个$n\times n$的矩阵,填入这$k$种颜色,满足对于每一种颜色,其中填充这种颜色的每一个方格,满足其相连的四个格子的颜色的个数和种类相同(对于每一种颜色而 ...

  2. AtCoder Grand Contest 030 (AGC030) C - Coloring Torus 构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/AGC030C.html 题解 才发现当时是被题意杀了. 当时理解的题意是“对于任意的 (i,j) ,颜色 i 和 ...

  3. Coloring Torus(Atcoder Grand Contest 030 C)

    怎么外国都喜欢考脑筋急转弯…… 题意 输入 $k$,要求构造一个 $n\times n$ 的矩阵($n$ 自选),使得恰好用 $k$ 中颜色把每个点都染色,并且同一种颜色的格子周围 相邻的每种颜色数量 ...

  4. AtCoder刷题记录

    构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...

  5. 贪心/构造/DP 杂题选做Ⅲ

    颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...

  6. AtCoder Grand Contest 030题解

    第一次套刷AtCoder 体验良好 传送门 Poisonous Cookies cout<<b+min(c,a+b+); Tree Burning 难度跨度有点大啊 可以证明当第一次转向之 ...

  7. AGC030 简要题解

    A - Poisonous Cookies 题意 有\(A\)个能解毒的普通饼干,\(B\)个能解毒的美味饼干,\(C\)个有毒的美味饼干,求最多能吃多少个美味饼干,每次吃完有毒的饼干后要解毒后才能继 ...

  8. 【AtCoder】AGC030

    A - Poisonous Cookies 有毒还吃,有毒吧 #include <bits/stdc++.h> #define fi first #define se second #de ...

  9. AtCoder Grand Contest 030 Solution

    A - Poisonous Cookies 签到. #include <bits/stdc++.h> using namespace std; #define ll long long l ...

  10. AtCoder练习

    1. 3721 Smuggling Marbles 大意: 给定$n+1$节点树, $0$为根节点, 初始在一些节点放一个石子, 然后按顺序进行如下操作. 若$0$节点有石子, 则移入盒子 所有石子移 ...

随机推荐

  1. Niginx中Vue Router 历史(history)模式的配置

    快速配置 将build后的文件直接丢到niginx目录下的html文件夹中,然后配置nginx.conf,就可以在快速的实现niginxhistory模式的配置了. location /{ # 可使用 ...

  2. Oracle、达梦:同一数据库边查询边插入的两种方式

    1.方式1 插入的表需要构建好 -- 建表:6秒 500毫秒:抽数据100万:10秒 640毫秒.11秒 189毫秒 insert into T_HUGE_COMPRESS (ID, NAME) ( ...

  3. 创建第一个springmvc程序

    创建第一个springmvc程序 1.创建父项目文件,导入依赖,删除src文件夹 pom.xml文件 <dependencies> <dependency> <group ...

  4. 【经典爬虫案例】用Python爬取微博热搜榜!

    目录 一.爬取目标 二.编写爬虫代码 2.1 前戏 2.2 获取cookie 2.3 请求页面 2.4 解析页面 2.5 转换热搜类别 2.6 保存结果 2.7 查看结果数据 三.获取完整源码 一.爬 ...

  5. 【Linux】XFS文件系统

    XFS WIKI介绍 XFS is a high-performance 64-bit journaling file system created by Silicon Graphics, Inc ...

  6. Vue3学习(二十四)- 文档页面功能开发

    写在前面 这部分真的感觉超级难,其实也不能说难,主要是真的想不到这个思路应该这么做,或者说他好厉害,他怎么知道该这么设计实现. 说下难点吧,我觉得后天逻辑还好,主要是前端部分真的需要点花点时间来思考, ...

  7. C语言:冒泡排序---详细解释

    //冒泡排序数字,仅仅适用于数组无序的时候,若有序则不能使用冒号排序     例如: 数字组:5,54,64,98,47     /*     1: 54,64,98,47,5     4次     ...

  8. vulnhub靶场-->MATRIX-BREAKOUT: 2 MORPHEUS

    靶机下载地址 MATRIX-BREAKOUT: 2 MORPHEUS << 点我下载 开始打靶 IP发现 nmap扫描网段发现靶机ip:192.168.111.139 端口发现 对靶机进行 ...

  9. Python作图三维等高面

    技术背景 对于等高线,大家都是比较熟悉的,因为日常生活中遇到的山体和水面,都可以用一系列的等高线描绘出来.而等高面,顾名思义,就是在三维空间"高度一致"的曲面.当然了,在二维平面上 ...

  10. vite.config.js 无法使用__dirname的解决方法

    __dirname 是commonjs规范的内置变量.如果使用了esm 是不会自动注入这个变量的. 在commonjs中,注入了__dirname,__filename, module, export ...