bzoj 4780: [Usaco2017 Open]Modern Art 2 (模拟)
来源:互联网 发布:java岗位管理制度 编辑:程序博客网 时间:2024/06/04 19:15
题目描述
传送门
题目大意:给定一个序列,序列上每个点有一个颜色。每一轮可以选择一些没有交集的区间,将每个区间涂上一种颜色。要求全程每个颜色最多被涂一个区间,求最少涂多少轮
题解
其实就是求一个合法的括号序列的最大深度。
注意“0 for a blank cell”这句话,刚开始没看到,结果不停的WA。。。。QAQ
代码
#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<cstdio>#define N 300003using namespace std;int mx[N],mn[N],val[N],n,st[N],top,ins[N];struct data{ int x,y;}a[N];int cmp(data a,data b){ return a.x<b.x;}int main(){ freopen("a.in","r",stdin); freopen("my.out","w",stdout); scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&val[i]); memset(mn,0x3f,sizeof(mn)); for (int i=1;i<=n;i++) mn[val[i]]=min(mn[val[i]],i), mx[val[i]]=max(mx[val[i]],i); int cnt=0; for (int i=1;i<=n;i++) if (mn[i]!=0x3f3f3f3f) { cnt++; a[cnt].x=mn[i]; a[cnt].y=i; cnt++; a[cnt].x=mx[i]; a[cnt].y=i; } sort(a+1,a+cnt+1,cmp); int ans=0; for (int i=1;i<=cnt;i++) if (ins[a[i].y]) { if (st[top]!=a[i].y) { printf("-1\n"); return 0; } st[top--]=0; } else{ st[++top]=a[i].y; ins[a[i].y]=1; ans=max(ans,top); } printf("%d\n",ans);}
0 0
- bzoj 4780: [Usaco2017 Open]Modern Art 2 (模拟)
- BZOJ 4780 Usaco2017 Open Modern Art 2
- [Usaco2017 Open]Modern Art 2
- BZOJ 4776 Usaco2017 Open Modern Art
- BZOJ 4776([Usaco2017 Open]Modern Art-想法题)
- bzoj 4776: [Usaco2017 Open]Modern Art 二维差分
- bzoj4776[Usaco2017 Open]Modern Art
- 【usaco2017 March Platinum】Modern Art
- BZOJ 4778 Usaco2017 Open COWBASIC 矩阵乘法
- BZOJ 4781 Usaco2017 Open Paired Up
- BZOJ 4782 Usaco2017 Open Bovine Genomics
- BZOJ 4781: [Usaco2017 Open]Paired Up 贪心
- bzoj 4781: [Usaco2017 Open]Paired Up
- BZOJ 4777 Usaco2017 Open Switch Grass Kruskal+线段树
- BZOJ 4779 Usaco2017 Open Bovine Genomics Trie树
- bzoj 4777: [Usaco2017 Open]Switch Grass 线段树+最小生成树+set
- bzoj 4756: [Usaco2017 Jan]Promotion Counting (线段树合并)
- bzoj4781[Usaco2017 Open]Paired Up
- 金融数据类——债券,全球股指
- C++primer学习笔记-----4.3逻辑和关系运算符
- 网络抓包工具Charles使用详解
- android开发-验证邮箱输入是否合法
- Density Peak改进(PCA/KNN)
- bzoj 4780: [Usaco2017 Open]Modern Art 2 (模拟)
- JavaScript 中的 this 用法以及 call(apply) 的理解
- ES6 箭头函数(=>)
- OracleDBA之表管理
- Libevent源码学习---bufferevent
- android 键盘遮挡解决办法
- js判断复选框是否全选
- 关于Thread的中断解释
- 基本概念