模拟 [Sdoi2010]猪国杀

【模拟】【bzoj1972】【SDOI2010】猪国杀 1972:[SDOI2010]猪国杀 【题目描述】 《猪国杀》是一种多猪牌类回合制游戏,一共有三种角色:主猪,忠猪,反猪。每局游戏主猪有且只有一只,忠猪和反猪可以有多只,每只猪扮演一种角色。 游戏目的: 主猪(MP):自己存活的情况下消灭所有的反猪。 忠猪(ZP):不惜一切保护主猪,胜利条件与主猪相同。 反猪(AP):杀死主猪。 游戏过程: 游戏开始时候,每个玩家手里都会有4张牌,... 阅读详情

题目的可读版本

有那么几个地方需要注意:
1.使用一个锦囊后,先判无懈可击。
2.如果一个猪出完一个牌后,要从头开始看哪个能出(有可能一次出牌后某只猪跳忠或者跳反了,F,K什么的就可以用了。)
3.游戏结束时,没抓的牌就不用抓了。
4.循环无懈可击
5.行末没空格

昨天打的时候,有个没玩过三国杀的dalao问我能不能无懈杀。。。。
其实这种题完全没有思维含量,只要打之前把所有细节构思好,之后开始码,不要把变量定义混乱,调之前写好注释。。。也就没啥了,一定要有耐心。我也就调了10h左右。。。。
4.9k的代码貌似已经算很短的了。我分别提供带注释和不带注释的代码
其实带注释的代码看起来就像你真的在玩一样,反正都是模拟。。
无注释的:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
int n,m,cnt,sum,nex[15],fro[15];//cnt表示使用到第几张牌,sum表示剩余FP数量
int head[15],tail[15],dead[15],out[15][2005],blood[15],jump[15],nu[15];//jump:1->ZP,2->FP,3->L_AP
char card[2005][2],pig[15][3],hand[15][2005][2];
bool P(int x)
{
    if(blood[x]!=4){blood[x]++;return 1;}
    return 0;
}
bool get_D(int x)
{
    for(int i=head[x];i<=tail[x];i++)
        if(!out[x][i]&&hand[x][i][0]=='D'){out[x][i]=1;return 1;}
    return 0;
}
bool get_J(int x)
{
    for(int i=head[x];i<=tail[x];i++)
        if(!out[x][i]&&hand[x][i][0]=='J'){out[x][i]=1;return 1;}
    return 0;
}
bool get_K(int x)
{
    for(int i=head[x];i<=tail[x];i++)
        if(!out[x][i]&&hand[x][i][0]=='K'){out[x][i]=1;return 1;}
    return 0;
}
void dying(int x,int y)//x为进攻者,y为死者
{
    for(int i=head[y];i<=tail[y];i++)
        if(!out[y][i]&&hand[y][i][0]=='P')
        {
            out[y][i]=1;blood[y]=1;return;
        }
    dead[y]=1;nex[fro[y]]=nex[y];fro[nex[y]]=fro[y];
    if(pig[y][0]=='F')sum--;    
    if(sum==0||blood[1]<=0)return;
    if(pig[y][0]=='F')
    {
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        return;
    }
    if(pig[y][0]=='Z'&&x==1)
    {
        nu[x]=0;
        for(int i=head[x];i<=tail[x];i++)out[x][i]=1;
        head[x]=tail[x]+1;
        return;
    }   
}
bool K(int x)
{
    int y=nex[x];
    if((jump[y]==1&&pig[x][0]=='F')||(pig[x][0]=='M'&&(jump[y]==2||jump[y]==3))||(pig[x][0]=='Z'&&jump[y]==2))
    {
        if(get_D(y)==0){blood[y]--;if(blood[y]<=0)dying(x,y);}
        if(pig[x][0]=='Z')jump[x]=1;
        if(pig[x][0]=='F')jump[x]=2;
        return 1;
    }
    return 0;
}
bool J(int star,int x,int ch)
{
    if(!jump[x]||jump[x]==3)return ch;int y,p=0;
    for(int i=star;;i=nex[i])
    {
        y=i;if(p&&y==star)break;p=1;
        if(ch==1)
        {
            if(jump[x]==1&&(pig[y][0]=='Z'||pig[y][0]=='M'))
                if(get_J(y))
                {
                    ch=0,jump[y]=1;
                    return J(y,x,ch);
                }
            if(jump[x]==2&&pig[y][0]=='F')
                if(get_J(y))
                {
                    ch=0,jump[y]=2;
                    return J(y,x,ch);
                }
        }
        else
        {
            if(jump[x]==1&&pig[y][0]=='F')
                if(get_J(y))
                {
                    ch=1,jump[y]=2;
                    return J(y,x,ch);
                }
            if(jump[x]==2&&(pig[y][0]=='Z'||pig[y][0]=='M'))
                if(get_J(y))
                {
                    ch=1,jump[y]=1;
                    return J(y,x,ch);
                }
        }
    }
    return ch;
}
bool F(int x)
{
    int y=0;
    if(pig[x][0]=='F'){y=1;jump[x]=2;}
    if(pig[x][0]=='Z')
        for(int i=nex[x];;i=nex[i])
        {
            if(i==x)break;
            if(jump[i]==2){y=i;jump[x]=1;break;}
        }
    if(pig[x][0]=='M')
        for(int i=nex[x];;i=nex[i])
        {
            if(i==x)break;
            if(jump[i]==2||jump[i]==3){y=i;break;}
        }
    if(!y)return 0;
    int er=y;         
    if(J(x,y,1)==0){return 1;}            
    if(x==1&&pig[y][0]=='Z'){blood[y]--;if(blood[y]<=0)dying(x,y);return 1;}
    while(1)
    {
        if(get_K(er)==0)
        {
            blood[er]--;
            if(blood[er]<=0)dying(er==x?y:x,er);
            break;
        }
        if(er==x)er=y;else er=x;
    }
    return 1;
}
void N(int x)
{
    for(int i=nex[x];;i=nex[i])
    {
        int y=i;if(y==x)break; 
        if(J(x,y,1)==0){continue;}  
        if(get_K(y)==0)
        {
            blood[y]--;if(blood[y]<=0)dying(x,y);
            if(!jump[x]&&y==1)jump[x]=3;
            if(sum==0||dead[1]==1)return;
        }
    }
    return;
}
void W(int x)
{
    for(int i=nex[x];;i=nex[i])
    {
        int y=i;if(y==x)break;
        if(J(x,y,1)==0){ continue;}
        if(get_D(y)==0)
        {
            blood[y]--;if(blood[y]<=0)dying(x,y);
            if(!jump[x]&&y==1)jump[x]=3;
            if(sum==0||dead[1]==1)return;
        }
    }
    return;
}
bool play()
{
    int x=1;
    while(1)
    {
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        int kill=0;
        for(int i=head[x];i<=tail[x];i++)
        {
            int use=0;
            if(out[x][i])continue;string c=hand[x][i];
            if(c[0]=='P')if(P(x)){out[x][i]=1;use=1;}
            if(c[0]=='K'&&(!kill||nu[x]))if(K(x)){out[x][i]=1;kill=1;if(nu[x]==1)kill=0;use=1;}
            if(c[0]=='D')continue;
            if(c[0]=='F')if(F(x)){out[x][i]=1;use=1;}
            if(c[0]=='N'){N(x);out[x][i]=1;use=1;}
            if(c[0]=='W'){W(x);out[x][i]=1;use=1;}
            if(c[0]=='J')continue;
            if(c[0]=='Z'){nu[x]=1;out[x][i]=1;use=1;}
            if(dead[x])break;
            if(blood[1]==0)return 0;
            if(sum==0)return 1;
            if(use==1)i=head[x]-1;
        }
        while(out[x][head[x]]==1)head[x]++;
        x=nex[x];
    }
}
void init()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        scanf("%s",pig[i]);if(pig[i][0]=='F')sum++;
        for(int j=1;j<=4;j++)scanf("%s",hand[i][j]);tail[i]=4;head[i]=1;
        fro[i]=i-1;nex[i]=i+1;blood[i]=4;
    }
    fro[1]=n;nex[n]=1;jump[1]=1;
    for(int i=1;i<=m;i++)scanf("%s",card[i]);
}
void jieshu()
{
    if(play())printf("MP\n");
    else printf("FP\n");
    for(int i=1;i<=n;i++)
    {
        if(dead[i]){printf("DEAD\n");continue;}
        int sum=0;char hh[2005][3];
        for(int j=head[i];j<=tail[i];j++)if(!out[i][j])hh[++sum][0]=hand[i][j][0];
        for(int j=1;j<sum;j++)printf("%c ",hh[j][0]);
        if(sum==0)printf("\n");
        else printf("%c\n",hh[sum][0]);
    }
}
int main()
{
    init();
    jieshu();
}

