Codeforces Round 873 (Div. 2)

Codeforces Round 873 (Div. 2)

A - Divisible Array

思路:每个数为i时都为i的倍数,前n个数和为Sn=n*(n+1)/2,可知每个数再乘n,Sn必为n的倍数

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
const int N=3e5+5,INF=0x3f3f3f3f,Mod=998244353;

const double eps=1e-6;
typedef long long ll;
//#define int long long


int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t,n;
    cin>>t;
    while(t--){
        cin>>n;
        for(int i=1;i<=n;++i)cout<<i*2<<' ';
        cout<<'\n';
    }

    return 0;
}
View Code

 

 B - Permutation Swap

思路:求出每个数到最终位置的移动距离,求gcd

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
const int N=2e5+5,INF=0x3f3f3f3f,Mod=998244353;

const double eps=1e-6;
typedef long long ll;
//#define int long long


int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t,n,a[N],b[N];
    cin>>t;
    while(t--){
        cin>>n;
        int ans;
        for(int i=0;i<=n;++i)b[i]=0;
        for(int i=1;i<=n;++i){
            cin>>a[i];
            if(i==1)ans=abs(a[i]-i);
            else ans=__gcd(ans,abs(a[i]-i));
        }

        cout<<ans<<'\n';
    }

    return 0;
}
View Code

 

C - Counting Orders

思路:对于每个bi,统计a中大于其的个数;将b和a排序,用二分即可,统计时要减去已确定的bi

#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
const int N=2e5+5,INF=0x3f3f3f3f,Mod=1e9+7;

const double eps=1e-6;
typedef long long ll;
//#define int long long

bool cmp(int a,int b){
    return a>b;
}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t,n,a[N],b[N];
    cin>>t;
    while(t--){
        cin>>n;
        for(int i=0;i<n;++i)cin>>a[i];
        for(int i=0;i<n;++i)cin>>b[i];
        sort(b,b+n,cmp);
        sort(a,a+n);
        ll res=1;
        for(int i=0;i<n;++i){
            int p= upper_bound(a,a+n,b[i])-a;
            int c=n-p;//cout<<c<<' ';
            if(p==-1||c-i<0){
                res=0;
                break;
            }
            res=(res*(c-i)*1ll)%Mod;
        }
        cout<<res<<'\n';
    }

    return 0;
}
View Code

 

posted @ 2023-05-16 12:55  bible_w  阅读(45)  评论(0编辑  收藏  举报