社区讨论

76pts求调

P2444[POI 2000] 病毒参与者 12已保存回复 14

讨论操作

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

当前回复
14 条
当前快照
1 份
快照标识符
@m2br4xyh
此快照首次捕获于
2024/10/16 18:51
去年
此快照最后确认于
2025/12/28 11:04
2 个月前
查看原帖
rt.
CPP
#include <bits/stdc++.h>
#define 常量 const
#define 整型 int
#define 长整型 long long
#define 双精度浮点型 double
#define 单精度浮点型 float
#define 字符串 string
#define 大小 size
#define 布尔型 bool
#define 并且 &&
#define 或者 ||
#define 无类型 void
#define 队列 queue
#define 放入 push
#define 空 empty
#define 首位 front
#define 斩首 pop
#define 主函数 main
#define 使用 using
#define 标准 std
#define 命名空间 namespace
#define 退出 exit(0)
#define 真 true
#define 假 false
#define 自增 ++
#define 自减 --
#define 负 -
#define 加 +
#define 减 -
#define 乘 *
#define 除 /
#define 加以 +=
#define 减去 -=
#define 等于 ==
#define 赋值 =
#define 小于 <
#define 大于 >
#define 小于等于 <=
#define 大于等于 >=
#define 不等于 !=
#define 一 +1
#define 二 +2
#define 两 +2
#define 三 +3
#define 四 +4
#define 五 +5
#define 六 +6
#define 七 +7
#define 八 +8
#define 九 +9
#define 零 +0
#define 十 *10
#define 百 *100
#define 千 *1000
#define 万 *10000
#define 亿 *100000000
#define 输入 cin
#define 输出 cout
#define 换行 endl
#define 返回 return
#define 系统函数 system
#define 暂停 pause
#define 计数 cnt
#define 求和 sum
#define 总数 tot
#define 结构体 struct
#define 构造 build
#define 当 while
#define 循环 for
#define 如果 if
#define 否则 else
#define 跳出 break
#define 跳过 continue
#define 不存在 !
#define 非 !
#define 读写优化 ios::sync_with_stdio(false);cin.tie(0);
使用 命名空间 标准;

常量 整型 最大总数 赋值 两 千 零 五,长度之和 赋值 三 万 零 五;
整型 总数;
布尔型 已经过[最大总数],已访问[最大总数];

结构体 自动机
{
    整型 子[二];
    整型 权,失败指针;
};
自动机 机[长度之和];
整型 计数;

无类型 建立(字符串 串)
{
    整型 现 赋值 零;
    循环(整型 计数器一 赋值 零 ; 计数器一 小于 串.大小() ; 计数器一 自增)
    {
        如果(不存在 机[现].子[串[计数器一] 减 (四 十 八)])
        {
            机[现].子[串[计数器一] 减 (四 十 八)] 赋值 自增 计数;
        }
        现 赋值 机[现].子[串[计数器一] 减 (四 十 八)];
    }
    机[现].权 自增;
}

无类型 处理指针()
{
    队列 <整型> 待处理;
    如果(机[零].子[零])
    {
        机[机[零].子[零]].失败指针 赋值 零;
        待处理.放入(机[零].子[零]);
    }
    如果(机[零].子[一])
    {
        机[机[零].子[一]].失败指针 赋值 零;
        待处理.放入(机[零].子[一]);
    }
    当(非 待处理.空())
    {
        整型 现 赋值 待处理.首位();
        待处理.斩首();
        如果(不存在 机[现].子[零])
        {
            机[现].子[零] 赋值 机[机[现].失败指针].子[零];
        }
        否则
        {
            机[机[现].子[零]].失败指针 赋值 机[机[现].失败指针].子[零];
            待处理.放入(机[现].子[零]);
        }
        如果(不存在 机[现].子[一])
        {
            机[现].子[一] 赋值 机[机[现].失败指针].子[一];
        }
        否则
        {
            机[机[现].子[一]].失败指针 赋值 机[机[现].失败指针].子[一];
            待处理.放入(机[现].子[一]);
        }
    }
}

无类型 深搜(整型 现)
{
    已经过[现] 赋值 真;
    循环(整型 计数器一 赋值 零;计数器一 小于等于 一;计数器一 自增)
    {
        如果(已经过[机[现].子[计数器一]])
        {
            输出 << "TAK" << 换行;
            退出;
        }
        否则 如果((不存在 机[机[现].子[计数器一]].权) 并且 (非 已访问[机[现].子[计数器一]]))
        {
            已访问[机[现].子[计数器一]] 赋值 真;
            深搜(机[现].子[计数器一]);
        }
    }
    已经过[现] 赋值 假;
}

整型 主函数()
{
    读写优化
    输入 >> 总数;
    字符串 串;
    循环(整型 计数器一 赋值 一 ; 计数器一 小于等于 总数 ; 计数器一 自增)
    {
        输入 >> 串;
        建立(串);
    }
    处理指针();
    深搜(零);
    输出 << "NIE" << 换行;
    返回 零;
}

回复

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

正在加载回复...