【LOJ】#2886. 「APIO2015」巴厘岛的雕塑 Bali Sculptures
题解
感觉自己通过刷水题混LOJ刷题量非常成功
首先是二进制枚举位,判是否合法
要写两个solve不是很开心,\(A\)不为1的直接记录状态\(f[i][j]\)为能否到达前\(i\)个分成\(j\)段,转移\(n^3\)
\(A\)为1的相当于在一张拓扑图上求到\(N\)的最短路是否小与\(B\),连边方式即为如果\(sum[j] - sum[k]\)是二分值的一个子集则\(k\)到\(j\)有边
代码
#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define pdi pair<db,int>
#define mp make_pair
#define pb push_back
#define enter putchar('\n')
#define space putchar(' ')
#define eps 1e-8
#define mo 974711
#define MAXN 505
//#define ivorysi
using namespace std;
typedef long long int64;
typedef double db;
template<class T>
void read(T &res) {
res = 0;char c = getchar();T f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
res = res * 10 + c - '0';
c = getchar();
}
res *= f;
}
template<class T>
void out(T x) {
if(x < 0) {x = -x;putchar('-');}
if(x >= 10) {
out(x / 10);
}
putchar('0' + x % 10);
}
int N,A,B,l;
int64 y[2005],sum[2005];
int dp[2005];
bool f[105][105];
void Solve1() {
int64 ans = 0;
for(int i = l ; i >= 0 ; --i) {
int64 t = ans + (1LL << i) - 1;
for(int j = 1 ; j <= N ; ++j) {
dp[j] = N + 1;
for(int k = 0 ; k < j ; ++k) {
if(((sum[j] - sum[k]) & t) == (sum[j] - sum[k])) dp[j] = min(dp[j],dp[k] + 1);
}
}
if(dp[N] > B) {ans |= (1LL << i);}
}
out(ans);enter;
}
void Solve2() {
int64 ans = 0;
for(int i = l ; i >= 0 ; --i) {
int64 t = ans + (1LL << i) - 1;
memset(f,0,sizeof(f));
f[0][0] = 1;
for(int j = 1 ; j <= N ; ++j) {
for(int k = 0 ; k < j ; ++k) {
if(((sum[j] - sum[k]) & t) == (sum[j] - sum[k])) {
for(int h = 1 ; h <= j ; ++h) {
f[j][h] |= f[k][h - 1];
}
}
}
}
bool flag = 0;
for(int k = A ; k <= B ; ++k) {
if(f[N][k]) {flag = 1;break;}
}
if(!flag) ans |= (1LL << i);
}
out(ans);enter;
}
void Init() {
read(N);read(A);read(B);
for(int i = 1 ; i <= N ; ++i) {read(y[i]);sum[i] = sum[i - 1] + y[i];}
int64 t = sum[N];
l = 0;
while(t) {++l;t >>= 1;}
}
int main() {
#ifdef ivorysi
freopen("f1.in","r",stdin);
#endif
Init();
if(A == 1) Solve1();
else Solve2();
}
【LOJ】#2886. 「APIO2015」巴厘岛的雕塑 Bali Sculptures的更多相关文章
- Loj #2192. 「SHOI2014」概率充电器
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- Loj #3096. 「SNOI2019」数论
Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...
- Loj #3093. 「BJOI2019」光线
Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...
- Loj #3089. 「BJOI2019」奥术神杖
Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...
- Loj #2542. 「PKUWC2018」随机游走
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次 ...
- Loj #3059. 「HNOI2019」序列
Loj #3059. 「HNOI2019」序列 给定一个长度为 \(n\) 的序列 \(A_1, \ldots , A_n\),以及 \(m\) 个操作,每个操作将一个 \(A_i\) 修改为 \(k ...
- Loj #3056. 「HNOI2019」多边形
Loj #3056. 「HNOI2019」多边形 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3, \ldots , n\).最开 ...
- Loj #3055. 「HNOI2019」JOJO
Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...
- Loj 3058. 「HNOI2019」白兔之舞
Loj 3058. 「HNOI2019」白兔之舞 题目描述 有一张顶点数为 \((L+1)\times n\) 的有向图.这张图的每个顶点由一个二元组 \((u,v)\) 表示 \((0\le u\l ...
随机推荐
- MT【179】最大最小老问题
求$\max\{x^2+2y+20,y^2-6x+12\}$的最小值______ 提示:$4t\ge 3(x^2+2y+20)+y^2-6x+12=3(x-1)^2+(y+3)^2+60\ge 60, ...
- 【刷题】LOJ 6006 「网络流 24 题」试题库
题目描述 假设一个试题库中有 \(n\) 道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取 \(m\) 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组 ...
- VS2017企业版本(安装包+key)+ .NET Reflector 9.0
关于VS2017安装的一点扩充说明(15.5):http://www.cnblogs.com/dunitian/p/8051985.html Key激活无需断网 Visual Studio 2017 ...
- 【codevs1006】等差数列
题目大意:给定一个 N(N <= 100) 个数字组成的集合,从中取出若干数字组成的等差数列最长是多少. 题解:由于这道题数据范围较小,可以直接依据每个数字进行枚举.首先,这道题给出的是一个集合 ...
- SSM搭建Spring单元测试环境
原文链接:https://jingyan.baidu.com/article/93f9803f5a97a4e0e46f55c8.html SSM搭建Spring单元测试环境
- No module named flask.ext.script 解决方法
把 .ext. 换成 _ 就OK了 from flask.ext.script import Manager from flask_script import Manager
- 解决小程序中 cover-view无法盖住canvas的问题,仅安卓真机出现
原因在于系统页面渲染的差异,在安卓中页面dom的渲染并不是完成按照上下顺序来的, 有可能出现写在后面的dom被先渲染出来,因此会随机出现能盖住.不能盖住的情况,很诡异是不是? 开发者工具中并非真机,只 ...
- Scala进阶之路-I/O流操作之文件处理
Scala进阶之路-I/O流操作之文件处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 说起Scala语言操作文件对象其实是很简单的,大部分代码和Java相同. 一.使用Scal ...
- log4j2打印jdbcTemplate的sql以及参数
log4j2打印jdbcTemplate的sql以及参数 ——IT唐伯虎 摘要: log4j2打印jdbcTemplate的sql以及参数. 在log4j2.xml加上这两个logger即可: < ...
- [六字真言]5.咪.功力不足,学习前端JavaScript异常
A Guide to Proper Error Handling in JavaScript 这是关于JavaScript中异常处理的故事.如果你相信 墨菲定律 ,那么任何事情都可能出错,不,一定会出 ...