求助刚刚月赛C题
  • 板块学术版
  • 楼主End1essSummer
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/2/18 18:16
  • 上次更新2023/10/24 00:26:37
查看原帖
求助刚刚月赛C题
453460
End1essSummer楼主2023/2/18 18:16

RT,我45.

#include<bits/stdc++.h>
using namespace std;
#define int long long
int T,a[10];
signed main(){
    cin>>T;
    while(T--){
        int ans=0;bool can1=1,can2=1;
        for(int i=1;i<=9;i++){
            cin>>a[i];
            //cout<<i<<' '<<a[i]<<'\n';
            if((i==4||i==5||i==3||i==9)&&a[i]){
                //cout<<i<<' ';
                //ans+=a[6]
                can1=0;
            }
                if((i==2||i==7||i==5||i==9)&&a[i]){
                    //ans+=a[8]
                    can2=0;
                }   
            
        }if(a[6]){
            ans+=a[6]-can1;
            a[6]=can1;
        }if(a[8]){
            ans+=a[8]-can2;
            a[8]=can2;
        }//cout<<ans<<' '<<can1<<' '<<can2<<'\n';
        ans+=min(a[3],a[4])+min(a[2],a[7])+min(a[5],a[9])*2;
        //cout<<ans<<' ';
        int now1min=min(a[3],a[4]),now2min=min(a[2],a[7]),now3min=min(a[5],a[9]);
        a[3]-=now1min;a[4]-=now1min;a[2]-=now2min;a[7]-=now2min;a[5]-=now3min;a[9]-=now3min;
        if(a[5]==a[9]){
            if((now1min||now2min)&&now3min){
                ans++;
            }if(now3min) ans--;
        }else{
            if(a[5]>a[9]){
                //a[5]-=a[9];
                ans+=min(a[3],a[5])+min(a[7],a[5]);
            }else{
                //a[9]-=a[5];
                ans+=min(a[2],a[9])+min(a[4],a[9]);
            }
        }cout<<ans<<'\n';
    }
}

思路就是分讨

出题人非要出这样这个题恶心选手吗 还乱序排序 生怕选手做出来

2023/2/18 18:16
加载中...