首页 > 其他 > 详细

Codeforces Round #624 (Div. 3)

时间:2020-03-06 00:14:16      阅读:59      评论:0      收藏:0      [点我收藏+]

A - Add Odd or Subtract Even

诚心诚意的签到题。不过做的时候有点启发,也就是(a-b)%2的结果,可以是-1,0,+1。

B - WeirdSort

题意:给一个数组,以及指定其中一些位置是可以进行邻位交换的,可以交换任意多次。求是否能把数组变回有序。

题解:数据量太小,甚至可以检查每个可交换的位置是否需要交换。但是更明显的是一段连续的可邻位交换的位置可以直接sort。注意sort传入的下标的格式。

int a[1005];
int p[1005];

void test_case() {
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i)
        scanf("%d", &a[i]);
    for(int i = 1; i <= m; ++i)
        scanf("%d", &p[i]);
    sort(p + 1, p + 1 + m);
    for(int l = 1, r = 1; l <= m; l = r + 1, r = l) {
        while(r + 1 <= m && p[r + 1] == p[r] + 1)
            ++r;
        sort(a + p[l], a + p[r] + 1 + 1);
    }
    for(int i = 2; i <= n; ++i) {
        if(a[i] < a[i - 1]) {
            puts("NO");
            return;
        }
    }
    puts("YES");
    return;
}

Codeforces Round #624 (Div. 3)

原文:https://www.cnblogs.com/KisekiPurin2019/p/12423668.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!