牛客多校第六场 E Androgynos 自补图
题意:
给定点数,构造自补图,要求输出邻接矩阵,和原图与补图的同构映射。
题解:
只有点数为4k和4k+1的情况才能构造自补图,因为只有这些情况下边数才为偶数。
一种构造方式是,邻接矩阵和同构映射增量构造,每次加四个边xyzw,x和w连接原来的所有边,yz不连,同构映射是交换xy,zw
参考:www.matrix67.com/blog/archives/6221
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int M = 2e3 + 5; const LL mod = 998244353; const LL lINF = 0x3f3f3f3f3f3f3f3f; bool mp[M][M]; int t; int n; int a[M]; int main() {scanf("%d", &t);for (int cnt = 1; cnt <= t; cnt++){scanf("%d", &n);if (n % 4 == 0){printf("Case #%d: Yes\n", cnt);memset(mp, 0, sizeof mp);mp[2][1] = mp[1][2] = 1;mp[2][3] = mp[3][2] = 1;mp[3][4] = mp[4][3] = 1;a[1] = 2;a[2] = 4;a[3] = 1;a[4] = 3;for (int i = 5; i <= n; i += 4){mp[i][i + 1] = mp[i + 1][i] = 1;mp[i + 1][i + 2] = mp[i + 2][i + 1] = 1;mp[i + 2][i + 3] = mp[i + 3][i + 2] = 1;for (int j = 0; j < 4; j+=3){for (int k = 1; k < i; k++){mp[i + j][k] = mp[k][i + j] = 1;}}a[i] = i + 1;a[i + 1] = i;a[i + 2] = i + 3;a[i + 3] = i + 2;swap(a[i+1], a[i + 2]);}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){printf("%d", mp[i][j]);}puts("");}for (int i = 1; i < n; i++){printf("%d ", a[i]);}printf("%d\n", a[n]);}else if (n % 4 == 1){printf("Case #%d: Yes\n", cnt);memset(mp, 0, sizeof mp);a[1] = 1;for (int i = 2; i <= n; i += 4){mp[i][i + 1] = mp[i + 1][i] = 1;mp[i + 1][i + 2] = mp[i + 2][i + 1] = 1;mp[i + 2][i + 3] = mp[i + 3][i + 2] = 1;for (int j = 0; j < 4; j+=3){for (int k = 1; k < i; k++){mp[i + j][k] = mp[k][i + j] = 1;}}a[i] = i + 1;a[i + 1] = i;a[i + 2] = i + 3;a[i + 3] = i + 2;swap(a[i+1], a[i + 2]);}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){printf("%d", mp[i][j]);}puts("");}for (int i = 1; i < n; i++){printf("%d ", a[i]);}printf("%d\n", a[n]);}else{printf("Case #%d: No\n", cnt);}} }
转载于:https://www.cnblogs.com/isakovsky/p/11296632.html
牛客多校第六场 E Androgynos 自补图相关推荐
- 2019牛客多校第六场 E Androgynos
传送门:https://ac.nowcoder.com/acm/contest/886/E 首先要同构的话,必须补图和原图边数一样,完全图总边数就必须是偶数,那么只有n%4=1 和 n%4=0时总边数 ...
- 牛客多校第六场-H-Pair
链接:https://ac.nowcoder.com/acm/contest/887/H 来源:牛客网 题目描述 Given three integers A, B, C. Count the num ...
- 牛客多校第六场 G Is Today Friday? 蔡勒公式/排列
题意: 有一堆日期,这些日期都是星期五,但是数字被映射成了字母A~J,现在让你求逆映射,如果存在多种答案,输出字典序最小的那个. 题解: 用蔡勒公式解决关于星期几的问题. 对于映射,可以用笔者刚刚学会 ...
- [题解]Shorten IPv6 Address-模拟(2019牛客多校第六场B题)
题目链接:https://ac.nowcoder.com/acm/contest/886/B 题意: 您将获得一个IPv6地址,该地址是128位二进制字符串.请根据以下规则确定其最短的表示: 以十六进 ...
- 【2022牛客多校第六场 Z题 Game on grid】dp
题目描述 输入描述 2 3 3 -B -B BB. 1 3 - 输出描述 no no yes no yes no 题意 有一个n*m的棋盘,Alice和Bob轮流进行操作,每操作一步都是从当前点到右边 ...
- 24dian(牛客多校第三场)
24dian(牛客多校第三场) 题意: 给你n张牌,每张牌的大小为1 ~ 13,问这些牌与加减乘除任意组合(可以使用括号),且但所有的有效解在计算过程中都涉及到分数,即非整数,能否组成答案m,如果可以 ...
- 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数
目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...
- 牛客多校第四场【B-Basic Gcd Problem】
牛客多校第四场[B-Basic Gcd Problem] 题目链接:https://ac.nowcoder.com/acm/contest/5669/B 思路:先要理解公式,多看几个数据基本就会有点想 ...
- 牛客多校第三场 B【Classical String Problem】
牛客多校第三场 B[Classical String Problem] 链接:https://ac.nowcoder.com/acm/contest/5668/B 来源:牛客网 题目描述 Given ...
最新文章
- 宇宙的第一推动力,必然存在吗?
- sizeof 头文件_c/c++基础之sizeof用法
- Qt QWidget实现手势缩放和平移(二)
- WordPress函数:wp_nav_menu($args)函数说明
- C#和.NET Framework的关系
- QQ无法安装,不用着急,用毒霸2011来解决
- 数组c语言什么时候学的,C语言学习之数组
- linux 停止jar 指令,Linux编辑启动、停止与重启springboot jar包脚本实例
- 【高校宿舍管理系统】第三章 Layui整合Axios
- 【Flink】Flink 多并行度下的 watermark触发机制
- C++之文件输入输出
- centos 上安装bugzilla 详解
- Sql语句分页,有待优化
- 揭露微信朋友圈当中出现刷票群0.01一票微信号、刷票0.01一票微信号的虚假面目
- 软件工程专业要考c语言吗,【干货】软件工程专业课到底考什么?
- 基于文本语义的智能问答机器人——工业应用
- 线性代数【8】-1 线性方程组 - 非常重要的概念 - 三个基本的问题
- 《宣龙教育》加密网课视频下载
- 如何免费使用正版win10系统
- 【学习笔记】C++ 核心编程(二)类和对象——封装
热门文章
- 经典面试题:给两个序列如何构造一棵二叉树
- LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置
- Android多点触控MultiTouch浅析
- 从内存分配角度分析c和java里的static 关键字.
- Oracle PCTfree assm,Oracle 段空间管理方式与PCTFREE和PCTUSED的概念
- python网页登录钉钉_django 钉钉扫码登录
- C语言程序设计省二考试,浙江省高校计算机等级考试大纲(二级——C语言程序设计大纲)(...
- ue如何使用php文件,UltraEdit使用设置
- flutter 图片路径_【Flutter开发工具推荐】Flutter资源管理利器:Flr
- python3常用模块_python常见模块有哪些