P3622 [APIO2007]【一本通提高状态压缩类动态规划】动物园
广告
绿树公司 - 官方网站: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]【一本通提高状态压缩类动态规划】动物园的更多相关文章
- 【BZOJ2734】【HNOI2012】集合选数(状态压缩,动态规划)
[BZOJ2734][HNOI2012]集合选数(状态压缩,动态规划) 题面 Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所 ...
- 【NOIP2017】宝藏(状态压缩,动态规划)
[NOIP2017]宝藏(状态压缩,动态规划) 题面 洛谷 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路 ...
- 洛谷P2258 子矩阵 题解 状态压缩/枚举/动态规划
作者:zifeiy 标签:状态压缩.枚举.动态规划 题目链接:https://www.luogu.org/problem/P2258 这道题目状态压缩是肯定的,我们需要用二进制来枚举状态. 江湖上有一 ...
- 插头DP(基于连通性状态压缩的动态规划问题)(让你从入门到绝望)
今天,我,Monkey king 又为大家带来大(ju)佬(ruo)的算法啦!--插头DP 例题(菜OJ上的网址:http://caioj.cn/problem.php?id=1489): 那么,这道 ...
- HOJ-2662Pieces Assignment(状态压缩,动态规划)
Pieces Assignment Source : zhouguyue Time limit : 1 sec Memory limit : 64 M Submitted : 415, Accepte ...
- 【NOI2001】炮兵阵地(状态压缩,动态规划)
题面 题面中有图片的存在,所以就贴个地址把 题解 简单题,,,, 原来一直觉得不会做... 现在发现是一道傻逼题 暴力压两行的状态 发现就需要滚一维. 然后暴力检查一下状态的可行性 DP检查MAX就可 ...
- 【BZOJ1087】【SCOI2005】互不侵犯(状态压缩,动态规划)
题面 这种傻逼题懒得粘贴了... 题解 傻逼题 \(f[i][j][k]\)表示当前第\(i\)列,当前放置状态为\(j\),已经放了\(k\)个 暴力判断状态合法性,暴力判断转移合法性,然后统计答案 ...
- HDU-4539郑厂长系列故事——排兵布阵(状态压缩,动态规划)
郑厂长系列故事--排兵布阵 Time Limit : 10000/5000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total ...
- caioj1495: [视频]基于连通性状态压缩的动态规划问题:Formula 2
本来想写一天插头的,但是这题太难受(绝望)500+的代码量..我选择下午放松一下. 先ORZ一下苏大佬(yz的cdq啊%%%%%)居然把cdq论文里面的题抠出来出数据放在c站(呵呵真是个悲伤的故事不过 ...
随机推荐
- CNN-Backbone的Pytorch实现
创建日期: 2020-07-04 17:19:39 简介:卷积神经网络非常适合处理图像相关任务,其优势一是权值共享策略,降低了模型复杂度和参数量,本质上也对应着生物视觉神经的感受野.二是其强大的特征提 ...
- UniApp文件上传(SpringBoot+Minio)
UniApp文件上传(SpringBoot+Minio) 一.Uni文件上传 (1).文件上传的问题 UniApp文件上传文档 uni.uploadFile({ url: 'https://www.e ...
- JS中的 && 、|| 、??、?. 运算符
javascript有不少好用的运算符,合理的使用可以大大提高工作效率,以下简单介绍了4种,具体如下: && 逻辑与运算(&&)是 AND 布尔操作.只有两个操作数都为 ...
- Java-GUI 编程之 JList、JComboBox实现列表框
目录 JList.JComboBox实现列表框 简单列表框 不强制存储列表项的ListModel和ComboBoxModel 强制存储列表项的DefaultListModel和DefaultCombo ...
- 零基础学Java第一节(语法格式、数据类型)
本篇文章是<零基础学Java>专栏的第一篇文章,从本篇文章开始,将会连更本专栏,带领大家将Java基础知识彻底学懂,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! ...
- 为什么 Redis 要有哨兵机制?
作者:小林coding 计算机八股文刷题网站:https://xiaolincoding.com 大家好,我是小林. 这次聊聊,Redis 的哨兵机制. 提纲 为什么要有哨兵机制? 在 Redis 的 ...
- 『忘了再学』Shell基础 — 15、环境变量(三)
目录 1.LANG语系变量介绍 2.如何查看Linux中支持的语系 3.查看当前系统的语系 4.总结 提示: 在Linux系统中,环境变量分为两种.一种是用户自定义的环境变量,另一种是系统自带的环境变 ...
- 每日一题20180330-Linux
一.问题 1.1 统计/var/log/下所有文件个数 1.2 查找出/var/log目录下面修改时间是7天以前,大小在50k到2M之间,并以.log结尾的文件把这些文件复制到/data目录中 1.3 ...
- Windows 程序安装与更新方案: Clowd.Squirrel
我的Notion Clowd.Squirrel Squirrel.Windows 是一组工具和适用于.Net的库,用于管理 Desktop Windows 应用程序的安装和更新. Squirrel.W ...
- vue ui 创建vue项目 没反应的解决办法 2021
1.升级vue 脚手架 即可 2.再 vue ui 创建项目 cnpm i -g @vue/cli