首页 > 其他分享 >Codeforces Round #848 (Div. 2) A~C

Codeforces Round #848 (Div. 2) A~C

时间:2023-02-02 12:12:01浏览次数:34  
标签:pre int Codeforces 848 num maxn ans solve Div

A.

给出一个-1,1序列,操作是交换相邻位置的符号,一定要操作一次,求最大sum。

只有4种情况,扫一遍判断是否出现即可。

B

题面写得真清楚啊:)

#include<bits/stdc++.h>
using namespace std;
const int maxn=2*1e5+5;
int p[maxn],pos[maxn],a[maxn];
void solve(){
    int n,m,d;
    cin>>n>>m>>d;
    for(int i=1;i<=n;i++) cin>>p[i];
    for(int i=1;i<=n;i++) pos[p[i]]=i;
    for(int i=1;i<=m;i++) cin>>a[i];
    int ans=INT_MAX;
    for(int i=1;i<m;i++){
        int x=pos[a[i]],y=pos[a[i+1]];
        ans=min(ans,y-x);
        if(d<n-1) ans=min(ans,d-(y-x)+1);
    }
    cout<<max(ans,0)<<endl;
}
int main(){
    //freopen("lys.in","r",stdin);
    int t;cin>>t;
    while(t--){
        solve();
    }
}

C.相当于可以选a中的i种字符替换成任何想要的(i<=k),最大化(l,r)数量使得a[l,r]=b[l,r]

k最多10,类似状态压缩那样的二进制枚举

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){
    int n,k;
    cin>>n>>k;
    string a,b;
    cin>>a>>b;
    int cnta=0;
    map<char,int>mp;
    mp.clear();
    for(int i=0;i<n;i++){
        if(!mp[a[i]]){
            mp[a[i]]=++cnta;
        }
    }
    ll out=0;
    for(int i=0;i<(1<<cnta);i++){
        if(__builtin_popcount(i)>k) continue;
        int pre=-1;
        ll num=0;
        ll ans=0;
        for(int j=0;j<n;j++){
            if(a[j]==b[j]||(mp[a[j]]&&(i >> (mp[a[j]]-1) & 1))){
                if(pre==-1) pre=j,num=1;
                else num++;
            }
            else {
                pre=-1;
                ans+=num*(num-1)/2+num;
                num=0;    
            }
        }
        if(pre!=-1) ans+=num*(num-1)/2+num;
        out=max(ans,out);
    }
    cout<<out<<endl;
}
int main(){
    //freopen("lys.in","r",stdin);
    int t;cin>>t;
    while(t--){
        solve();
    }
}

 

标签:pre,int,Codeforces,848,num,maxn,ans,solve,Div
From: https://www.cnblogs.com/liyishui2003/p/17085590.html

相关文章

  • Codeforces Round #848 (Div. 2) A~F 题解
    A.FlipFlopSum能换\(-1,-1\)就换,不能能换\(1,-1\)或\(-1,1\)也可以,否则只能换\(1,1\)。B.TheForbiddenPermutation如果原序列一开始就是好的那就结束,否则......
  • Codeforces1778E 【线性基】【换根DP】
    我,差30秒,就能AC这道题,我知道错哪的时候是倒计时30,不记得优先级想赌一把,因为我没有先写括号的习惯,所以倒计时14的时候交了,然后想改了括号再交一发,改了括号之后,比赛结束了。......
  • Educational Codeforces Round 135 (Rated for Div. 2) F. Fishermen 二分图最小带权
    不用真的建图,真的建图两人之间的代价不好算。等价转化为对给定的ai找出bi,使得bi=k*a[i],且互不相同k的上界为n,简易证明:[若a[i]互不相等,全部选a[i]*n会比a[i]*(n+1)更好;......
  • 2.1 vp Codeforces Round #842 (Div. 2)
    A-GreatestConvex题意给出k,要找出最大的x(1<=x<=k),使x!+(x-1)!是k的倍数,问是否存在,为多少思路变换一下即可得原式为(x-1)!(x+1),若要满足条件,令x=k-......
  • Educational Codeforces Round 134 (Rated for Div. 2) F - Matching Reduction 最小
    真傻逼Σ(☉▽☉"a——wa23是因为数组开小了,wa53是数组开大了爆了(不能任性随便开了问最少删多少点使得最大匹配数-1这题就考一个结论:最大匹配数==最小点覆盖 所以很......
  • Codeforces Round #843 (Div. 2)
    感觉难度递减?B.GardenerandtheArray题意:给出一个序列,问其是否存在两个不同的子序列,其或运算之和相同。解:题目很友好,直接给出一个数二进制下哪些位为1.如果一个数为......
  • CodeForces 607B Zuma
    CF607BZumalink洛谷linkCodeForces题意Genos最近在他的手机上下载了祖玛游戏。在祖玛游戏里,存在\(n\)个一行的宝石,第\(i\)个宝石的颜色是\(C_i\)。这个游戏......
  • Codeforces Round #839 (Div. 3) F. Copy of a Copy of a Copy
    题目链接:https://codeforces.com/problemset/problem/1772/F  题目的大致意思是:给你一个01矩阵,然后你可以进行俩种操作:1:你可以将一个 不在边缘的 并且......
  • Codeforces Round #548 (Div. 2) E. Maximize Mex 二分图+逆向加边
    题意:有n个学生,m个社团,每个学生只属于一个社团。在接下来的d天内每天会离开一个学生(再也回不来了)。现要从剩下的每个社团中挑选一个学生组成team,并最大化他们的mex。 ......
  • Educational Codeforces Round 126 (Rated for Div. 2) D. Progressions Covering(贪心
    题目https://codeforces.com/problemset/problem/1661/D题意给一个长度为n的数组a,和一个正数k,每次在数组a中选取连续的k个元素每个元素减去1,2,3……k问至少要......