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 ...
随机推荐
- Pycharm创建Django admin用户名和密码
1.Tools>Run manage.py Task 2.依次输入: makemigrations migrate createsuperuser 如: manage.py@production ...
- Understanding Tensorflow using Go
原文: https://pgaleone.eu/tensorflow/go/2017/05/29/understanding-tensorflow-using-go/ Tensorflow is no ...
- Oracle database精装版11gR2入门详细连接教程
对于11g本身比较简单,适合学习者使用,对电脑要求相对较低. 自己一个人单机学习使用. 工具/原料 Oracle Database Express Edition 11g Release 2安装包 ...
- PHP错误处理,无法显示验证码。。无法显示首页等莫名其妙的500
use the date.timezone setting or the date_default_timezone_set() 这是由于调用date时,若timezone设置不正确所产生的E_NOT ...
- 多个StoryBoard之间的跳转
iOS项目中可以将同一业务流程的页面归置到一个StoryBoard中,项目中必然会包含多个StroryBoard,可以利用跳转,实现项目的不同业务流程页面间的跳转切换. 实现思路: 1,项目(Proj ...
- http://www.nirsoft.net/about_nirsoft_freeware.html
http://www.nirsoft.net/about_nirsoft_freeware.html
- spring 攻略
1.5 指定Bean引用 为了Bean之间相互访问,在Bean配置文件中通过<ref>元素为Bean属性或构造程序参数指定Bean引用. <property name="p ...
- Spring 框架的事务管理
1. Spring 框架的事务管理相关的类和API PlateformTransactionManager 接口: 平台事务管理器(真正管理事务的类); TransactionDefinition 接 ...
- win7查看某个端口被占用的解决方法
1.开始---->运行---->cmd,或者是window+R组合键,调出命令窗口. 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是491 ...
- Sql Server 中 GAM、SGAM、PAM、IAM、DCM 和 BCM 的详解与区别
Sql Server 中 GAM.SGAM.PAM.IAM.DCM 和 BCM 的详解与区别 GAM.SGAM.PAM.IAM.DCM 和 BCM 都是 SQL Server 中用来管理空间分配的 ...