带注释的:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
int n,m,cnt,sum,nex[15],fro[15];//cnt表示使用到第几张牌,sum表示剩余FP数量
int head[15],tail[15],dead[15],out[15][2005],blood[15],jump[15],nu[15];//jump:1->ZP,2->FP,3->L_AP
char card[2005][2],pig[15][3],hand[15][2005][2];
bool P(int x)
{
    if(blood[x]!=4){printf("%d use a P\n",x);blood[x]++;return 1;}              
    return 0;
}
bool get_D(int x)
{
    for(int i=head[x];i<=tail[x];i++)
        if(!out[x][i]&&hand[x][i][0]=='D'){out[x][i]=1;return 1;}
    return 0;
}
bool get_J(int x)
{
    for(int i=head[x];i<=tail[x];i++)
        if(!out[x][i]&&hand[x][i][0]=='J'){out[x][i]=1;return 1;}
    return 0;
}
bool get_K(int x)
{
    for(int i=head[x];i<=tail[x];i++)
        if(!out[x][i]&&hand[x][i][0]=='K'){out[x][i]=1;return 1;}
    return 0;
}
void dying(int x,int y)//x为进攻者,y为死者
{
    for(int i=head[y];i<=tail[y];i++)
        if(!out[y][i]&&hand[y][i][0]=='P')
        {
            printf("%d use a P to save himself\n",y);
            out[y][i]=1;blood[y]=1;return;
        }
    dead[y]=1;nex[fro[y]]=nex[y];fro[nex[y]]=fro[y];    
    printf("%d dead,killed by %d\n",y,x);
    if(pig[y][0]=='F')sum--;                
    printf("how about FP:%d\n",sum);
    if(sum==0||blood[1]<=0)return;
    if(pig[y][0]=='F')
    {
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        return;
    }
    if(pig[y][0]=='Z'&&x==1)
    {
        nu[x]=0;
        for(int i=head[x];i<=tail[x];i++)out[x][i]=1;
        head[x]=tail[x]+1;
        return;
    }   
}
bool K(int x)
{
    int y=nex[x];
    if((jump[y]==1&&pig[x][0]=='F')||(pig[x][0]=='M'&&(jump[y]==2||jump[y]==3))||(pig[x][0]=='Z'&&jump[y]==2))
    {
        printf("%d wants to kill %d\n",x,y);                                                       
        if(get_D(y)==0){blood[y]--;printf("%d blood -1\n",y);if(blood[y]<=0)dying(x,y);}
        if(pig[x][0]=='Z')jump[x]=1;
        if(pig[x][0]=='F')jump[x]=2;
        return 1;
    }
    return 0;
}
bool J(int star,int x,int ch)
{
    if(!jump[x]||jump[x]==3)return ch;int y,p=0;  printf("to whom %d and how about now %d\n",x,ch);   
    for(int i=star;;i=nex[i])
    {
        y=i;if(p&&y==star)break;p=1;
        if(ch==1)
        {
            if(jump[x]==1&&(pig[y][0]=='Z'||pig[y][0]=='M'))
                if(get_J(y))
                {
                    printf("%d give a J to %d\n",y,x);                     
                    ch=0,jump[y]=1;
                    return J(y,x,ch);
                }
            if(jump[x]==2&&pig[y][0]=='F')
                if(get_J(y))
                {
                    printf("%d give a J to %d\n",y,x);                  
                    ch=0,jump[y]=2;
                    return J(y,x,ch);
                }
        }
        else
        {
            if(jump[x]==1&&pig[y][0]=='F')
                if(get_J(y))
                {
                    printf("%d give a J to %d\n",y,x);                     
                    ch=1,jump[y]=2;
                    return J(y,x,ch);
                }
            if(jump[x]==2&&(pig[y][0]=='Z'||pig[y][0]=='M'))
                if(get_J(y))
                {
                    printf("%d give a J to %d\n",y,x);                     
                    ch=1,jump[y]=1;
                    return J(y,x,ch);
                }
        }
    }
    return ch;
}
bool F(int x)
{
    int y=0;
    if(pig[x][0]=='F'){y=1;jump[x]=2;}
    if(pig[x][0]=='Z')
        for(int i=nex[x];;i=nex[i])
        {
            if(i==x)break;
            if(jump[i]==2){y=i;jump[x]=1;break;}
        }
    if(pig[x][0]=='M')
        for(int i=nex[x];;i=nex[i])
        {
            if(i==x)break;
            if(jump[i]==2||jump[i]==3){y=i;break;}
        }
    if(!y)return 0;
    int er=y;printf("attarker %d and %d\n",x,y);                                  
    if(J(x,y,1)==0){ printf("J is used to %d\n",y);return 1;}                     
    if(x==1&&pig[y][0]=='Z'){blood[y]--;if(blood[y]<=0)dying(x,y);return 1;}
    while(1)
    {
        printf("who %d\n",er);                                                    
        if(get_K(er)==0)
        {
            printf("loser %d\n",er);                                              
            blood[er]--;printf("%d blood -1\n",er);
            if(blood[er]<=0)dying(er==x?y:x,er);
            break;
        }
        if(er==x)er=y;else er=x;
    }
    return 1;
}
void N(int x)
{
    printf("Nan Zhu Run Qin; from %d\n",x);                            
    for(int i=nex[x];;i=nex[i])
    {
        int y=i;if(y==x)break; printf("to whom %d\n",y);              
        if(J(x,y,1)==0){printf("J is used to %d\n",y);continue;}     
        if(get_K(y)==0)
        {
            printf("%d blood -1\n",y);                                     
            blood[y]--;if(blood[y]<=0)dying(x,y);
            if(!jump[x]&&y==1)jump[x]=3;
            if(sum==0||dead[1]==1)return;
        }
    }
    return;
}
void W(int x)
{
    printf("Wan Jian Qi Fa; from %d\n",x);                            
    for(int i=nex[x];;i=nex[i])
    {
        int y=i;if(y==x)break;printf("to whom %d\n",y);              
        if(J(x,y,1)==0){printf("J is used to %d\n",y); continue;}    
        if(get_D(y)==0)
        {
            printf("%d blood -1\n",y);                                       
            blood[y]--;if(blood[y]<=0)dying(x,y);
            if(!jump[x]&&y==1)jump[x]=3;
            if(sum==0||dead[1]==1)return;
        }
    }
    return;
}
bool play()
{
    int x=1;
    while(1)
    {
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        cnt++;if(cnt>m)cnt=m;hand[x][++tail[x]][0]=card[cnt][0];
        int kill=0;
        printf("player%d\n",x);                                            
        for(int j=head[x];j<=tail[x];j++)                                  
                if(!out[x][j])printf("%s ",hand[x][j]); printf("\n");      
        for(int i=head[x];i<=tail[x];i++)
        {
            int use=0;
            if(out[x][i])continue;string c=hand[x][i];
            if(c[0]=='P')if(P(x)){out[x][i]=1;use=1;}
            if(c[0]=='K'&&(!kill||nu[x]))if(K(x)){out[x][i]=1;kill=1;if(nu[x]==1)kill=0;use=1;}
            if(c[0]=='F')if(F(x)){out[x][i]=1;use=1;}
            if(c[0]=='N'){N(x);out[x][i]=1;use=1;}
            if(c[0]=='W'){W(x);out[x][i]=1;use=1;}
            if(c[0]=='Z'){nu[x]=1;out[x][i]=1;use=1;}
            if(dead[x])break;
            if(blood[1]==0)return 0;
            if(sum==0)return 1;
            printf("%c\n",c[0]);
            for(int k=1;k<=n;k++)                                             
            {
                printf("pig%d %s jump%d blood%d    ",k,pig[k],jump[k],blood[k]);
                for(int j=head[k];j<=tail[k];j++)
                    if(!out[k][j])printf("%s ",hand[k][j]);
                printf("\n");
            }
            system("pause");
            if(use==1)i=head[x]-1,printf("%d will check again\n",x);
        }
        while(out[x][head[x]]==1)head[x]++;
        x=nex[x];
    }
}
void init()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        scanf("%s",pig[i]);if(pig[i][0]=='F')sum++;
        for(int j=1;j<=4;j++)scanf("%s",hand[i][j]);tail[i]=4;head[i]=1;
        fro[i]=i-1;nex[i]=i+1;blood[i]=4;
    }
    fro[1]=n;nex[n]=1;jump[1]=1;
    for(int i=1;i<=m;i++)scanf("%s",card[i]);
}
void jieshu()
{
    if(play())printf("MP\n");
    else printf("FP\n");
    for(int i=1;i<=n;i++)
    {
        if(dead[i]){printf("DEAD\n");continue;}
        int sum=0;char hh[2005][3];
        for(int j=head[i];j<=tail[i];j++)if(!out[i][j])hh[++sum][0]=hand[i][j][0];
        for(int j=1;j<sum;j++)printf("%c ",hh[j][0]);
        if(sum==0)printf("\n");
        else printf("%c\n",hh[sum][0]);
    }
}
int main()
{
    init();//预处理
    jieshu();
}
【BZOJ1972】[SDOI2010] 猪国杀(恶心的大模拟) 点此看题面 大致题意: 让你模拟一个游戏猪国杀的过程。 极大坑点 对于这种模拟题,具体思路就不讲了,就说说有哪些坑点。 题面有锅,反猪是FPFPFP。 数据有锅,牌堆中的牌可能不够用,牌堆为空之后需一直抽最后一张牌。 主猪杀死忠猪后猪哥连弩也要清除。 无懈可击也可以用无懈可击抵消。 使用决斗的猪可能死亡。 无懈可击是从使用锦囊牌的猪开始轮流选择是否响应。 使用完一张牌... 阅读详情

