[APIO2007]动物园

2021-04-09 16:24

阅读:493

  • \(n\leq10^5\)

    解析

    注意到每个小朋友只能看到\(5\)个动物,可以状压\(DP\)
    我们可以对每个小朋友预处理一下他面对每种状态会不会满意。
    然后就可枚举动物数\(j\)和当前状态\(s\)进行状压\(DP\)
    \(f[j][s]=max(f[j-1][(s\&15)
    有点绕脑的是这是个环
    我们在开始时规定\(0\)号位(即\(n\)号位)的某一状态可以转移,最后只统计\(n\)号位上这一状态的答案即可。

    #include 
    #include 
    #include 
    #define check(st) ((st&l)||(~st&d))
    using namespace std;
    template  inline void read(Tp &x)
    {
    x=0;
    char ch=getchar();
    while(ch‘9‘) ch=getchar();
    while(ch>=‘0‘&&chy?x:y;}
    void input()
    {
    int a,b,c,l,d,t;
    read(n);read(m);
    for(int i=1;i

  • 评论


    亲,登录后才可以留言!