首页 > 其他分享 >Codeforces Round #615 (Div. 3) E

Codeforces Round #615 (Div. 3) E

时间:2022-11-24 21:44:58浏览次数:50  
标签:int Codeforces 615 Div Round 模板

E. Obtain a Permutation

我们显然可以按列来看
对于每一列 我们发现我们求的就是一个模式串与模板串的最大匹配+位移贡献
因为模板串肯定是不同元素 我们直接 对于模式串的每个元素算出它距离模板串自己的位置的位移贡献 开个桶就可以了
最后要注意的就是判断(a[j][i]-i-1)/m不能大于n了 不然在这一行根本没这么大的数

int Mod(int x,int P){return (x%P+P)%P;}
void solve(){
    int n,m;cin>>n>>m;
    vector<int>a[n];
    for(int i=0;i<n;i++)a[i].resize(m);
    for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>a[i][j];
    int ans=0;
    for(int i=0;i<m;i++){
        vector<int>v(n);
        for(int j=0;j<n;j++){
            if((a[j][i]-i-1)%m)continue;
            else if((a[j][i]-i-1)/m<n)v[Mod(j-((a[j][i]-i-1)/m),n)]++;
        }
        int mx=-INF;
        for(int j=0;j<n;j++)
            mx=max(mx,v[j]-j);
        ans+=n-mx;
    }
    cout<<ans<<endl;
}

标签:int,Codeforces,615,Div,Round,模板
From: https://www.cnblogs.com/ycllz/p/16923547.html

相关文章

  • Public NOIP Round #4(Div. 1) 题解
    T1:容易发现每种药品之间互不影响,对每种药品分别计算,对于它所涉及到的区间开个vector存下来,离散化之后差分,然后前缀和,数出只有它一个线段覆盖的段即可。时间复杂度\(\m......
  • Codeforces Round #613 (Div. 2) D
    D.Dr.EvilUnderscores看完题发现是异或不难按位考虑观察样例发现好像要是只要是一个分支的时候就可以为消除这一位的影响我们直接建出字典树发现要是该位只有一个......
  • Codeforces Round #829 (Div. 2)
    A.TechnicalSupport#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefpair<ll,ll>pll;constllN=2e5+10;constllinf=1e18;constl......
  • Codeforces Round #418 (Div. 2) D. An overnight dance in discotheque 题解
    圆由于没有相交,之间的关系要么毫无关系,要么就是包含,所以能形成树。直接包含的就是父节点。如果只有一组,不分前半夜后半夜的话,那么舒适度就是每棵树的根节点(深度为0)面积......
  • CodeForces - 311B Cats Transport
    题意:洛谷翻译超可爱的放一下qwq解:先设dp[i][j]为安排前i个人接前j只猫的最小等待时间。显然要给猫排个序。猫可以等人,但人不会等猫。于是算一下每只猫需要人在什么时......
  • Codeforces Round #621 (Div. 1 + Div. 2) D
    D.CowandFields对于每个点我们可以通过两次bfs求出他离1最近的距离和离n最近的距离对于连边就是让d1[i]+d2[j]+1去更新最短路我们要让d1[i]+d2[j]+1最大我们先直......
  • Codeforces Round #771 (Div. 2) E Colorful Operations
    ColorfulOperations珂朵莉树+树状数组||线段树单独维护点当前的值\(val\)和当前颜色的值\(tag\)这样就可以分开维护颜色和点的值,把复杂的操作\(2\)变成\(O(......
  • Codeforces Round #804 (Div. 2) C D
    C1700D2300所以我并没有做水题。考虑0的位置一定不动再考虑1的位置也不动考虑2的位置不妨设0的位置为L1的位置为R那么若2的位置在L~R之间那么2就可以随便放......
  • Public NOIP Round #3(Div. 1) 题解
    T2:先判\(1,n\)有连边的情况,也就是说明最短路一定是\(1\)直接走到\(n\)。特判掉\(k=1,n=2\)的情况,这是无解的。那么如果\(k\ge2\)就令\(1,n\)都为\(U\),其余随......
  • Codeforces Round #835 (Div. 4) A-G完全题解
    比赛链接A、点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){intT;cin>>T;while(T--){vector<int>G;for(inti=1;......