相关推荐

不刷机!Jetson AGX Orin无损更新内核与设备树的两种安全方法(附备份恢复脚本)

本文详细介绍了Jetson AGX Orin在不刷机的情况下安全更新内核与设备树的两种方法,包括extlinux.conf动态加载和分区精准刷新方案。通过备份恢复脚本和工业级灾备方案,确保零数据丢失,适用于边缘AI和机器人等关键场景。

weixin_40192258的博客 308

三国杀周边--------猪国杀题解

大大大大大大大大大模拟--------猪国杀 三国杀周边

NOI RP++ 2321

ICESat-2数据下载的两种方法

ICESat-2数据下载

weixin_46341898的博客 2900

洛谷P2482 猪国杀题解

洛谷P2482猪国杀题解

Jerry_Mouse101的博客 2348

海思Hi3516平台集成IMX214 Sensor实战:从I2C调试到VI通路构建

本文详细记录了在海思Hi3516平台上集成索尼IMX214图像传感器的完整实战过程。从硬件I2C通讯调试、驱动层适配,到上层VI通路构建与ISP配置,提供了系统性的排查步骤与代码修改要点,旨在帮助开发者快速打通从Sensor到屏幕的完整视频采集链路,解决集成过程中的常见问题。

tcp8optimizer的博客 596

