Gym - 101503I 利用到图论的构造
比赛的时候没有注意到 给出的up矩阵 能使我们随便选一列 确定这一列的rank
这样我们得出每一行列的rank 进行构图 大->小 然后从大到小放 当前放的点 和他有因果关系并且比他大的点必须已经被放了 并且这个图没有环
做一个topsort就可以了
但是会MLE 因为边的数量可能 600^3 这个图虽然满足拓扑图 但是它比拓扑图更满足一个严格的等级序列
所以可以只建600^2的边 每个点指向只比它小的点
需要判断输入的合法性
int n ;
int le[605][605] ;
int up[605][605] ;
int d[605][605] ;
int deg[605*605] ;
int ans[605][605] ; int head[605 * 605] ;
struct edge{
int v,nex;
}b[605 * 605 * 2] ;
int tot ;
void add(int u,int v){
tot ++ ;
b[tot].v=v ; b[tot].nex=head[u];
head[u]=tot ;
} bool topso() {
int cnt = n*n ;
queue<int>que ;
while(!que.empty()) que.pop() ;
rep(i,1,n*n) {
if(deg[i] == 0) {
que.push(i) ;
}
}
while(!que.empty()) {
int u = que.front() ; que.pop() ;
int x = (u+n-1)/n;
int y = (u%n) ; if(y==0)y=n;
ans[x][y] = cnt -- ;
rnode(i,u){
int v=b[i].v;
deg[v]--;
if(deg[v]==0){
que.push(v) ;
}
}
}
return cnt == 0 ;
} int main () {
tot = 0 ;
flc(head,-1) ;
n = read() ;
rep(i,1,n) rep(j,1,n) up[i][j] = read() ;
rep(i,1,n) rep(j,1,n) le[i][j] = read() ;
rep(i,1,n) rep(j,1,n) {
if(up[i][j] >= i || le[i][j] >= j) {
printf("0\n") ; return 0 ;
}
}
rep(i,1,n) rep(j,1,n) d[i][j] = (i-1)*n + j ;
flc(deg,0) ;
rep(i,1,n) {
int a[650] ;
a[1] = d[i][1] ;
rep(j,2,n) {
int m = le[i][j] ;
m ++ ;
dow(k,j,m+1) a[k] = a[k-1] ;
a[m] = d[i][j] ;
}
rep(j,1,n-1) {
add(a[j],a[j+1]) ;
deg[a[j+1]] ++ ;
}
}
rep(j,1,n) {
int a[650] ;
a[1] = d[1][j] ;
rep(i,2,n) {
int m = up[i][j] ;
m ++ ;
dow(k,i,m+1) a[k] = a[k-1] ;
a[m] = d[i][j] ;
}
rep(i,1,n-1) {
add(a[i],a[i+1]) ;
deg[a[i+1]] ++ ;
}
}
if(topso()) {
rep(i,1,n) rep(j,1,n) {
printf("%d" , ans[i][j]) ; fmt(j,n) ;
}
}
else {
printf("0\n") ;
}
}
Gym - 101503I 利用到图论的构造的更多相关文章
- Codeforces Gym 100342H Problem H. Hard Test 构造题,卡迪杰斯特拉
Problem H. Hard TestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...
- Gym 100801B Black and White(构造)
题意:给定X,Y,分别表示由'.'和'@'组成的连通块的个数. 思路:假如X<Y,我们用两部分来构造这个结果,第一部分由一个'.'连通块和Y-(X-1)割'@'连通块组成,第二个部分由X-1个' ...
- CF Gym 100637J Superfactorial numeral system (构造)
题意:给一个式子,ak,k>2时,0<=ak<k:ai都是整数,给你p,q让你求一组ak. 题解:构造,每次除掉q取整得到ai,然后减一减 #include<cstdio> ...
- Luogu3524 POI2011 Party 图论、构造
题目传送门:https://www.luogu.org/problemnew/show/P3524 大意:给一个$N$个点的图,其中一定有一个大小为$\frac{2}{3}N$的团,程序需给出一个大小 ...
- GYM 101173 K.Key Knocking(构造)
原题链接 参考自 问题描述:一个长度为3*n的01串,每次可以翻转连续的两个字符,要求至多翻转n次使得这个3*n的串至少有2*n个连续的段且相邻两端不一样(就是连续的0算一段,然后连续的1,…) 解法 ...
- Gym - 100513B:Colored Blankets (构造)(存疑)
题意:给定N的棒棒,K种颜色,每个棒棒的两端可以涂色.现在已知所有的线段要么有一端涂色,要么两端都没有涂色,现在要求把所有的没涂色的部分涂色,使得我们可以把涂色后的棒棒分为N/K组,每组的涂色情况相同 ...
- Gym - 100851J: Jump(交互+构造+(大胆瞎搞)))
题意:给定长度为N的01串,现在让你猜这个串,猜的次数要不超过N+500次. 每次你猜一个串,系统会返回N/2,或N,或0.当且当有N/2个位置猜对,N个位置猜对,其他. 思路:因为信息不多,没有关联 ...
- [SDOI2019]热闹又尴尬的聚会(图论+set+构造)
据说原数据可以让复杂度不满的暴力O(Tn^2)过掉……O(Tn^2)方法类似于codeforces一场div2的E题 有一种比较好的方法:每次找出原图G中度最小的点加入q,然后将相邻的点加入新图G'. ...
- [Leetcode] Construct binary tree from preorder and inorder travesal 利用前序和中续遍历构造二叉树
Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume tha ...
随机推荐
- 【BZOJ3798】特殊的质数 分块打表
[BZOJ3798]特殊的质数 Description 求[A,B]之间的质数个数,并且满足X=Q^2+P^2,P,Q是正整数. Input 第一行输入A,B Output 输出有多少组P,Q满足条件 ...
- hdu 1677 Nested Dolls【贪心解嵌套娃娃问题】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1677 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- 你不知道的Javascript(上卷)读书笔记之四 ---- 提升、this
1. 提升 使用var声明的变量声明和函数的声明(函数表达式不会)会被提升至所在函数作用域顶部 a. 从编译器角度出发 回忆一下, 中关于编译器的内容,引擎会在解释 JavaScript 代码之前首先 ...
- 传说中的MATLAB1.0(1984年DOS界面182K、运行良好)附下载
传说中的MATLAB1.0(1984年DOS界面182K.运行良好)附下载 你见过 MATLAB 最早的版本吗?下载一份 MATLAB 1.0,(只有182K, 只有20来个函数) 体会一下吧.MAT ...
- Python3+Selenium3自动化测试-(一)
完成环境的安装并测试之后,我们对Selenium有了一定的了解了,接下来我们继续驱动浏览器做一些基本操作: 窗口尺寸设置.网页截图.刷新.前进和后退 窗口尺寸设置 在测试过程中,我们可能会要求打开浏览 ...
- 全球第一张中文网络协议分析图——By 成都科来软件
网上内容比较全面的网络协议图并不是很多,这些网络协议图大多只遵循OSI,对于TCP/IP基本不支持,有些协议图表示也不够准确.另一方面,现在网上能找到的协议图全都是英文版本,使用起来不是很方便.国内的 ...
- 查找至少连续出现三次的所有数字/连续3天的日期【LeetCode】
编写一个SQL查询,查找至少连续出现三次的所有数字.+----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | ...
- android studio中取消关联git
Android studio取消关联Git 步骤如下 settings->version control 这里是已经取消关联的 如果关联 按住减号即可
- Redis六(管道)
管道 为什么使用管道? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处 ...
- python 脚本转成exe可执行程序
本文所使用的工具是cx_Freeze,相对py2exe和PyInstaller来说,cx_Freeze的兼容性更好,支持最新的Python 3.X,支持PyQT,并且可以跨平台支持Windows和Li ...