求调
查看原帖
求调
1107845
ziyaojia楼主2025/7/25 16:39

想写10分的部分分,结果一分没得,求调

#include<bits/stdc++.h>
using namespace std;
int n,m,x,v,y;
char sp[2001];
struct node{
    string sf;//身份和猪主眼中的身份
    char s[3001];//手牌
    int hp=4,flag,cnt=4,zsf=-1;//血量,有没有装备,是否死亡和手牌数
    bool kill,sw;
}pig[21];
int check_win(){
    if(pig[1].sw)return 1;
    for(int i=2;i<=n;i++)
        if(pig[i].sf=="FP"&&!pig[i].sw)
            return 0;
    return 2;
}
void eat_peach(int x){
    for(int i=1;i<=pig[x].cnt;i++){
        if(pig[x].s[i]=='P'){
            pig[x].s[i]='@';
            pig[x].hp++;
        }
        if(pig[x].hp==1)break;
    }
    return ;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>pig[i].sf;
        for(int j=1;j<=4;j++)
            cin>>pig[i].s[j];
    }
    for(int i=1;i<=m;i++)
        cin>>sp[i];
    pig[1].zsf=1;
    while(!check_win()){
    	//cout<<pig[1].hp<<' '<<pig[2].hp<<'\n';
        v++;if(v==n+1)v=1;
        if(pig[v].sw)continue;
        pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
        pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
        pig[v].kill=0;
        for(int i=1;i<=pig[v].cnt;i++){
            if(pig[v].s[i]=='@')continue;
            else if(pig[v].s[i]=='P'&&pig[v].hp!=4){
                pig[v].s[i]='@';
                pig[v].hp++;
            }
            else if(pig[v].s[i]=='K'&&(!pig[v].kill||pig[v].flag)){
                int k=v+1;
                if(k==n+1)k=1;
                while(pig[k].sw)k++;
                //cout<<k<<' ';
                if((pig[k].zsf==1&&pig[v].sf=="FP")||(pig[k].zsf==0&&pig[v].sf!="FP")){
                    int flag=0;
                    pig[v].s[i]='@';
                    for(int j=1;j<=pig[k].cnt;j++)
                        if(pig[k].s[j]=='D'){
                            pig[k].s[j]='@';
                            flag=1;
                            break;
                        }
                    //cout<<pig[v].sf<<"->"<<pig[k].sf<<' '<<flag<<'\n';
                    pig[v].kill=1;
                    if(flag==0){
                        if(pig[k].zsf==1)pig[v].zsf=0;
                        pig[k].hp--;
                        if(pig[k].hp==0){
                            eat_peach(k);
                            if(pig[k].hp==0){
                                pig[k].sw=1;
                                if(pig[k].sf=="FP"){
                                    if(check_win)break;
                                    pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
                                    pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
                                    pig[v].s[++(pig[v].cnt)]=sp[min(m,++x)];
                                }
                                if(pig[k].sf=="ZP"&&pig[v].sf=="MP"){
                                    for(int i=1;i<=pig[v].cnt;i++)
                                        pig[v].s[i]='@';
                                    pig[v].flag=0;
                                }
                            }
                                
                        }
                    }
                }
            }
        }
    }
    if(check_win()==1)cout<<"FP";
    else cout<<"MP";
    cout<<'\n';
    for(int i=1;i<=n;i++){
        if(pig[i].sw)cout<<"DEAD";
        else
        for(int j=1;j<=pig[i].cnt;j++)
            if(pig[i].s[j]!='@')
                cout<<pig[i].s[j]<<' ';
        cout<<"\n";
    }
    return 0;
}

提交链接

2025/7/25 16:39
加载中...