Android 白名单保活实战:主流厂商适配指南

本文详细解析了Android应用白名单保活的实战策略,重点针对华为、小米、OPPO、vivo等主流厂商的系统特性,提供了精准的后台设置页面跳转适配方案。文章从基础的前台服务实现讲起,深入讲解了白名单的判断、申请与厂商适配的核心代码与避坑指南,旨在帮助开发者合规、稳定地提升应用后台存活率。

motor的博客 1861

洛谷P2482 [SDOI2010]猪国杀 题解

开学快乐,整点活儿

eliyou的博客 2773

Jetson Nano系统重装的艺术:从格式化到烧录的深度解析

本文详细解析了Jetson Nano系统重装的完整流程,从SD卡格式化到系统镜像烧录的进阶技巧,包括硬件选择、软件准备、常见问题处理及深度学习环境配置。特别推荐使用三星EVO Plus SD卡和官方电源以确保稳定性,适合开发者快速掌握嵌入式设备系统重装的核心技术。

weixin_28273593的博客 610

LuoguP2482 [SDOI2010] 猪国杀 题解 大型模拟题

当你发现如论如何也想不知道遗漏了什么之后,你可以将题解代码中的输出注释删除,其运行后会输出每一名角色进行的操作以及操作后的角色状态。一群猪玩猪国杀(类似三国杀),按照特定的规则出牌,问谁能获胜,输出获胜时,存活的猪的手牌。按照上面的思路实现,或者按照自己的思路实现,在实现的过程中注意提到的细节即可。注意到上面的点之后,我们便可以开始做题了。

