首页 > 其他分享 >16 Educational Codeforces Round 142 (Rated for Div. 2)C. Min Max Sort(递归、思维、dp)

16 Educational Codeforces Round 142 (Rated for Div. 2)C. Min Max Sort(递归、思维、dp)

时间:2024-03-03 17:22:05浏览次数:18  
标签:Sort Educational Rated 一步 int rep Min long define

C. Min Max Sort

很不错的一道题目,不过脑电波和出题人每对上,\(qwq。\)
正难则反。
我们考虑最后一步是怎么操作的。
最后一步一定是对\(1\)和\(n\)进行操作
那么上一步呢?
上一步应该是对\(2\)和\(n-1\)
以此类推
第一步应该是对\(\frac{n}{2}\)和\(\frac{n}{2}+1\)
我们的答案应该是上一步之前的所有操作次数加上最后一步的操作次数。
然后对于\(i \in [1, \frac{n}{2}]\)并不是所有\(i\)都需要进行操作的。
如果本身\(i\)到\(n-i+1\)已经是有序的就不需要进行操作了。
如何判断是不是有序的呢?
这里预处理出来一个\(f_i\)表示,以\(i\)结尾的最长连续上升序列的长度。
如果\(f[n-i+1]<n-i+1-i+1\)说明这个\(i\)到\(n-i+1\)不是有序的则需要进行一次操作


#include <bits/stdc++.h>

#define int long long
#define rep(i, a, b) for(int i = (a); i <= (b); ++i)
#define fep(i, a, b) for(int i = (a); i >= (b); --i)
#define _for(i, a, b) for(int i=(a); i<(b); ++i)
#define pii pair<int, int>
#define pdd pair<double,double>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back
#define vi vector<int>

using namespace std;
const int maxn = 2e5 + 10;
int n,a[maxn],f[maxn];

void solve() {
    cin>>n;
    int lst=0;
    rep(i,1,n){
        f[i]=0;
        cin>>a[i];
    }
    rep(i,1,n) {
        f[a[i]]=f[a[i]-1]+1;
    }
    int ans=0;
    fep(i,n/2,1){
        if(f[n-i+1]<n-i+1-i+1){
            ans++;
        }
    }
    cout<<ans<<endl;
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
//	freopen("C:\\Users\\24283\\CLionProjects\\untitled2\\1.in", "r", stdin);
    int _;
    cin >> _;
    while (_--)
        solve();
    return 0;
}

标签:Sort,Educational,Rated,一步,int,rep,Min,long,define
From: https://www.cnblogs.com/cxy8/p/18050324

相关文章

  • Educational Codeforces Round 143 (Rated for Div. 2)C. Tea Tasting(前缀和+二分、
    C.TeaTasting思路这里枚举有三种思路然后经过考虑3是最可行的,然后接着考虑如何计算贡献这里在实现的时候用了一个差分数组,因为我们需要记录第i个茶师它喝了多少个\(b_i\)以及不满\(b_i\)的用\(c_i\)记录,最后计算一下答案即可。#include<bits/stdc++.h>#defineintlon......
  • C# List.Sort()
    List.Sort():对List所有元素按条件进行排序。1usingSystem.Collections;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingUnityEngine;56publicclassTest:MonoBehaviour7{8///<summary>9///所有学生10///</summa......
  • 14 CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!)C. Tenzing and Balls(dp+前缀
    思路:dp还是挺明显的,思路可以参考最长上升子序列有点dp的感觉\(f[i]\)表示考虑前\(i\)个数,的最大值当前数有两种删或不删不删:\(f[i]=f[i-1]\);删:\(f[i]=max{f[j-1]+i-j+1}\)这个转移是\(O(n^2)\)的显然时间上来不及考虑优化,第一层循环一定是省不了的考虑优化掉第二层循环......
  • Educational Codeforces Round 162 (Rated for Div. 2)
    Preface开学了没时间组队训练就抽空把之前欠下的CF补一补这场当时玩《拔作岛》上头了忘记有比赛了,等想起来的时候已经快结束了就没现场打赛后补题发现A~E都很简单,F的话一个地方没太想清看了题解才会A.MovingChips签到,找一个极小的且包含了所有\(1\)的区间,这个区间中\(0\)......
  • CF1923 Educational Codeforces Round 162 (Rated for Div. 2)
    C.FindB给出一个数组A,对于q个询问,每个询问给出[l,r],对于A的子数组[l,r],问是否存在一个相同大小的数组B,使得两个数组的和相同,且任意相同下标的元素不同?Solution:A中任意一个大于1的元素,可以把他变成1,多余的那部分给到其他位置的元素上(如最后一个)对于等于1的元素,把......
  • Educational Codeforces Round 162 (Rated for Div. 2)
    目录写在前面ABCDE写在最后写在前面比赛地址:https://codeforces.com/contest/1923。为唐氏儿的寒假带来了一个构式的结局,飞舞一个。天使骚骚不太行啊妈的,推了三条线了感觉剧情太白开水了,咖啡馆也是这个熊样子、、、A签到。显然最优的策略是不断地选择最右侧的1进行操作,每......
  • Educational Codeforces Round 162 (Rated for Div. 2)
    EducationalCodeforcesRound162(RatedforDiv.2)A-MovingChips解题思路:模拟一下,不难发现是\(1\)之间\(0\)的个数。代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;usingpii=pair<ll,ll>;#definefifirst#definesesecondusin......
  • Educational Codeforces Round 162 (Rated for Div. 2)
    不会F的场。A答案是最左的\(1\)和最右的\(1\)之间的\(0\)的个数。Code#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;intmain(){ ios::sync_with_stdio(false); cin.tie(0); intt; cin>>t; while(t--){ intn; cin>>n......
  • Educational Codeforces Round 162 [Rated for Div. 2]
    第二次,三道题,剩下的回学校再补,总结:还是需要多练习A:让数列里所有的1都挨在一起,可以看出,相邻1之间有多少个0就需要操作几次,特判:当只有一个1或者原本全是1就输出0;voidsolve(){cin>>n;inttop1=0,top2=0,cnt=0;memset(a,0,sizeof(a));memset(b,0,siz......
  • P10139 [USACO24JAN] Nap Sort G 题解
    DescriptionBessie正在尝试使用她自己的排序算法对一个整数数组进行排序。她有一堆共\(N\)(\(1\leN\le2\cdot10^5\))个整数\(a_1,a_2,\ldots,a_N\)(\(1\lea_i\le10^{11}\)),她将会按排序顺序将这些数放入一个单独的数组中。她反复查找这堆数中的最小数,将其删除,同时将其添加到......