[Apio2015]巴厘岛的雕塑 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 494  Solved: 238[Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 N 座雕塑,为方便起见,我们把这些雕塑从 1 到 N 连续地进行标号,其中第 i 座雕塑的年龄是 Yi 年.为了使这条路的环境更加优美,政府想把这些雕塑分成若干组,并通过在组与组之间…
居然要对不同的数据写不同的dp= = 首先记得开long long,<<的时候要写成1ll<<bt 根据or的性质,总体思路是从大到小枚举答案的每一位,看是否能为0. 首先对于A=1的情况,因为没有最小值限制,所以设f[i]为到i为止,当前位能为0的最小长度.判断f[n]是否小于等于B即可.注意保证当前位为0的前提下也要保证之前枚举的位不变.时间复杂度是\( O(nlog_2nlog_2ans) \) 对于其他情况(n<=100),设f[i][j]表示枚举到i为止已经分了j段…
自己首先想了一种方法$f(i)$表示前$i$个最小值为多少. 然而发现位运算并不满足局部最优性. 然后我们可以从高到低贪心的判断,使得每一组的和在一个特定的范围之内. 还要特判最后一个Subtask, 想了想不用特判的办法,觉得bitset压不过去,就没写. #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include…
Description 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 N 座雕塑,为方便起见,我们把这些雕塑从 1 到 N 连续地进行标号,其中第 i 座雕塑的年龄是 Yi 年.为了使这条路的环境更加优美,政府想把这些雕塑分成若干组,并通过在组与组之间种上一些树,来吸引更多的游客来巴厘岛. 下面是将雕塑分组的规则: 这些雕塑必须被分为恰好 X 组,其中 A< = X< = B,每组必须含有至少一个雕塑,每个雕塑也必须属于且只属于一个组.同一组中的所有雕塑必须…
http://www.lydsy.com/JudgeOnline/problem.php?id=4069 a!=1: 从高位到低位一位一位的算 记录下哪些位必须为0 dp[i][j] 表示前i个数分为j组,这一位为0,且满足之前必须为0的位也是0 是否可行 枚举k,表示k+1~i分为一组 若k+1~i的和满足 必须为0的位是0,且dp[k][j-1] 为true 则dp[i][j]为true a=1: 从高位到低位一位一位的算 记录下哪些位必须为0 dp[i] 表示前i个数,这一位为0,且满足之…
[BZOJ4069][Apio2015]巴厘岛的雕塑 Description 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 N 座雕塑,为方便起见,我们把这些雕塑从 1 到 N 连续地进行标号,其中第 i 座雕塑的年龄是 Yi 年.为了使这条路的环境更加优美,政府想把这些雕塑分成若干组,并通过在组与组之间种上一些树,来吸引更多的游客来巴厘岛. 下面是将雕塑分组的规则: 这些雕塑必须被分为恰好 X 组,其中 A< = X< = B,每组必须含有至少一个雕塑,每…
[APIO2015]巴厘岛的雕塑  题目描述 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有\(N\)座雕塑,为方便起见,我们把这些雕塑从 1 到\(N\)连续地进行标号,其中第\(i\)座雕塑的年龄是\(Y_{i}\)年. 为了使这条路的环境更加优美,政府想把这些雕塑分成若干组,并通过在组与组之间种上一些树,来吸引更多的游客来巴厘岛. 下面是将雕塑分组的规则: 这些雕塑必须被分为恰好\(X\)组,其中 \(A<=X<=B\),每组必须含有至少一个雕塑,每个雕…
写了好久.... 刚刚调了一个小时各种对拍,,,,最后发现是多写了一个等号,,,,内心拒绝 表示一开始看真的是各种懵逼啊 在偷听到某位大佬说的从高位开始贪心后发现可做 首先考虑小数据(因为可以乱搞) 所以先从高位开始枚举位数: for(int k=all; k ;k--) ans表示当前答案,f[i][j]表示dp到第i为,分为j段,是否可以满足第k位为0 ans初始为0,每次DP完就修改ans, 所以枚举i和j,然后枚举上一段的结尾l, 由于是or,所以之前已经有的是消不掉的, 于是有   …
题意 给你长度为 \(n\) 的序列,要求分成 \(k\) 段连续非空的区间,求所有区间和的 \(or\) 最小值. 分析 定义 \(f_{i,j}\) 表示前 \(i\) 个点分成 \(j\) 段的最小 \(or\) 是有问题的,因为可能有一位一定在后面出现而某一位没有必要在后面出现,这时贪心就出现了问题. 考虑按位贪心,假设考虑到了第 \(b\) 位,定义 \(f_{i,j}\) 表示前 \(i\) 个点分成 \(j\) 段且满足 \(b\) 以上位的限制,第 \(b\) 位为 \(0\)…
传送门 话说莫非所有位运算都可以用贪心解决么……太珂怕啦…… 一直把或运算看成异或算我傻逼…… 考虑从高位到低位贪心,如果能使答案第$i$位为0那么肯定比不为$0$更优 然后考虑第$i$位是否能为$0$ 设$f[i][j]$表示将前$i$个数分为$j$段,能否在最高位到第$i+1$位都与当前$ans$一致的情况下使第$i$位为0,可以的话$f[i][j]$为1,否则为0 考虑状态如何转移 如果$f[k][j-1]$为1且$sum[i]-sum[k]$的第$i$位为0则可以由$f[k][j-1]$…