广告

绿树公司 - 官方网站:https://wangping-lvshu.github.io/LvshuNew/

绿树智能 - 官方网站:https://wangping-lvshu.github.io/LvshuZhineng/

(现在使用,人人均可获得300元大奖)

[APIO2007] 动物园

题目描述

新建的圆形动物园是亚太地区的骄傲。圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一
种动物。如下图所示:

你是动物园的公共主管。你要做的是,让每个来动物园的人都尽可能高兴。今天有一群小朋友来动物园参观,你希望能让他们在动物园度过一段美好的时光。但这并不是一件容易的事——有的动物有一些小朋友喜欢,有的动物有一些小朋友害怕。如,

Alex

\texttt{Alex}

Alex 喜欢可爱的猴子和考拉,而害怕拥牙齿锋利的狮子。而

Polly

\texttt{Polly}

Polly 会因狮子有美丽的鬃毛而喜欢它,但害怕有臭味的考拉。你可以选择将一些动物从围栏中移走以使得小朋友不会害怕。但你不能移走所有的动物,否则小朋友们就没有动物可看了。每个小朋友站在大围栏圈的外面,可以看到连续的

5

5

5 个围栏。你得到了所有小朋友喜欢和害怕的动物信息。当下面两处情况之一发生时,小朋友就会高兴:

  • 至少有一个他害怕的动物被移走
  • 至少有一个他喜欢的动物没被移走

例如,考虑下图中的小朋友和动物:

  • 假如你将围栏

    4

    4

    4 和

    12

    12

    12 的动物移走。

    Alex

    \texttt{Alex}

    Alex 和

    Ka-Shu

    \texttt{Ka-Shu}

    Ka-Shu 将很高兴,因为至少有一个他们害怕的动物被移走了。这也会使

    Chaitanya

    \texttt{Chaitanya}

    Chaitanya 高兴,因为他喜欢的围栏

    6

    6

    6 和

    8

    8

    8 中的动物都保留了。但是,

    Polly

    \texttt{Polly}

    Polly 和

    Hwan

    \texttt{Hwan}

    Hwan 将不高兴,因为他们看不到任何他们喜欢的动物,而他们害怕的动物都还在。这种安排方式使得三个小朋友高兴。

  • 现在,换一种方法,如果你将围栏

    4

    4

    4 和

    6

    6

    6 中的动物移走,

    Alex

    \texttt{Alex}

    Alex 和

    Polly

    \texttt{Polly}

    Polly 将很高兴,因为他们害怕的动物被移走了。

    Chaitanya

    \texttt{Chaitanya}

    Chaitanya 也会高兴,虽然他喜欢的动物

    6

    6

    6 被移走了,他仍可以看到围栏

    8

    8

    8 里面他喜欢的动物。同样的 Hwan 也会因可以看到自己喜欢的动物

    12

    12

    12 而高兴。唯一不高兴的只有

    Ka-Shu

    \texttt{Ka-Shu}

    Ka-Shu。

  • 如果你只移走围栏

    13

    13

    13 中的动物,

    Ka-Shu

    \texttt{Ka-Shu}

    Ka-Shu 将高兴,因为有一个他害怕的动物被移走了,

    Alex

    \texttt{Alex}

    Alex,

    Polly

    \texttt{Polly}

    Polly,

    Chaitanya

    \texttt{Chaitanya}

    Chaitanya 和

    Hwan

    \texttt{Hwan}

    Hwan 也会高兴,因为他们都可以看到至少一个他们喜欢的动物。所以有

    5

    5

    5 个小朋友会高兴。这种方法使得了最多的小朋友高兴。

输入格式

输入的第一行包含两个整数

N

N

N,

C

C

C,用空格分隔。

N

N

N 是围栏数(

10

N

1

0

4

10 \le N \le 10^4

10≤N≤104),

C

C

C 是小朋友的个数(

1

C

5

×

1

0

4

1 \le C \le 5\times 10^4

1≤C≤5×104)。

围栏按照顺时针的方向编号为

1

,

2

,

3

,


,

N

1,2,3,\cdots,N

1,2,3,⋯,N。

接下来的

C

C

C 行,每行描述一个小朋友的信息,以下面的形式给出:

E

,

F

,

L

,

X

1

,

X

2

,


,

X

F

,

Y

1

,

Y

2

,


,

Y

L

E, F, L ,X_1, X_2 ,\cdots ,X_F ,Y_1 ,Y2 ,\cdots ,Y_L

E,F,L,X1​,X2​,⋯,XF​,Y1​,Y2,⋯,YL​。

其中:

