[BZOJ 1562][NOI 2009]变换序列(二分图匹配)
来源:互联网 发布:类似知乎的问答型app 编辑:程序博客网 时间:2024/06/06 07:25
题目链接
http://www.lydsy.com/JudgeOnline/problem.php?id=1562
题目大意
有一个
题目思路
如果只要判断合法性,这就是个裸的二分图匹配问题,将
然后很无脑地贡献了4发PE,坑爹的BZOJ居然不能输出行末空格和文末换行
代码
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#include <vector>#define MAXE 1100000#define MAXV 31000using namespace std;int n;int pre[MAXV];bool visit[MAXV];vector<int>G[MAXV];bool dfs(int u){ for(int i=0;i<(int)G[u].size();i++) { int v=G[u][i]; if(!visit[v]) { visit[v]=true; if(pre[v]==-1||dfs(pre[v])) { pre[v]=u; pre[u]=v; return true; } } } return false;}int main(){ memset(pre,-1,sizeof(pre)); scanf("%d",&n); for(int i=1;i<=n;i++) { int d; scanf("%d",&d); int a=i-d,b=i+d; if(a<=0) a+=n; if(b>n) b-=n; a+=n,b+=n; //与原有的1~n的数字区分开 if(a>b) swap(a,b); //保证a<b,这样邻接表里的边的终点才能是字典序 G[i].push_back(a),G[i].push_back(b); } for(int i=n;i>=1;i--) //注意是从后往前做二分图匹配 { memset(visit,false,sizeof(visit)); if(!dfs(i)) { printf("No Answer"); return 0; } } for(int i=1;i<n;i++) printf("%d ",pre[i]-n-1); printf("%d",pre[n]-n-1); //printf("\n"); return 0;}
0 0
- [BZOJ 1562][NOI 2009]变换序列(二分图匹配)
- BZOJ 1562 [NOI2009]变换序列 (二分图匹配)
- [二分图匹配] [NOI2009] BZOJ 1562——序列变换
- [BZOJ]1562: [NOI2009]变换序列 二分图匹配
- BZOJ 1562: [NOI2009]变换序列 【二分图匹配】【匈牙利】
- bzoj 1562: [NOI2009]变换序列 二分图最大匹配
- NOI 2009 变换序列
- NOI2009 变换序列【transform】二分图匹配
- 【二分图匹配】【NOI2009】变换序列
- [BZOJ1562]NOI2009变换序列|二分图匹配
- 【bzoj1562】 NOI2009 变换序列 二分图匹配
- BZOJ 1562 [NOI 2009] 二分图 解题报告
- bzoj 1562 变换序列
- [NOI2009]变换序列(二分图完美匹配)
- bzoj1562 NOI2009变换序列 二分图匹配(匈牙利)
- 【二分图最大匹配】BZOJ1562 [NOI2009]变换序列
- bzoj1562 [NOI2009]变换序列(二分图完美匹配+贪心)
- [BZOJ 2437][NOI 2011]兔兔与蛋蛋(二分图匹配)
- 【android】service
- http://blog.csdn.net/aiwobiezoukaicnew/article/details/42191619
- 需求评审的案例分析
- 软件需求评审之道
- 正确编写概要设计说明书
- [BZOJ 1562][NOI 2009]变换序列(二分图匹配)
- 网上找了个java随机生成密码的。。。发上来记录一下。
- mysql分页优化
- POJ 3661 Running(区间dp)
- 在Xcode下使用opencv
- 英语学习总结
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(6):音频
- scala 入门
- C/C++学习:判断某日是当年第几天