社区讨论

关于Online Judge的问题

学术版参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m596fx85
此快照首次捕获于
2024/12/29 13:35
去年
此快照最后确认于
2025/11/04 12:12
4 个月前
查看原帖
这是我的猪国杀代码,以下样例在本地和洛谷在线IDE都是能正确跑过的(都是20多ms),但是交到题目里就TLE了,这是为什么
input:
CPP
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>

#define debug false

using namespace std;
int n, m;
int MP;
queue<char> card;
char last_card;
void NZRQ(int i); // 南猪入侵
void WJQF(int i);
void attack(int i, bool &usekill);
void Fight(int i, int j);
void kill(int j, int i, char c, int khp = 1);
bool askuse(int id, int piguse, int iswuxie = 0); // 询问是否有猪需要出无懈可击
int nxtp(int i);
char getcard();
bool gameover();
bool DoFight(int id);
void out();
int getrev(int id);
// 0:未跳猪,1:忠猪,2:反猪,3:类反猪
class PLAYER
{
public:
    int type; // 0:主猪 1:忠猪 2:反猪
    int HP = 4;
    int jump = 0;   // 跳忠,跳反
    int weapon = 0; // 装不装武器
    int id;
    vector<char> cards;
    void erase(int i)
    {
        if (cards.size() < i + 1)
            return;
        cards.erase(cards.begin() + i);
    }
    bool dieask()
    {
        for (int i = 0; i < cards.size(); i++)
            if (cards[i] == 'P')
            {
                erase(i);
                return true;
            }
        return false;
    }
    bool ask(int idjump, int iswuxie = 0)
    {
        if (debug)
            cout << "询问" << id << "号猪是否对跳方为" << idjump << "的猪使用无懈可击" << endl;
        bool willuse = false;
        bool isfriend = 1;
        if (iswuxie == 1)
        { // 是无懈可击,即对自己人的无懈可击使用无懈可击没有好处
            isfriend = 0;
            if (debug)
                cout << "为无懈可击" << endl;
            willuse = true;
            if (idjump == 1 && (this->type == 1 || this->type == 0))
                willuse = false;
            if (idjump == 2 && this->type == 2)
                willuse = false;
            if (!willuse)
            {
                if (debug)
                    cout << "选择不使用" << endl;
                return false; // 不使用
            }
        }
        else
        {
            if (idjump == 1 && (this->type == 1 || this->type == 0))
                willuse = true;
            if (idjump == 2 && this->type == 2)
                willuse = true;
            if (!willuse)
            {
                if (debug)
                    cout << "选择不使用" << endl;
                return false; // 不使用
            }
        }

        for (int i = 0; i < cards.size(); i++)
            if (cards[i] == 'J')
            {
                // 使用了就代表跳了
                if (isfriend)
                    this->jump = idjump;
                else
                    this->jump = getrev(idjump);
                erase(i);
                if (debug)
                    cout << "选择使用\n";
                return true; // 使用无懈可击
            }
        if (debug)
            cout << "没有无懈可击" << endl;
        return false; // 没有无懈可击
    }
    void Move()
    {
        // 摸牌阶段
        for (int i = 1; i <= 2; i++)
            cards.push_back(getcard());
        if (debug)
            out();
        // 出牌阶段
        bool usekill = false; // 使用过杀
        int k;
        bool result;
    again:
        for (int i = 0; i < cards.size(); i++)
        {
            switch (cards[i])
            {
            case 'P': // 桃
                if (this->HP == 4)
                    break;
                erase(i);
                i--;
                this->HP++;
                break;
            case 'Z': // 猪哥连弩
                erase(i);
                i--;
                this->weapon = 1;
                if (debug)
                    cout << id << " 获得 猪哥连弩" << endl;
                goto again;
                break;
            case 'N': // 南猪入侵
                erase(i);
                i--;
                NZRQ(id);
                break;
            case 'W': // 万箭齐发
                erase(i);
                i--;
                WJQF(id);
                break;
            case 'K':            // 杀
                if (weapon == 1) // 装了猪哥连弩
                    usekill = false;
                if (usekill) // 未装装备
                    break;
                attack(id, usekill);
                if (usekill)
                {
                    erase(i);
                    goto again;
                }
                break;
            case 'F': // 决斗
                if (DoFight(id))
                {
                    erase(i);
                    goto again;
                }
                break;
            }
            if (gameover())
                break;
        }
    }
};
PLAYER pigs[30];
inline int nxtp(int i)
{
    i = i % n + 1;
    while (pigs[i].HP <= 0)
        i = i % n + 1;
    return i;
}
// 返回i的下一个猪的编号
inline int getrev(int id)
{
    switch (id)
    {
    case 0:
        return 0;
        break;
    case 1:
        return 2;
        break;
    case 2:
        return 1;
        break;
    case 3:
        return 1;
        break;
    }
}
void out()
{
    return;
    cout << "手牌情况:\n";
    for (int j = 1; j <= n; j++)
    {
        printf("%d ", pigs[j].cards.size());
        for (int k = 0; k < pigs[j].cards.size(); k++)
            printf("%c ", pigs[j].cards[k]);
        cout << endl;
    }
}
bool gameover()
{
    if (pigs[MP].HP <= 0)
        return true;
    bool flag = true;
    for (int i = 1; i <= n; i++)
        if (pigs[i].HP > 0 && pigs[i].type == 2)
        {
            flag = false;
            break;
        }
    if (flag) // 反猪全死,主公胜利
        return true;
    return false;
}
void prize(int i, int j)
{ // 奖励惩罚机制
  // i kill j
    if (pigs[j].type == 2)
    { // 反猪被杀
        for (int k = 0; k < 3; k++)
            pigs[j].cards.push_back(getcard());
    }
    if (pigs[j].type == 1 && pigs[i].type == 0)
    { // 主猪杀忠猪
        if (debug)
            cout << "主猪杀死了忠猪\n";
        pigs[i].cards.clear();
    }
}
char getcard()
{
    if (card.empty())
    {
        if (debug)
            cout << "牌堆空了\n";
        return last_card;
    }

    char c = card.front();
    card.pop();
    if (debug)
        cout << "发牌:" << c << endl;
    return c;
}
bool askuse(int id, int piguse, int iswuxie) // 当前牌是不是无懈可击
{
    if (pigs[id].jump == 0)
        return false; // 没有人会对它使用无懈可击
    if (pigs[piguse].HP > 0)
        if (pigs[piguse].ask(pigs[id].jump, iswuxie))
            return !askuse(piguse, piguse, !iswuxie);
    for (int i = nxtp(piguse); i != piguse; i = nxtp(i)) // 循环询问
    {
        if (pigs[i].HP <= 0) // 此猪已死
            continue;
        if (pigs[i].ask(pigs[id].jump, iswuxie))
        {                                   // 有人使用无懈可击
            return !askuse(i, i, !iswuxie); // 重新询问有没有人对无懈可击使用无懈可击
        }
    }
    return false; // 没有人使用无懈可击
}
bool DoFight(int id)
{
    int k = nxtp(id);
    for (int k = nxtp(id); k != id; k = nxtp(k))
    {
        if (pigs[k].HP <= 0) // 此猪已死
            return false;
        switch (pigs[id].type)
        {
        case 0: // 主猪
        case 1:
            if (pigs[k].jump == 2 || pigs[k].jump == 3)
            { // 反猪或类反猪
                Fight(id, k);
                return true;
            }
            break;
        case 2: // 反猪
            if (pigs[k].jump == 1)
            {
                if (debug)
                    cout << id << "对" << k << "发起了决斗\n";
                Fight(id, k);
                return true;
            }
            break;
        }
    }
    return false;
}
int takeKill(int i)
{
    // 从i的cards里取一个‘K’
    int k = -1;
    for (int j = 0; j < pigs[i].cards.size(); j++)
    {
        if (pigs[i].cards[j] == 'K')
        {
            k = j;
            break;
        }
    }
    if (k == -1)
        return -1;
    else
    {
        if (debug)
            cout << i << "取走了" << k << endl;
        pigs[i].erase(k);
        return 1;
    }
}
bool askshan(int id)
{
    // 询问是否出闪(‘D’)
    for (int i = 0; i < pigs[id].cards.size(); i++)
        if (pigs[id].cards[i] == 'D')
        {
            pigs[id].erase(i);
            return true;
        }
    return false;
}
void attack(int id, bool &usekill)
{
    int k = nxtp(id);
    if (pigs[k].HP <= 0) // 此猪已死
        return;
    switch (pigs[id].type)
    {
    case 0: // 主猪
    case 1:
        if (pigs[k].jump == 2 || pigs[k].jump == 3)
        { // 反猪或类反猪
            if (!askshan(k))
                kill(k, id, 'K', 1); // 不出闪
            else
                kill(k, id, 'K', 0);
            usekill = true;
        }
        break;
    case 2: // 反猪
        if (pigs[k].jump == 1)
        {
            if (!askshan(k))
                kill(k, id, 'K', 1); // 不出闪
            else
                kill(k, id, 'K', 0);
            usekill = true;
        }
        break;
    }
}
void Fight(int i, int j)
{
    // 决斗
    // j先出,i后出
    if (pigs[i].type == 1 && j == MP)
    {
        pigs[i].HP--;
        if (pigs[i].HP <= 0)
        {
            if (pigs[i].dieask())
                pigs[i].HP++;
            else
                prize(j, i);
        }
        return;
    }
    if (pigs[j].type == 1 && i == MP)
    {
        pigs[j].HP--;
        if (pigs[j].HP <= 0)
        {
            if (pigs[j].dieask())
                pigs[j].HP++;
            else
                prize(i, j);
        }
        return;
    }
    kill(j, i, 'F', 0); // i对j表敌意,但是不扣血
    if (askuse(j, i))
        return; // 被无懈可击了
    while (true)
    {
        if (takeKill(j) == -1) // j没牌了
        {
            pigs[j].HP--;
            if (pigs[j].HP <= 0)
            {
                if (pigs[j].dieask())
                    pigs[j].HP++;
                else
                    prize(i, j);
            }
            break;
        }
        if (debug)
            cout << j << "出一张杀" << endl;
        if (takeKill(i) == -1) // i没牌了
        {
            pigs[i].HP--;
            if (pigs[i].HP <= 0)
            {
                if (pigs[i].dieask())
                    pigs[i].HP++;
                else
                    prize(j, i);
            }
            break;
        }
        if (debug)
            cout << i << "出一张杀" << endl;
    }
}
void kill(int j, int i, char c, int khp)
{ // j被i扣血
    if (debug)
    {
        cout << j << "被" << i << "攻击";
        if (khp == 0)
            cout << "(未造成伤害)";
        cout << endl;
    }
    pigs[j].HP -= khp;
    if (pigs[j].HP <= 0 && khp != 0)
    {
        if (pigs[j].dieask())
            pigs[j].HP++;
        else
            prize(i, j); // 奖励机制
    }
    if (MP == pigs[j].id)
    { // 主猪
        if (c == 'N' || c == 'W')
        {
            // 类反猪
            if (pigs[j].jump != 2)
                pigs[i].jump = 3;
        }
        else
        {
            // 反猪
            pigs[i].jump = 2;
        }
    }
}
void NZRQ(int i)
{ // 南猪入侵
    if (debug)
        cout << i << "发动南猪入侵" << endl;
    for (int j = nxtp(i); j != i; j = nxtp(j))
    {
        if (askuse(j, i, 0))
        {
            if (debug)
            {
                cout << "对" << j << "的南猪入侵被无懈可击了" << endl;
            }
            continue; // 被无懈可击了
        }

        if (takeKill(j) == -1)
            kill(j, i, 'N');
    }
}
void WJQF(int i)
{
    if (debug)
        cout << i << "发动万箭齐发" << endl;
    for (int j = nxtp(i); j != i; j = nxtp(j))
    {
        if (askuse(j, i, 0))
        {
            if (debug)
            {
                cout << "对" << j << "的万箭齐发被无懈可击了" << endl;
            }
            continue; // 被无懈可击了
        }

        if (askshan(j) == false)
        {
            kill(j, i, 'W');
        }
    }
}
void input()
{
    cin >> n >> m;
    string s;
    char c;
    for (int i = 1; i <= n; i++)
    {
        cin >> s;
        if (s == "MP")
        {
            MP = i;
            pigs[i].jump = 1; // 忠方
            pigs[i].type = 0;
        }
        else if (s == "ZP")
            pigs[i].type = 1;
        else
            pigs[i].type = 2;
        for (int j = 1; j <= 4; j++)
        {
            c = getchar();
            while (c == ' ' || c == '\n')
                c = getchar();
            pigs[i].cards.push_back(c);
        }
        pigs[i].id = i;
    }
    for (int i = 1; i <= m; i++)
    {
        c = getchar();
        while (c == ' ' || c == '\n')
            c = getchar();

        card.push(c);
        if (debug)
            cout << "加入牌堆" << c << endl;
        last_card = c;
    }
}
void outputdebug(int i, int type = 0)
{
    if (type == 0)
    {
        cout << i << "号猪执行完毕,\n血量情况\n";
        for (int j = 1; j <= n; j++)
            cout << pigs[j].HP << " ";
        cout << endl;
        cout << "跳方情况:\n";
        for (int j = 1; j <= n; j++)
            cout << pigs[j].jump << " ";
        cout << endl;
        /*cout << "手牌情况:\n";
        for (int j = 1; j <= n; j++)
        {
            printf("%d ", pigs[j].cards.size());
            for (int k = 0; k < pigs[j].cards.size(); k++)
                printf("%c ", pigs[j].cards[k]);
            cout << endl;
        }*/
        cout << "牌堆情况:";
        cout << card.size() << endl;
        cout << "主猪血量:" << pigs[MP].HP << endl;
    }
}
void Run()
{
    int t = 0;
    if (debug)
        cout << "主猪:" << MP << endl;
    while (pigs[MP].HP > 0) // 主公存活
    {
        if (debug)
            cout << "第" << ++t << "回合" << endl;
        bool firstmp = true;
        for (int i = MP; i != MP || firstmp; i = nxtp(i), firstmp = false)
        {
            if (pigs[i].HP <= 0)
                continue;
            pigs[i].Move();
            if (debug)
                outputdebug(i);

            // cout << "当前玩家:" << i << endl;
            // cout << "手牌数:" << pigs[i].cards.size() << endl;

            // for (int j = 0; j < pigs[i].cards.size(); j++)
            //     printf("%d ", pigs[i].cards[j]);
            // cout << endl;

            if (gameover())
                return;
        }

        if (debug)
            cout << "\n\n";
        if (gameover())
            break;
    }
}
void output()
{
    if (pigs[MP].HP > 0)
        printf("MP\n");
    else
        printf("FP\n");

    for (int i = 1; i <= n; i++)
    {
        if (pigs[i].HP <= 0)
        {
            printf("DEAD\n");
        }
        else
        {
            for (int j = 0; j < pigs[i].cards.size(); j++)
                printf("%c ", pigs[i].cards[j]);
            printf("\n");
        }
    }
}
int main()
{
    // if (debug)
    // freopen("15.in", "r", stdin);
    // freopen("output.out", "w", stdout);
    input();

    Run();

    output();
    return 0;
}
样例:
5 2000 MP K K P P FP D K D K ZP P P D K FP D K P D FP P K P P D D D P D K P P D D P D D K P P D P D P P K K P D P K D P P D Z P P P K P P D P K K Z K K P D K K P D Z K D P D P K P P K K D P P K P P P P K P K P D K K D P D K D P K Z K K K K D D K K Z P K D D P K P D K Z K P P P K D P K P K K P K Z D K Z K D P P K D P K K D D D D P K D K D K Z D K D P P Z D P K P P P K D D D D K P K K D D K D K P D P D D K D P K P P K P P D P K P K K K D P K D D P K K K K P K D Z K K P K P Z K D P P P P D P P Z P K K P D K K D D Z D K P P D P D Z P D P Z K K P K Z D D D D P P P K P D P D K K Z P K Z D K D D P K K D K K P D K P K K D P K P Z D P P P P P D P K K D Z K D P D K K P Z P P D D K K Z P D P P D P D P D P P D K P D P P Z K K D D D K K K Z P K P D P K K D P K D P D D K D D P K K P P K K P K D P K P K P D D D P D K D P Z D P K D D D K D D Z D P K D K K P D D K K D P P K D D K K K P P P D K P Z P P P P K P D D K D D K D K P K P P K Z K P D K P K D K K P Z K D P P K P K P P K K K D K P K P P K D K K Z K P P D D K K P D P D D P K K P D P P K P D K P P K K P D D P K P K P P K P P K K D D D D P K P P Z D K K D K P P P K K P P K D K D K P D Z D K P K P P P K D Z D Z P K K D K D K P P D P P P P D D K P D D D K P D D D K K K K D D D P P K P P K P D P P P D P P D D P P Z Z P K D K D K K K K P K K D D P K K K K K P D K K K P K Z P D K P P K P K D K P D K P K D K D P K K Z P K P Z D D P K D D D K D K D P D D K P D K Z P K P D K Z D K D D P D D D P D D P P P D K D K D P Z P D D D D P D D D D K K P D D P D K D D P P D D K K P K D P P D Z K P D K K D P K K Z P D D P K P D K Z D P P D P K P D P P Z P P P K D P D Z P K P P K D K D K Z K K D P P D D D K P D K D P K D D K K P P D P P P K D P K D P D P D Z D K D P D K D P P K D P K D K K K P Z K D P Z P K P P K D K K D K P D P P P D K P K P D P P D D P P Z P Z K P P D D P P P K P K Z P D D D K P P P D K P K D D K D P D K Z P D P D P D P K P P P K D D D P K P P P D K K D K K K Z K P K K K K P K K P Z D D P D P D D P P D D D D K K D K K P K K P K K P D D D P P K D D K K P K K Z D P D K K K D P P P K P K P P D P D D K P P K D K K K P P K K D P D P D D P D P P K P P K D K D P P D K K P P P P P P P D P K D D K D P K D P P P D D K K Z P Z K D P D P K P K D D D Z D P K K K K K P P D K D D P P P P K K P K K D D P D D D D K P P P K K D P D P K K D P P Z D P P D D K P Z K P P P P D K D P D Z K Z K Z D D K P D D P D P D K K P K K P D P D K P P D P P D K K D K P K D K P D D D D D P K P D D K D P P P K D Z K K P D K D P P D D P P D K K P P P P P D K P K D K K D P D D P P D Z D P K K K K P Z K P P Z D P P P K K D K K P D K P D P P K D K P D K K K K D P K K Z D D D P P D P Z K D P P D P K P P Z D K K P D K P P Z D D K K P D D P K K D P K K D Z D P Z D P K D P Z K P K D K P D D D D P P Z K D D D P P K D D K D P P K K Z K D D P K K D P K P D D P P K P P D D P P K P K P P K Z K Z P D P D P D P P D P K K P P P K K P K P K K K D P D P P D P K D P Z D P K K P P K K D P K P D K D K D D K D P K D P P K K D K K D P K P K Z D P D P P K D P K K K P P P K P D P P K D D D K D K K P P K Z D K K K P K K P K K D D K P K D K K P P K D P K D K P K K P K K D Z P P P D D P D D P P P P K D K P K K P K P K P K K K P K P D K K K K P Z D K P D P D K P K P P P P K D P D P Z K Z D K D D K P P P D P D D K K Z D Z Z P D K P D D P K P D D K P P D K Z P P Z D P D K K K D D D D P D K K P K K K P K P D P K P K D D K K P D P D P Z P P K P K D K D D P K P D K P D K D K D P K D P D P K K Z P P K D P D K D D K D K D K K K P Z P P P D Z D D K P Z P D K K P K D P D D D D D P P K D K K K P D P D P D P K K P K K K P D D K D D D P P K K K P K K P D P D K D K P Z K P K D K P K P K K D K D P D Z P Z P K D K D K D P K D D K D P D D K K D P D D P D D P P K P K D P K D D D D D Z K K K P D P Z D K K K K P D K K K D D P D K D P K P P P P P D D K P P K P D K P K P D P D D K K P K P P Z D P D P D P K P K D P D K P P P P P D D K D P D D D D P P D K D P D K P K P P P K P P K P P P P D K P D K P K K P P D P D K P Z K D D P P P K P P P P K Z D D P D K P K K K Z D D Z D D K D P D K D K K D K D P P D K P K D K P P K D D D D K D P D D Z K
FP DEAD D K D K D P D K K P P P K K D D P K P P K K K P K D P D D K D P K D D K D P K D P K K P P D K D P P K K P D K P P K K P D P D K D D P K K D P K D P D D D K P K D K D D P P D K P K K P P D P K K P P K D D K D K D P K P K P P D K D D D P P K K K K P K P K K K D D K K P D D P D D K D K D K D K P K P D P K D D D D K D P K D P K P D K K P P K P P P P D P K K P K K P P P K P D P K P P D K P K D P P P P P K D P D D K P P K D D P D P P P P K P D D K D K D D P P D P P P K K D P P K P K P K K D D K D K P K K D D D D P K K P K D D K P D P K P D K P K D P P P K P K P P P P K P K K P K P D K D P K K K K P D P P P D K P P P D D K P D K P K P D K D K D D K D P K P K P D D D K P K P P K P D D P D K D K K K K D K D D K P P P P K P D P P P P P D P D P P D D D D D K P K D K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K P P D K D K P P D P P K K P P D P K D K K P K K P K P P K P K P P D D K D P K P K K K P K D P K D D D D P K D D K D P D P P P D P D K K K D D P D P D K D K K P D D P K D K K P P P P K D K K P P K P P D P K P K D P P K D P P P D D P P P P P K K P D K D K P D D P D D K D P P D K D P P P P K D K D P D K K P K P K D P D D K P K P D D P K P K D K K P P P P K P D D D K K P K D P K P P P K D P K D K D P P P K D D P D K P D K P K D D D K D D K K P P P K P K K D P D P P D P K K D P D K D K D D P P K P K P K D P D D P K K P D P P P P K P K P K P K K D K K D K K K D K K K P P K P D P K P K K P K P K P D P D D D D P K P K P P K K P P D P D K K D K D P D K P K K D K K K K D K D K D D P P K K P P D D P K P D P D D P D K D K P K K P P D P K P D D K D D K D P K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K D K P D P P D P K D P P D K P K P P K D K K D D P P K D P D K D D D K P P P K K K K P P D P D D D D K D P P K P P K D D D P D P P K P K K K K P D P D D D D K K P P D K K P K K K D K K P D P K P K P K P P P K P P K K D D D D D P K D P K D K D D K P P P K K P K D K D D P P D D K P P D D K D P P K K K D K P D P D K D K K P P P P P D P D P D P K P D P K D K K K D P D D P K D D D K K P K D P D P P K P K D P D P D D P K D K K P P K D K P D P K P P K D P D K P D K D P P D D D K K P P P D K K D P D P D K D D D K P P P D D D D D P K P D P K P K K D P K D D K D K P D P P D D D K D D K D K K D D K K P K D K P P D P D D K K P P D D K D P D P D K D K P K K D P P D D K K K P D D P D P K K D K D P D D D D D D P K K K P P K D D P D D K D P D P P P D K K P P P K P D K K D P P D D K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K K P P P D D D P P P D P P P P P P P D D P D D D P P D P P D P P D P D P D P D P P P D P D P D P P P P D D P P P D D D P D D P P D D P P D D P P P P P D D D P P D D D P P D D D D D D D P P D P P P P P P D P D P P P P D P P P D P D D P D P D D D D P D D D D D P P P D P D D P P D D P D P D D P P P D D D P P D P D D P P D P P P P P P D P D P P P P P D D P P P D P P P D P D P D P D P P P D P P D P P P P D P D P D D P D P D P P D P D D D D P P P D D D P D P P P D D P D D D P P D D D D P P P D P D P P D D D P P P P D P P P D

回复

4 条回复,欢迎继续交流。

正在加载回复...