Luogu3118:[USACO15JAN]Moovie Mooving】的更多相关文章

题面 传送门 Sol 设\(f[S]\)表示看过的电影集合为\(S\),当前电影的最大结束时间 枚举电影和电影的开始时间转移 可以对开始时间\(sort\) 二分一下转移即可 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const in…
[USACO15JAN]Moovie Mooving G 状压难题.不过也好理解. 首先我们根据题意: she does not want to ever visit the same movie twice. 这句话以及\(n\)的取值范围给了我们足够多的提醒:可能是状态压缩. 那么,当我们真正尝试用集合表示每个电影是否已看过的时候,我们却不容易给出能够转移的状态. 举个例子,当我们定义的状态中集合表示成为该状态的元素,那么这将会与最终求该集合的最小值冲突--状态中没法记录集合的最小值. 我们…
P3118 [USACO15JAN]Moovie Mooving G Link 题目描述 Bessie is out at the movies. Being mischievous as always, she has decided to hide from Farmer John for L (1 <= L <= 100,000,000) minutes, during which time she wants to watch movies continuously. She has…
[USACO15JAN]电影移动Moovie Mooving 时间限制: 2 Sec  内存限制: 128 MB 题目描述 Bessie is out at the movies. Being mischievous as always, she has decided to hide from Farmer John for L (1 <= L <= 100,000,000) minutes, during which time she wants to watch movies conti…
题目链接 状压\(dp\). 注意到\(n\leq 20\)且每个只能用一次,所以很显然可以压缩每部电影看过没,记\(f[sta]\)为状态为\(sta\)时最多可以看多久. 转移时先枚举状态,然后枚举没看过的电影,二分出一个小于\(f[sta]\)的时间点进行转移. 答案就是所有大于\(L\)的状态的\(1\)的个数的最小值. #pragma GCC optimize(3) #include<bits/stdc++.h> using namespace std; #define int lo…
解题 首先缩点没啥可说的,然后考虑枚举这次逆行的边.具体来说在正常的图和反图上各跑一次最长路,然后注意减掉起点的贡献,用拓扑排序实现(我这里瞎写了个Bellman_Ford,其实在DAG上这好像和拓扑排序的复杂度是一样的=.=) 一个细节:注意可能整个图是个强连通分量,所以答案初始是起点所在的强联通分量的大小 #include<queue> #include<cstdio> #include<cstring> #include<algorithm> usin…
题目描述 Bessie is out at the movies. Being mischievous as always, she has decided to hide from Farmer John for L (1 <= L <= 100,000,000) minutes, during which time she wants to watch movies continuously. She has N (1 <= N <= 20) movies to choose…
Description Bessie is out at the movies. Being mischievous as always, she has decided to hide from Farmer John for L (1 <= L <= 100,000,000) minutes, during which time she wants to watch movies continuously. She has N (1 <= N <= 20) movies to…
f[i]表示用i集合内的电影可以达到的最长时间 f[i]向f[i|(1<<j)]更新,此时的时间为第j部电影在f[i]前的最晚上映时间 先排序一遍离散化后用前缀最大值解决 时间复杂度$O(n2^n)$ #include<cstdio> #include<algorithm> const int N=20,M=40010; int n,l,i,j,c,d[N],g[N][M],m,q[M],id[M],t[M],f[1<<N],ans=M; inline bo…
T1:三取方格数 题目描述 设有N*N的方格图,我们将其中的某些方格填入正整数,而其他的方格中放入0.某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角.在走过的路上,他取走了方格中的数.(取走后方格中数字变为0)此人从左上角到右下角共走3次,试找出3条路径,使得取得的数总和最大. 输入 第一行:N (4<=N<=20)接下来一个N*N的矩阵,矩阵中每个元素不超过80,不小于0 输出 一行,表示最大的总和. 样例输入 4 1 2 3 4 2 1 3 4 1 2 3 4 1 3 2…