开春第一赛题解

B - Super Mancunian

题目链接
一个最小生成树板子题,最后需要求有多少可行路,即加入n-2条边后孤立的点的度即可;

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <stack>
#include <cmath>
#include <map>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
#define ll long long
#define mem(f,x) memset(f,x,sizeof(f));
#define sca(x) scanf("%d",&x);
#define scl(x) scanf("%lld",&x);
#define sca2(x,y) scanf("%d %d",&x,&y);
#define sca3(x,y,z) scanf("%d %d %d",&x,&y,&z);
#define pu puts("");
#define pri(x) printf("%d\n",x);
#define mp make_pair
#define pb push_back
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define ull unsigned long long
#define PI acos(-1)
const int maxn=5e5+10;
struct rec{
    ll x,y,z;
}edge[maxn];
ll fa[maxn],n,m;
ll ans;
bool operator <(rec a ,rec b){
    return a.z<b.z;
}
ll get(ll x){
    if(x==fa[x]) return x;
    return fa[x] = get(fa[x]);
}
int main(){
    cin>>n>>m;
    for(ll i=1;i<=m;i++){
        cin>>edge[i].x>>edge[i].y>>edge[i].z;
    }
    sort(edge+1,edge+m+1);
    for(ll i=1;i<=n;i++)fa[i]=i;
    int cv=2;
    int en=-1;
    ll maxx=0;
    int tot=0;
    for(ll i=1;i<=m;i++){
        int x=get(edge[i].x);
        int y=get(edge[i].y);
        if(x==y)continue;
        ans+=edge[i].z,fa[x]=y,cv++;
        maxx=edge[i].z;
    }
    for(ll i=1;i<=n;i++)fa[i]=i;
    for(ll i=1;i<=m;i++){
        int x=get(edge[i].x);
        int y=get(edge[i].y);
        if(x==y)continue;
        if(edge[i].z>=maxx) tot++;
        else {
            fa[x]=y;
        }
    }
    cout<<ans-maxx<<" "<<tot<<endl;
    return 0;
}

C - Parity Game

题目链接
签到题:理解题意即可,

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <stack>
#include <cmath>
#include <map>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
#define ll long long
#define mem(f,x) memset(f,x,sizeof(f));
#define sca(x) scanf("%d",&x);
#define scl(x) scanf("%lld",&x);
#define sca2(x,y) scanf("%d %d",&x,&y);
#define sca3(x,y,z) scanf("%d %d %d",&x,&y,&z);
#define pu puts("");
#define pri(x) printf("%d\n",x);
#define mp make_pair
#define pb push_back
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define ull unsigned long long
#define PI acos(-1)
const int MX = 2e5 + 7;
int main(){
    int x,y;
    int ans=0;
    sca(x);
    rep(i,0,x-1){
        sca(y);
        ans+=y;
    }
    if(ans%2==1){
        if(x==1)puts("-1");
        else puts("1");
    }
    else puts("0");
    return 0;
}

F - Combo Meal

题目链接
小学数学题

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <stack>
#include <cmath>
#include <map>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
#define ll long long
#define mem(f,x) memset(f,x,sizeof(f));
#define sca(x) scanf("%d",&x);
#define scl(x) scanf("%lld",&x);
#define sca2(x,y) scanf("%d %d",&x,&y);
#define sca3(x,y,z) scanf("%d %d %d",&x,&y,&z);
#define pu puts("");
#define pri(x) printf("%d\n",x);
#define mp make_pair
#define pb push_back
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define ull unsigned long long
#define PI acos(-1)
const int MX = 2e5 + 7;
int main(){
    int x,y;
    int ans=0;
    sca(x);
    rep(i,0,x-1){
        int a,b,c;
        sca(a)sca(b)sca(c)
        pri(a+b-c);
    }
    return 0;
}

H - Constructing a Number

题目链接
小学数学题:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <stack>
#include <cmath>
#include <map>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
#define ll long long
#define mem(f,x) memset(f,x,sizeof(f));
#define sca(x) scanf("%d",&x);
#define scl(x) scanf("%lld",&x);
#define sca2(x,y) scanf("%d %d",&x,&y);
#define sca3(x,y,z) scanf("%d %d %d",&x,&y,&z);
#define pu puts("");
#define pri(x) printf("%d\n",x);
#define mp make_pair
#define pb push_back
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define ull unsigned long long
#define PI acos(-1)
const int MX = 2e5 + 7;
int cl(int x){
    int ans=0;
    while(x){
        ans+=x%10;
        x/=10;
    }
    return ans;
}
int main(){
    int x,y,s,t;
   sca(x);
   while(x--){
       sca(y);
       int ans=0;
       rep(i,1,y){
           sca(s);
           ans+=cl(s);
       }
       if(ans%3==0) puts("Yes");
       else puts("No");
   }
    return 0;
}

J - Halloween Sale

题目链接
签到题

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <stack>
#include <cmath>
#include <map>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
#define ll long long
#define mem(f,x) memset(f,x,sizeof(f));
#define sca(x) scanf("%d",&x);
#define scl(x) scanf("%lld",&x);
#define sca2(x,y) scanf("%d %d",&x,&y);
#define sca3(x,y,z) scanf("%d %d %d",&x,&y,&z);
#define pu puts("");
#define pri(x) printf("%d\n",x);
#define mp make_pair
#define pb push_back
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define ull unsigned long long
#define PI acos(-1)
const int MX = 2e5 + 7;
int cl(int x){
    int ans=0;
    while(x){
        ans+=x%10;
        x/=10;
    }
    return ans;
}
int main(){
    int x,y,s,t;
   sca(x);
   while(x--){
       sca(y);
       int ans=0;
       rep(i,1,y){
           sca(s);
           ans+=cl(s);
       }
       if(ans%3==0) puts("Yes");
       else puts("No");
   }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值