【GDOI模拟】排列
来源:互联网 发布:嵌入式底层软件开发 编辑:程序博客网 时间:2024/06/08 07:30
Description
给你M个对1到N的排列的特征,特征有两种:
1 x y v:排列的第x个数到第y个数之间的最大值为v
2 x y v:排列的第x个数到第y个数之间的最小值为v
要求你还原出这个排列。
Solution
刷水有益身心健康。
既然是求方案,数据范围又很小,那么明显的要用把点向权值连边。
然后他每次给出范围之后再进行删边。
最后,二分图最大匹配。
Code
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=405;int i,j,k,l,t,n,m,num,S,T,aa,b,c,dd,ans[maxn],po;//int first[maxn],next[maxn],last[maxn],chang[maxn],fan[maxn];int a[maxn][maxn],p[maxn],d[maxn];bool bz[maxn];bool bfs(){ int data[maxn],head=0,tail=1,now,i,ber; memset(data,0,sizeof(data)); memset(d,0,sizeof(d));d[S]=1; ber=d[0]; data[1]=S; while(head<tail){ now=data[++head]; fo(i,S,T){ if(!d[i]&&a[now][i]>0){ d[i]=d[now]+1; data[++tail]=i; } } } return d[T]!=0;}int dinic(int x,int y){ int i,j,k=0,l=0; if(x==T){ return y; } fo(i,S,T){ if(d[x]+1==d[i]&&a[x][i]>0){ k=dinic(i,min(a[x][i],y)); if(k){ l+=k; a[x][i]-=k;a[i][x]+=k; y-=k; if(y==0)break; } } } if(l==0)d[x]=-1; return l;}int main(){ scanf("%d%d",&n,&m); S=0;T=2*n+1; fo(i,1,n)fo(j,n+1,2*n)a[i][j]=1; fo(i,1,n)a[S][i]=1,a[i+n][T]=1; fo(i,1,m){ scanf("%d%d%d%d",&aa,&b,&c,&dd); if(aa==1){ fo(j,b,c){ fo(k,dd+1,n)a[j][k+n]=-100; } } else{ fo(j,b,c){ fo(k,1,dd-1)a[j][k+n]=-100; } } fo(j,1,b-1)a[j][dd+n]=-100;fo(j,c+1,n)a[j][dd+n]=-100; } while(bfs())po+=dinic(S,n); fo(i,1,n){ bool az=0; fo(j,n+1,2*n){ if(a[i][j]==0){az=1;break;} } if(!az){ printf("-1\n");return 0; } else{ ans[i]=j-n; } } fo(i,1,n){ printf("%d ",ans[i]); }}
1 0
- 【GDOI模拟】排列
- [GDOI模拟2015.08.08]排列
- GDOI 3.21 模拟总结
- 【GDOI】模拟8.1总结
- 【GDOI】模拟8.2总结
- 【GDOI】模拟8.3总结
- GDOI模拟8.1
- 【GDOI 2013模拟】屏保
- GDOI模拟 20150806
- GDOI模拟8.6总结
- GDOI模拟8.7总结
- 【GDOI 2013模拟】Processer
- GDOI模拟 蜘蛛侠
- 【GDOI 2013模拟】总结
- gdoi 8.20模拟总结
- GDOI 8.21模拟
- GDOI模拟8.21总结
- GDOI模拟 2.26
- Swift体验
- Dubbo学习(九):dubbo管理控制台(Admin)安装和使用
- 1017 非常可乐
- JAVA动态规划(五)--01背包问题及装箱问题
- 【BZOJ3620】似乎在梦中见过的样子【KMP】【暴力】
- 【GDOI模拟】排列
- java基础(15)-- 浅析I/O模型
- Java线程中run和start方法的区别
- LeetCode|Count Primes
- [5] OFDM符号 OFDM符号的多径Rayleigh信道链路
- iOS 蓝牙连接小米手环
- SWUST OJ 1693 冰壶运动
- coursera 神经网络
- preface