首页 > 其他分享 >【题解】codeforces 1746B Rebellion

【题解】codeforces 1746B Rebellion

时间:2022-11-07 12:44:38浏览次数:86  
标签:cout int 题解 cin codeforces ai 数组 Rebellion 指针

题意:给定一个只包含0和1的数组a,可以对a进行以下操作:

选定两个下标不同的元素ai和aj,将ai加到aj上,再从数组中删除ai

问最少操作多少次,可以让数组a变成单调非下降子序列(即ai<=aj, 1 <= i < j <= n)。

 

思路:双指针扫一遍数组中的元素,i = 0, j = n - 1,(下标均从0开始) 其中指针 i 任务是找到一个1,指针 j 的任务找到一个0,然后把ai加到aj上,然后删除ai,操作计数器加1。重复此过程直到两个指针相遇。以样例 1 0 0 1 1为例,首先i = 0, j = 2,然后 数组元素变成了 0 1 1 1,已经是一个单调非下降的子序列了,总共操作次数为1。

 

附上代码如下。

 

#include <iostream>
#include <stack>
using namespace std;

const int N = 100010;int n;
int a[N];

int main() {
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int t;
    cin >> t;
    while(t--) {
        cin >> n;
        bool flag = true;
        
        for(int i = 0; i < n; i++) {
            cin >> a[i];
            if(i && a[i] < a[i - 1]) flag = false;
        }
        if(flag) cout << 0 << endl;
        else {
            int i = 0, j = n - 1, cnt = 0;
            while(i < j) {
                while(i < n && !a[i]) i++;
                while(j >= 0 && a[j]) j--;
                
                if(i >= j) break;
                cnt++;i++;j--;
            }
            cout << cnt << endl;
        }
    }
    return 0;
}

 

标签:cout,int,题解,cin,codeforces,ai,数组,Rebellion,指针
From: https://www.cnblogs.com/xioa-chou/p/16865541.html

相关文章

  • CSP-S2022题解(T4待填)
    闲话\(\huge{寄}\)\(\text{T1}\)极限脑抽,删掉暴搜打错解,\(70pts\to0pts\);\(\text{T2}\)洛谷\(100pts\)但\(\infin\)\(40pts\),很慌;\(\text{T3}\)差点想到正......
  • Educational Codeforces Round 113 (Rated for Div. 2) D
    D.InconvenientPairs观察完样例我们发现发现有且仅有一个共同区间的才是一对这样我们直接记录x,y二分出他在哪个区间内check在共同区间的个数即可但是还有另一种解......
  • Codeforces Round #732 (Div. 1) B
    B.AquaMoonandChess简单计数观察样例我们发现如果是00111100这样是11是随便可以放置在任何地方但是要是011100这样的就会有个单独的1出来我们显然可以这样011......
  • 2022CSP-S题解
    这次是我第一次参加\(CSP-J/S\),所以我决定口胡一下这几道题目,由于\(J\)组过于简单,就不再叙述,如有问题请私信我\(/oh/oh/oh\)假期计划(holiday)我们可以先进行\(n\)......
  • 洛谷 P3951 [NOIP2017 提高组] 小凯的疑惑 题解
    LuoguP3951[NOIP2017提高组]小凯的疑惑题解注:设\(A,B\)是两个集合,则\(A\timesB\)表示\(A\)与\(B\)的笛卡儿积(直积)。笛卡儿积的定义为\(S\timesM:=\{(s......
  • 洛谷 P2606 [ZJOI2010]排列计数 题解
    LuoguP2606[ZJOI2010]排列计数题解题目描述称一个\(1\simn\)的排列\(p_1,p_2,\dots,p_n\)是Magic的,当且仅当\[\foralli\in[2,n],p_i>p_{\lfloori/2......
  • CSP-J1、S1 2021 赛后总结+简要题解
    postedon2021-09-1922:34:52|under题解|source人在佛山,考场在南外。学校信息队太强了,不仅租车还包午饭,点赞。来写一下我做题经历吧:S组官方答案:ABACCCCBDACC......
  • CF1685E The Ultimate LIS Problem 题解
    LinkCF1685ETheUltimateLISProblem题意概述给定长为\(2n+1\)的排列,对于\(m\)次交换操作,求出每次操作后一个能使排列\(\text{LIS}\leqn\)的循环移位\(k\),......
  • Codeforces Round #832 (Div. 2) D (预处理+二分)
    D.YetAnotherProblem观察题干发现一定要是odd考虑发掘性质发现之后还会将[l,r]长度为奇数的区间全部赋值成这个区间的异或和我们设长度为lenlen-1个偶数个异或为......
  • 题解 [ABC259Ex] Yet Another Path Counting
    首先,每种颜色互不干扰,因此考虑对每种颜色统计答案。有两种解法:枚举起始格子\((x,y)\)和结尾格子\((z,w)\),由组合数易知共有\(\binom{z-x+w-y}{z-x}\)种路径。时间......