#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
int t,n,k;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>t;
    while(t--){
        cin>>n>>k;
        if(n<k){
            cout<<k-n<<"\n";
        }else{
            cout<<(n+k)%2<<"\n";
        }
    }
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
int t,a1,b1,c1,a2,b2,c2;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>t;
    while(t--){
        int tmp;
        cin>>a1>>b1>>c1;
        cin>>a2>>b2>>c2;
        int ans=0;
        ans+=(min(c1,b2)*2);
        tmp=min(c1,b2);
        c1-=tmp;
        b2-=tmp;
        tmp=min(c2,a1);
        c2-=tmp;
        a1-=tmp;
        if(!c2) cout<<ans<<"\n";
        else{
            if(c1){
                tmp=min(c1,c2);
                c1-=tmp;
                c2-=tmp;
                //cout<<c1<<" "<<c2<<"\n";
            }
            ans-=c2*2;
            cout<<ans<<"\n";
        }
    } 
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int N=1e5+10;
int t,n;
int a[N],b[N];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>t;
    while(t--){
        cin>>n;
        int mim=0x3f3f3f3f;
        for(int i=1;i<=n;++i){
            cin>>a[i];
            b[i]=a[i];
            mim=min(a[i],mim);
        }
        sort(b+1,b+1+n);
        int f=1;
        for(int i=1;i<=n;++i){
            f=f&((b[i]==a[i])||(a[i]%mim==0));
        }
        if(f)
            cout<<"YES\n";
        else
            cout<<"NO\n";
    }
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#pragma GCC optimize(2)
const ll mod=1e9+7;
int t,n,m;
int tot;
const int N=1e5+10;
int head[N];
ll rec[N],p[N],con[N];
//vector<ll>cnt;
struct Edge{
    int to,next;
}e[N*2];
void add(int u,int v)
{
    e[++tot].to=v;
    e[tot].next=head[u];
    head[u]=tot;
}
void dfs(int u,int fa)
{
    rec[u]=1ll;
    for(int i=head[u];i;i=e[i].next){
        int v=e[i].to;
        if(v==fa) continue;
        dfs(v,u);
        rec[u]+=rec[v];
        //cnt.push_back(rec[v]);
    }
    con[u-1]=rec[u]*(n*1ll-rec[u]);//路径贡献
}
void init()
{
    tot=0;
    memset(head,0,sizeof(int)*(n+1));
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>t;
    while(t--){
        cin>>n;
        init();
        for(int i=0;i<n-1;++i){
            int u,v;
            cin>>u>>v;
            add(u,v);
            add(v,u);
        }
        cin>>m;
        for(int i=1;i<=m;++i) cin>>p[i];
        dfs(1,0);
        //sort(p+1,p+1+m);
        //sort(cnt.begin(),cnt.end());
        sort(con+1,con+n);
        if(m<n-1){
            while(m<n-1){
                p[++m]=1;
            }
            sort(p+1,p+n);
        }else{
            sort(p+1,p+1+m);
            while(m!=n-1){
                p[m-1]=((p[m]%mod)*(p[m-1]%mod)%mod);
                m--;
            }
        }
        //sort(p+1,p+1+m);
        ll ans=0;
        for(int i=1;i<=n-1;++i){
            ans+=((p[i]%mod)*(con[i]%mod))%mod;
        }
        cout<<ans%mod<<"\n";
    }
    return 0;
}
Codeforces Round #665 (Div. 2) 题解
原文:https://www.cnblogs.com/DrumWashingMachine-Lhy-NoobInCsu/p/13547874.html