qq_45523675的博客 1324

数据分析是什么?

说道“数据分析”一词,大家应该并不陌生,数据分析从字面上来理解,就是对数据做出分析然后得出一个结论,看起来浅显易懂,下面我们把这个词语分开得到的是“数据”与“分析”。“数据”的范围就很广泛了,小到一个计量数字,大到成亿级别的数据汇总,都可以称为数据;“分析”一词并不难理解,以智慧思维的方法对某一事物做出合理的解释,给出结论是为分析,一般会用到数学上的分析方法,比如统计学或者概率论等等。 1. 什么是数据分析 1) 数据分析发展背景 进入到 21 世纪以后,伴随着互联网的迅速发展,大数据应运而生,越来越多的数

MC_XY的博客 5432

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

bfq05234214的博客 441

[sdoi]猪国杀 题面

题目描述 Description 《猪国杀》是一种多猪牌类回合制游戏,一共有三种角色:主猪,忠猪,反猪。每局游戏主猪有且只有一只,忠猪和反猪可以有多只,每只猪扮演一种角色。 游戏目的: 主猪(MP):自己存活的情况下消灭所有的反猪。 忠猪(ZP):不惜一切保护主猪,胜利条件与主猪相同。 反猪(AP):杀死主猪。 游戏过程: 游戏开始时候,每个玩家手里都会有4张牌,且体力上限和初始体力...

