zoukankan      html  css  js  c++  java
  • HDU 5821 Ball (排序)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5821

    有n个盒子,每个盒子最多装一个球。

    现在进行m次操作,每次操作可以将l到r之间盒子的球任意交换。

    问进行上述操作后,是否能变成指定的状态。

    将颜色相同的球,尽量靠最终状态近的分配。对于每次操作 按最终序号靠近进行排序。最后检查是否一致就行了。

    官方题解:
    假设有4个红球,初始时从左到右标为1,2,3,4。那么肯定存在一种方案,使得最后结束时红球的顺序没有改变,也是1,2,3,4。 那么就可以把同色球都写成若干个不同色球了。所以现在共有n个颜色互异的球。按照最终情况标上1,2,。。,n的序号,那么贪心的来每次操作就是把一个区间排序就行了。

     1 //#pragma comment(linker, "/STACK:102400000, 102400000")
     2 #include <algorithm>
     3 #include <iostream>
     4 #include <cstdlib>
     5 #include <cstring>
     6 #include <cstdio>
     7 #include <vector>
     8 #include <cmath>
     9 #include <ctime>
    10 #include <list>
    11 #include <set>
    12 #include <map>
    13 using namespace std;
    14 typedef long long LL;
    15 typedef pair <int, int> P;
    16 const int N = 1e3 + 5;
    17 P ball[N];
    18 int a[N], b[N];
    19 
    20 int main()
    21 {
    22     int t, n, m;
    23     scanf("%d", &t);
    24     while(t--) {
    25         scanf("%d %d", &n, &m);
    26         for(int i = 1; i <= n; ++i) {
    27             scanf("%d", a + i);
    28             ball[i].first = 0, ball[i].second = a[i];
    29         }
    30         for(int i = 1; i <= n; ++i) {
    31             scanf("%d", b + i);
    32             for(int j = 1; j <= n; ++j) {
    33                 if(!ball[j].first && ball[j].second == b[i]) {
    34                     ball[j].first = i; //最终
    35                     break;
    36                 }
    37             }
    38         }
    39         int l, r;
    40         while(m--) {
    41             scanf("%d %d", &l, &r);
    42             sort(ball + l, ball + r + 1);
    43         }
    44         bool ok = true;
    45         for(int i = 1; i <= n; ++i) {
    46             if(ball[i].first != i) {
    47                 ok = false;
    48                 break;
    49             }
    50         }
    51         printf("%s
    ", ok ? "Yes" : "No");
    52     }
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    [HAOI2012]高速公路(BZOJ2752)
    [SHOI2008]堵塞的交通traffic(BZOJ1018)
    AHOI2009 行星序列Seq (BZOJ1798)
    java注解问题
    回调方法举例
    log4j将日志文件保存到项目中
    ehCache+springMVC的简单实用
    MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
    mybatis配置log4j
    mybatis ---- 分页 (拦截器)
  • 原文地址:https://www.cnblogs.com/Recoder/p/5762518.html
Copyright © 2011-2022 走看看