同构图+思维构造——牛客多校第六场E
考的其实是同构图的性质:
1.同构图的顶点数,边数相等
2.同构图通过点的映射后邻接矩阵相同
这篇博客讲的很好https://www.jianshu.com/p/c33b5d1b4cd9
本题还需要一步构造的方案,通过最基础的n=4和n=4+1的图的图推广到n=4k和n=4k+1的状态
#include<bits/stdc++.h>
using namespace std;
#define maxn 2005
int mp[maxn][maxn];
int n,f[maxn];
int main(){
int t;cin>>t;
for(int tt=;tt<=t;tt++){
cin>>n;
if(n%== || n%==){
printf("Case #%d: No\n",tt);
continue;
}
memset(mp,,sizeof mp);
memset(f,,sizeof f);
int m=n/;//分成四个块
for(int i=;i<=m;i++)//两个团
for(int j=;j<=m;j++)
if(i!=j){
mp[i][j]=,mp[i+*m][j+*m]=;
}
for(int i=;i<=m;i++)//块之间的边
for(int j=;j<=m;j++){
mp[i][j+m]=mp[j+m][i]=;
mp[i+m][j+*m]=mp[j+*m][i+m]=;
mp[i+*m][j+*m]=mp[j+*m][i+*m]=;
}
if(n%==){//额外点
for(int i=;i<=m;i++){
mp[n][i]=mp[i][n]=;
mp[n][i+*m]=mp[i+*m][n]=;
}
}
//构造映射关系
for(int i=;i<=m;i++){
f[i]=i+m;f[i+m]=i+*m;f[i+*m]=i;f[i+*m]=i+*m;
}
if(n%==)f[n]=n;
printf("Case #%d: Yes\n",tt);
for(int i=;i<=n;i++){
for(int j=;j<=n;j++)
cout<<mp[i][j];
puts("");
}
for(int i=;i<n;i++)cout<<f[i]<<" ";
cout<<f[n]<<'\n';
}
}
同构图+思维构造——牛客多校第六场E的更多相关文章
- 思维题——牛客多校第六场D
这题的不能用二分做,因为不满足单调性的 可以用multiset做 #include<bits/stdc++.h> #define ll long long #define rep(i,a, ...
- 牛客多校第六场 C Generation I 组合数学 阶乘逆元模板
链接:https://www.nowcoder.com/acm/contest/144/C来源:牛客网 Oak is given N empty and non-repeatable sets whi ...
- 牛客多校第六场 J Heritage of skywalkert 随即互质概率 nth_element(求最大多少项模板)
链接:https://www.nowcoder.com/acm/contest/144/J来源:牛客网 skywalkert, the new legend of Beihang University ...
- 牛客多校第六场-H-Pair
链接:https://ac.nowcoder.com/acm/contest/887/H来源:牛客网 题目描述 Given three integers A, B, C. Count the numb ...
- 牛客多校第六场G Is Today Friday?(吉姆拉尔森/蔡勒公式 + 思维)题解
题意: 给你\(A-J\)的字母组成的日期,形式为\(yyyy/mm/dd\).现给你\(n\)个这样的串\((n<=1e5)\),问你把字母映射成数字,并且使得所有日期合法且为星期五的最小字典 ...
- 牛客多校第六场 E Androgynos 自补图
题意: 给定点数,构造自补图,要求输出邻接矩阵,和原图与补图的同构映射. 题解: 只有点数为4k和4k+1的情况才能构造自补图,因为只有这些情况下边数才为偶数. 一种构造方式是,邻接矩阵和同构映射增量 ...
- 2018牛客多校第六场 G.Pikachu
题意: 给出一棵n个点的树,每条边有边权.对这个树加边变成一个完全图.新加的边的权值为边上两点在树上的距离.求完全图上任意两点的最大流之和. 题解: 一共有C(n,2)个点对.假设当前求s到t之间的最 ...
- 2018牛客多校第六场 I.Team Rocket
题意: 给出n个区间和m个点(点按顺序给出且强制在线).每个区间只会被第一个他包含的点摧毁.问每个点能摧毁多少个区间以及每个区间是被哪个点摧毁的. 题解: 将n个区间按照左端点排序,然后用vector ...
- 牛客多校第六场C
一个数很大,并不能预处理,所以要进行公式变换,存前一个的值就好 #include <bits/stdc++.h> using namespace std; typedef long lon ...
随机推荐
- scrollHeight与offsetHeight
offsetXxx 是 HTMLElement 的属性, HTMLElement 接口表示所有的 HTML 元素,scrollXxx 是 Element 的属性,Element 是一个通用性非常强的基 ...
- TCP的状态及变迁
十一种状态如下图: 全部11种状态1. 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT .2. 服务器独有的: ...
- Qt 【关于跳转页面后当前页面(委托delegate)数据丢失的问题】
这个是一个很低级的错误,之前po主急着完成任务,也是没注意看,窗口跳窗如下图所示: 这个过程中都是click促发槽然后B*pB,pB->show,同理A*pA,pA->show,这个过程中 ...
- Qt 【关于控件样式,鼠标进入、离开、点击】
比如举以下这个例子: QPushButton * okBtn; okBtn->setstylesheet("QPushButton{border-image:url(:/image/h ...
- 解决Addin开发不能断点调试的问题
ArcMap或CAD在调试C#二次开发的插件的时候,在一些情况下不能正常进入到断点中,原因是debugger type不对应. eg. 右键单击Solution Explorer,选择Add-> ...
- Java中的API
待施工 111 API: Scanner Random String StringBuilder ArrayList 集合详解: 包 import java.util.ArrayList 构造方法pu ...
- 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,
一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...
- sql 关系模型
我们已经知道,关系数据库是建立在关系模型上的.而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表.直线电机厂家 表的每一行称为记录(Record),记录是一个逻辑意义上的数据. ...
- APICloud框架——融云+UIChatTools实现即时通讯聊天
今天完成了公司app的聊天界面的收发消息功能,结合融云2和UIChatTools模块实现,只是实现了基本功能,好多细节还没有实现,废话不多说,上代码 输入框页面(win) 先引入所需模块 // 融云模 ...
- 分块——cf1207F
这么傻逼的题当时想了那么久 用a数组维护原序列,b[i][j]表示 pos%i=j 的 a[pos]之和 对于每个修改1 x y,先直接修改a[x],然后枚举i=1..700,修改b[i][x%i] ...