A_Comme_Amour的博客 1194

2025目标检测新方向:弱监督目标检测的最新论文研究与应用

2025目标检测新方向:弱监督目标检测的最新论文研究与应用 ,人工智能,计算机视觉,大模型,AI,本文聚焦2025年弱监督目标检测新方向,阐述其基础概念,包括弱监督学习定义、标注形式及面临的定位不准等挑战。介绍最新论文研究的多种算法,如基于点标注的算法等,还涉及相关模型、应用领域,以及评价指标、数据集、实现工具框架,分析未来趋势与补充挑战及解决方案,为该领域研究提供全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

[BZOJ1972][Sdoi2010]猪国杀(大模拟)

吐槽这题真的写了一天啊… 虽然我码力太弱是主要因素,但是题面确实是挺难懂的! 所以自己将题面和数据范围做了改进,避免了一些不必要的坑点,最后又加入了一些自己写的时候发现的奇奇怪怪的问题,应该会比原题面清楚些,欢迎大家来读…题目描述《猪国杀》是一种多猪牌类回合制游戏,一共有三种角色:主猪,忠猪,反猪。每局游戏主猪有且只有一只,忠猪和反猪可以有多只,每只猪扮演一种角色。 游戏目的 主猪(MP):自己

zyf2000 1271

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

