RE 求调
查看原帖
RE 求调
578004
02Ljh楼主2022/7/14 17:19
#include <bits/stdc++.h>
using namespace std;
struct l
{
    bool kd=false,visit=false;
    int x,y;
} mapp[101][100];
struct packpack
{
    int sp;
    int zhu,fu;
} pb;
vector <int> p_wz;
vector <int> p_sl;
//vector <int> p_ti;
int spa[17]={0};
int kind[11]={1,4,4,3,2,4,3,3,5,5};
//1=空手 2=栓动步枪 3=射手步枪 4=突击步枪 5=霰弹枪
int need[11]={0,14,14,14,14,15,15,15,16,16};
int n,m,t,z_zd,f_zd;
int dx,dy;
bool gun(int n)
{
    if(n<10) return true;
    else return false;
}
/*bool tzw(int n)
{
    if(n>9&&n<14) return true;
    if(n>9&&n<14) return true;
    else return false;
}*/
void zd()
{
    z_zd=f_zd=0;
    int z_z=need[pb.zhu],f_z=need[pb.fu];
    for(int i=0;i<p_wz.size();i++)
    {
        if(p_wz[i]==z_z) z_zd+=p_sl[i];
        if(p_wz[i]==f_z) f_zd+=p_sl[i];
    }
    return ;
}
void deal(int i)
{
    dx=ceil((i-1)/n)+1;
    dy=(i-1)%n+1;
    return ;
}
void sq(int xx,int yy)
{
    mapp[xx][yy].visit=true;
    if(gun(mapp[xx][yy].x))
    {
        if(kind[mapp[xx][yy].x]>kind[pb.zhu])
        {
            pb.zhu=mapp[xx][yy].x;
            //zd();
        }
        else if(kind[mapp[xx][yy].x]>kind[pb.fu]&&kind[mapp[xx][yy].x]<kind[pb.zhu])
        {
            pb.fu=mapp[xx][yy].x;
            //zd();
        }
        return ;
    }
    else
    {
        int chu=spa[mapp[xx][yy].x]*mapp[xx][yy].y;
        bool fla;
        int z_z=need[pb.zhu],f_z=need[pb.fu];
        while(pb.sp<chu)
        {
            fla=true;
            for(int i=0;i<p_wz.size()&&!p_wz.empty();i++)
            {
                if(p_wz[i]!=z_z&&p_wz[i]!=f_z)
                {
                    while(p_sl[i]>0&&pb.sp<chu)
                    {
                        p_sl[i]--;
                        pb.sp+=spa[p_wz[i]];
                    }
                    //pb.sp+=spa[p_wz[i]]*p_sl[i];
                    if(p_sl[i]==0)
                    {
                        p_sl.erase(p_sl.begin()+i);
                        p_wz.erase(p_wz.begin()+i);
                    }
                    //p_ti.erase(p_ti.begin()+i);
                    fla=false;
                    break;
                }
            }
            if(fla) break;
        }
        if(fla)
        {
            int io=-1;
            while(pb.sp<chu&&!p_wz.empty())
            {
                io++;
                while(p_sl[io]>0&&pb.sp<chu)
                {
                    p_sl[io]--;
                    pb.sp+=spa[p_wz[io]];
                }
                //if(tzw(p_wz[io])) continue;
                //pb.sp+=spa[p_wz[io]]*p_sl[io];
                if(p_sl[io]==0)
                {
                    p_sl.erase(p_sl.begin()+io);
                    p_wz.erase(p_wz.begin()+io);
                }
                //p_ti.erase(p_ti.begin()+io);
            }
        }
        p_wz.push_back(mapp[xx][yy].x);
        p_sl.push_back(mapp[xx][yy].y);
        pb.sp-=chu;
        return ;
    }
}
bool war(int xx,int yy)
{
    zd();
    mapp[xx][yy].visit=true;
    if(z_zd>=xx)
    {
        z_zd-=xx;
        pb.sp+=xx*spa[need[pb.zhu]];
        return true;
    }
    if(f_zd>=yy)
    {
        f_zd-=yy;
        pb.sp+=xx*spa[need[pb.fu]];
        return true;
    }
    return false;
}
/*void ts_pr()
{
    cout<<"\n主武器:"<<pb.zhu<<" 子弹数:"<<z_zd<<"\n 副武器:"<<pb.fu<<" 子弹数:"<<f_zd;
    cout<<"\n背包空间:"<<pb.sp<<" 拾取容量:"<<p_wz.size()<<endl;
    cout<<"背包储存:";
    for(int i=0;i<p_wz.size();i++)
    {
        cout<<p_wz[i]<<" ";
    }
    cout<<"\n背包含量:";
    for(int i=0;i<p_sl.size();i++)
    {
        cout<<p_sl[i]<<" ";
    }
    return ;
}*/
void pr()
{
    cout<<pb.zhu<<endl<<pb.fu<<endl;
    for(int i=0;i<p_wz.size();i++)
    {
        cout<<p_wz[i]<<" "<<p_sl[i]<<endl;
    }
    return ;
}
int main()
{
    int op,xx;
    spa[10]=50;spa[11]=40;spa[12]=30;spa[13]=20;
    spa[14]=2;spa[15]=1;spa[16]=5;
	cin>>n>>m>>pb.sp>>t;
	pb.sp*=10;
	pb.zhu=pb.fu=0;
	for(int i=1;i<=n*m;i++)
    {
        deal(i);
        //cout<<dx<<" "<<dy<<" ";
        cin>>xx;
        if(xx==17)
        {
            mapp[dx][dy].kd=true;
            cin>>mapp[dx][dy].x>>mapp[dx][dy].y;
        }
        else
        {
            mapp[dx][dy].x=xx;
            cin>>mapp[dx][dy].y;
        }
    }
    int px=1,py=1;
    bool fla_=true;
    if(mapp[px][py].kd)
    {

        if(!war(px,py))
        {
            fla_=false;
            //cout<<"\n YOU DIED \n";
            //return 0;
        }
    }
    else sq(px,py);
    mapp[1][1].visit=true;
    for(int i=0;i<t;i++)
    {
        cin>>op;
        if(!fla_) continue;
        //ts_pr();
        if(op==1) px--;
        if(op==2) px++;
        if(op==3) py--;
        if(op==4) py++;
        //cout<<"mapp["<<px<<"]["<<py<<"]="<<mapp[px][py].x<<endl;
        if(mapp[px][py].visit) continue;
        if(mapp[px][py].kd)
        {
            if(!war(px,py))
            {
                //ts_pr();
                fla_=false;
                //cout<<"\n YOU DIED \n";
                //return 0;
            }
        }
        else sq(px,py);
    }
    if(!fla_) cout<<px<<" "<<py;
    else pr();
    return 0;
}

2022/7/14 17:19
加载中...