hdu 5821 2016 Multi-University Training Contest 8 Ball 解题报告
来源:互联网 发布:mac安装homebrew失败 编辑:程序博客网 时间:2024/06/05 05:59
题意:
给你n个盒子,每个盒子里可能有球或者没有,告诉你球的颜色,没有就是0,m次操作,每次操作可以把一个区间里的球都拿出来,重新放进去,问你m次操作后能不能到达目标状态 每个盒子最多放一个球
题解:
这是一道贪心
假如对于这样一排盒子
1 0 0 1 1 3 2 1
目标状态是 3 2 0 0 1 1 1 1
我们将初始状态颜色为1的球拿出来,标号为 a1 a2 a3 a4 ,
易知如果能到达目标状态,一定有一种方法使得目标状态变为 3 2 0 0 a1 a2 a3 a4
所以做法是将末状态的所有球拿出来标号以得知初始的标号(没有球就将他当成颜色为0的球拿出来),记录每种颜色有哪些序号,然后按初始同颜色球的排列顺序给这个球标上这个颜色的序号,每次操作对给定的区间排序,操作完判断一下就行了
code:
#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<ctime>#include<ctime>#include<vector>#include<string>#include<bitset>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>#define ll long longusing namespace std;const int maxn = 1010;int a[maxn],b[maxn];int id[maxn][maxn],pos[maxn];int n,m;int main(){int t,l,r;scanf("%d",&t);while( t-- ){scanf("%d%d",&n,&m);for( int i=1;i<=n;i++ ) scanf("%d",&a[i]);for( int i=1;i<=n;i++ ){scanf("%d",&b[i]);id[b[i]][0] = 0;pos[b[i]] = 0;}int k=0;for( int i=1;i<=n;i++ ){k++;id[b[i]][++id[b[i]][0]] = k;b[i] = k;}for( int i=1;i<=n;i++ ){k = ++pos[a[i]];a[i] = id[a[i]][k];}while( m-- ){scanf("%d%d",&l,&r);sort( a+l,a+r+1 );}bool flag = true;for( int i=1;i<=n;i++ )if( b[i] ){if( a[i] != b[i] ){flag = false;break;}}if( flag == true ) printf("Yes\n");else printf("No\n");}return 0;}
0 0
- hdu 5821 2016 Multi-University Training Contest 8 Ball 解题报告
- HDU 5821 Ball 2016 Multi-University Training Contest 8
- hdu 5823 2016 Multi-University Training Contest 8 color II 解题报告
- hdu 5828 2016 Multi-University Training Contest 8 Rikka with Sequence 解题报告
- hdu 5821 Ball(2016 Multi-University Training Contest 8——贪心+排序)
- 2014 Multi-University Training Contest 解题报告
- HDU-5821 <2016 Multi-University Training 8> Ball (贪心)
- 2016 Multi-University Training Contest 1----解题报告
- 2016 Multi-University Training Contest 2----解题报告
- 2016 Multi-University Training Contest 3----解题报告
- 2016 Multi-University Training Contest 4 解题报告
- 2016 Multi-University Training Contest 3 解题报告
- 2016 Multi-University Training Contest 5 解题报告
- 2016 Multi-University Training Contest 6 解题报告
- 【解题报告】2016 Multi-University Training Contest 4
- 【解题报告】2016 Multi-University Training Contest 3
- 2016 Multi-University Training Contest 8 1001 Ball
- hdu 5730 2016 Multi-University Training Contest 1 Shell Necklace 解题报告
- HDU-5538 House Building(暴力)
- 十大免费PHP+MySql平台内容管理系统
- 进程、线程
- 分分钟搞定自定义控件之组合控件--自定义View入门篇
- 也学习Java/JVM/GC (三)
- hdu 5821 2016 Multi-University Training Contest 8 Ball 解题报告
- 常见的css的一些注意点
- 回文链表
- C++远征之起航篇知识点
- 51nod 1105 第K大的数(二分)
- schema文件相关知识
- GridLayout学习使用
- js对Date类和String的扩展
- 一文读懂机器学习,大数据/自然语言处理/算法全有了……