E

E

E 表示这个小朋友可以看到的第一个围栏的编号(

1

E

N

1 \le E \le N

1≤E≤N),换句话说,该小朋友可以看到的围栏为

E

E

E,

E

+

1

E+1

E+1,

E

+

2

E+2

E+2,

E

+

3

E+3

E+3,

E

+

4

E+4

E+4。

注意,如果编号超过

N

N

N 将继续从

1

1

1 开始算。

如:当

N

=

14

N=14

N=14,

E

=

13

E=13

E=13 时,这个小朋友可以看到的围栏为

13

,

14

,

1

,

2

13,14,1, 2

13,14,1,2 和

3

3

3。

F

F

F 表示该小朋友害怕的动物数。

L

L

L 表示该小朋友喜欢的动物数。

围栏

X

1

,

X

2

,


,

X

F

X_1, X_2, \cdots, X_F

X1​,X2​,⋯,XF​ 中包含该小朋友害怕的动物。

围栏

Y

1

,

Y

2

,


,

Y

L

Y1, Y2, \cdots, Y_L

Y1,Y2,⋯,YL​ 中包含该小朋友喜欢的动物。

X

1

,

X

2

,


,

X

F

,

Y

1

,

Y

2

,


,

Y

L

X_1, X_2, \cdots, X_F, Y_1, Y_2, \cdots, Y_L

X1​,X2​,⋯,XF​,Y1​,Y2​,⋯,YL​ 是两两不同的整数,而且所表示的围栏都是该小朋友可以看到的。

小朋友已经按照他们可以看到的第一个围栏的编号从小到大的顺序排好了(这样最小的

E

E

E 对应的小朋友排在第一个,最大的

E

E

E 对应的小朋友排在最后一个)。

注意可能有多于一个小朋友对应的

E

E

E 是相同的。

输出格式

仅输出一个数,表示最多可以让多少个小朋友高兴。

输入输出样例

样例输入1

14 5
2 1 2 4 2 6
3 1 1 6 4
6 1 2 9 6 8
8 1 1 9 12
12 3 0 12 13 2

样例输出1

5

样例输入2

12 7
1 1 1 1 5
5 1 1 5 7
5 0 3 5 7 9
7 1 1 7 9
9 1 1 9 11
9 3 0 9 11 1
11 1 1 11 1

样例输出2

6

说明/提示

数据范围
对于

100

%

100\%

100% 的数据,

10

N

1

0

4

10 \le N \le 10^4

10≤N≤104,

1

C

5

×

1

0

4

1 \le C \le 5\times 10^4

1≤C≤5×104,

1

E

N

1 \le E \le N

1≤E≤N。

样例说明

  • 第一个样例是题目描述中的例子,所有的

    C

    =

    5

    C=5

    C=5 个小朋友都能高兴。

  • 第二个样例是一个不能使得所有

    C

    =

    7

    C=7

    C=7 个小朋友都高兴的例子。

Code

#include <bits/stdc++.h>
using namespace std;
int n, m, ans, f[50001][40], num[50001][40]; int main()
{
cin >> n >> m;
for (int i = 1, j, E, F, L, t, sta1, sta2; i <= m; ++i)
{
for (cin >> E >> F >> L, j = 1, sta1 = sta2 = 0; j <= F; ++j)
cin >> t, t = (t - E + n) % n, sta1 |= 1 << t;
for (j = 1; j <= L; ++j)
cin >> t, t = (t - E + n) % n, sta2 |= 1 << t;
for (j = 0; j < 32; ++j)
if ((j & sta1) || (~j & sta2))
++num[E][j];
}
for (int i = 0; i < 32; ans = max(f[n][i], ans), ++i)
{
memset(f[0], -0x3f, sizeof(f[0])), f[0][i] = 0;
for (int j = 1; j <= n; ++j)
for (int k = 0; k < 32; ++k)
f[j][k] = max(f[j - 1][(k & 15) << 1], f[j - 1][(k & 15) << 1 | 1]) + num[j][k];
}
cout << ans;
return 0;
}