洛谷2482 BZOJ1972 SDOI2010 猪国杀 模拟

题目链接 题意就不描述了,自己看吧。 题解: 有很多地方的搞法和注意事项都写在代码里了,都是模拟,没有什么算法上值得说的。注意好好读题,然后考虑一定要全面,不要漏掉什么东西,或者自以为是,有些地方和你实际打三国杀是不一样的。 这个题估计是我高中生涯的最后一道OI题了,拿它做最后一题是有特殊意义的。我记得曾经机房里有人写这个题的时候,zyb推荐我也去写这些大模拟题。我当时告诉zyb说,等着我退役后有...

forever_shi的博客 394

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

洛谷 P2482 loj #2885 [SDOI2010]猪国杀 题解【模拟】【贪心】【搜索】

好玩的模拟题。 以后要经常写模拟题鸭 题目描述 游戏背景 《猪国杀》是一种多猪牌类回合制游戏,一共有333种角色:主猪,忠猪,反猪。每局游戏主猪有且只有111只,忠猪和反猪可以有多只,每只猪扮演111种角色。 游戏目的 主猪 / MP:自己存活的情况下消灭所有的反猪。 忠猪 / ZP:不惜一切保护主猪,胜利条件与主猪相同。 反猪 / AP:杀死主猪。 游戏过程 游戏开始时,每个玩家手里都会有...

wjyyy的博客 702

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

bzoj 1972: [Sdoi2010]猪国杀 (大模拟)

题目描述 Description 《猪国杀》是一种多猪牌类回合制游戏,一共有三种角色:主猪,忠猪,反猪。每局游戏主猪有且只有一只,忠猪和反猪可以有多只,每只猪扮演一种角色。 游戏目的: 主猪(MP):自己存活的情况下消灭所有的反猪。 忠猪(ZP):不惜一切保护主猪,胜利条件与主猪相同。 反猪(AP):杀死主猪。 游戏过程: 游戏开始时候,每个玩家手里都会有4张牌,且体力上限和初始

clover_hxy的博客 2256

Luogu2482 [SDOI2010]猪国杀 ---- 模拟

Luogu2482 [SDOI2010]猪国杀 题意 ...... https://www.luogu.org/problemnew/show/P2482 总结 首先说一下代码的构思: 首先确定了所有的状态表示(例如游戏中游戏结束,不管有没有用),然后确定了所有属性什么的。 然后构思结构体的表达,并且从全局代码考虑需不需要这样设计(因为这个重构了一次,一开始写的结构体内的表示方法代码...

weixin_30569153的博客 242

BZOJ1972:[SDOI2010]猪国杀(模拟)

Description 太长就不贴过来了 Solution 这个题是真的不难写……唯一的难度就在于理解题意上面……感觉这就是个阅读理解题啊…… 而且你三国杀玩的越多可能就越难写因为你无法理解那些猪的思维…… Asia:这些猪会强制把你变得和他们一样sb,然后用他们丰富的sb经验来打败你 细节就不说了……说几个我写挂或者遗漏的点吧: 1、手牌不要从左扫到右扫完一遍就结束了……可能后面...

weixin_33682719的博客 179
上一篇: 线段树 weed
下一篇: 三分+贪心 [USACO2008 Nov]toy 玩具
QTY_
博客等级 码龄9年 13粉丝 211原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值