P3622 [APIO2007]【一本通提高状态压缩类动态规划】动物园的更多相关文章

  1. 【BZOJ2734】【HNOI2012】集合选数(状态压缩,动态规划)

    [BZOJ2734][HNOI2012]集合选数(状态压缩,动态规划) 题面 Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所 ...

  2. 【NOIP2017】宝藏(状态压缩,动态规划)

    [NOIP2017]宝藏(状态压缩,动态规划) 题面 洛谷 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路 ...

  3. 洛谷P2258 子矩阵 题解 状态压缩/枚举/动态规划

    作者:zifeiy 标签:状态压缩.枚举.动态规划 题目链接:https://www.luogu.org/problem/P2258 这道题目状态压缩是肯定的,我们需要用二进制来枚举状态. 江湖上有一 ...

  4. 插头DP(基于连通性状态压缩的动态规划问题)(让你从入门到绝望)

    今天,我,Monkey king 又为大家带来大(ju)佬(ruo)的算法啦!--插头DP 例题(菜OJ上的网址:http://caioj.cn/problem.php?id=1489): 那么,这道 ...

  5. HOJ-2662Pieces Assignment(状态压缩,动态规划)

    Pieces Assignment Source : zhouguyue Time limit : 1 sec Memory limit : 64 M Submitted : 415, Accepte ...

  6. 【NOI2001】炮兵阵地(状态压缩,动态规划)

    题面 题面中有图片的存在,所以就贴个地址把 题解 简单题,,,, 原来一直觉得不会做... 现在发现是一道傻逼题 暴力压两行的状态 发现就需要滚一维. 然后暴力检查一下状态的可行性 DP检查MAX就可 ...

  7. 【BZOJ1087】【SCOI2005】互不侵犯(状态压缩,动态规划)

    题面 这种傻逼题懒得粘贴了... 题解 傻逼题 \(f[i][j][k]\)表示当前第\(i\)列,当前放置状态为\(j\),已经放了\(k\)个 暴力判断状态合法性,暴力判断转移合法性,然后统计答案 ...

  8. HDU-4539郑厂长系列故事——排兵布阵(状态压缩,动态规划)

    郑厂长系列故事--排兵布阵 Time Limit : 10000/5000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total ...

  9. caioj1495: [视频]基于连通性状态压缩的 动态规划问题:Formula 2

    本来想写一天插头的,但是这题太难受(绝望)500+的代码量..我选择下午放松一下. 先ORZ一下苏大佬(yz的cdq啊%%%%%)居然把cdq论文里面的题抠出来出数据放在c站(呵呵真是个悲伤的故事不过 ...

随机推荐

  1. 逆向进阶,利用 AST 技术还原 JavaScript 混淆代码

    什么是 AST AST(Abstract Syntax Tree),中文抽象语法树,简称语法树(Syntax Tree),是源代码的抽象语法结构的树状表现形式,树上的每个节点都表示源代码中的一种结构. ...

  2. 为什么vue中的v-bind用在class属性上有点怪?

    如图所见,普通的标签属性我们直接使用 :属性名=`props的值` 就可以了.为什么用到class里要加[ ] 这个???

  3. Java — 面向对象

    目录 一.类和对象 二.方法 三.封装 四.继承 五.多态 六.final 七.static 八.抽象类 九.接口 十.内部类 一.类和对象 简介:类是对事物的一种描述,对象则为具体存在的事物. 类的 ...

  4. ELF文件结构

    ELF文件结构 ELF文件的全称是Executable and Linkable Format,直译为"可执行可链接格式",包括目标文件(.o).可执行文件(可以直接运行).静态链 ...

  5. HCNP Routing&Switching之MSTP

    前文我们了解了RSTP保护相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16255918.html:今天我们来了解下MSTP相关话题: MSTP技术背 ...

  6. grafana展示zabbix统计

    1.安装grafana   参照官网文档:https://grafana.com/grafana/download 我这边是centos系统,执行这两个命令 wget https://dl.grafa ...

  7. Property or method "xxx" is not defined on the instance but referenced during render

    是xxx中的data写成date了,因此报错. 这个错误属于粗心

  8. TKE qGPU 通过 CRD 管理集群 GPU 卡资源

    作者 刘旭,腾讯云高级工程师,专注容器云原生领域,有多年大规模 Kubernetes 集群管理经验,现负责腾讯云 GPU 容器的研发工作. 背景 目前 TKE 已提供基于 qGPU 的算力/显存强隔离 ...

  9. uniapp项目vue2升级vue3简单记录

    看到好多开源项目都升级了vue3,看文章说vue3性能升级很多,而且组合式api很香,遂把最近开发的自助洗车app升级下,在此记录下出现的问题. uniapp升级vue3官方指南 我是先去vue官网看 ...

  10. 计算机网络 - OSI 7层网络模型各层对应的功能

    应用层 - 负责给应用程序提供统一的接口 表示层 - 负责把数据的解压缩和编码 会话层 - 负责会话的管理(建立和终止) 传输层 - 负责端到端的数据传输 网络层 - 负责数据的路由.转发.分片 数据 ...