【UOJ #110】【APIO 2015】Bali Sculptures
http://uoj.ac/problem/110
这道题subtask4和subtask5是不同的算法。
主要思想都是从高位到低位贪心确定答案。
对于subtask4,n比较小,设\(f(i,j)\)表示前\(i\)个雕塑分成\(j\)组能否满足当前答案,最后检查\(f(n,A\sim B)\)是否有值为true的,时间复杂度\(O(n^3\log\sum Y_i)\)。
对于subtask5,n比较大,但A=1,设\(f(i)\)表示前\(i\)个雕塑要满足当前答案最少能分成多少组,最后检查\(f(n)\)是否不大于B,时间复杂度\(O(n^2\log\sum Y_i)\)。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 2003;
int n, A, B, Y[N];
ll sum[N], num = (1ll << 41) - 1;
namespace lalala {
bool f[N][N];
bool can(ll x) {
f[0][0] = true;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= B && j <= i; ++j) {
f[i][j] = false;
for (int k = i - 1; k >= 0; --k)
if (((sum[i] - sum[k]) | x) <= x && f[k][j - 1]) {
f[i][j] = true;
break;
}
}
for (int i = A; i <= B; ++i) if (f[n][i]) return true;
return false;
}
void solve() {
for (int i = 40; i >= 0; --i)
if (can(num ^ (1ll << i))) num ^= (1ll << i);
printf("%lld\n", num);
}
}
namespace hahaha {
int f[N];
bool can(ll x) {
for (int i = 1; i <= n; ++i) {
f[i] = B + 1;
for (int j = i - 1; j >= 0; --j)
if (((sum[i] - sum[j]) | x) <= x && f[j] + 1 < f[i])
f[i] = f[j] + 1;
}
return f[n] <= B;
}
void solve() {
for (int i = 40; i >= 0; --i)
if (can(num ^ (1ll << i))) num ^= (1ll << i);
printf("%lld\n", num);
}
}
int main() {
scanf("%d%d%d", &n, &A, &B);
for (int i = 1; i <= n; ++i) scanf("%d", Y + i), sum[i] = sum[i - 1] + Y[i];
if (A == 1) hahaha::solve();
else lalala::solve();
return 0;
}
【UOJ #110】【APIO 2015】Bali Sculptures的更多相关文章
- 【CTSC 2015】&【APIO 2015】酱油记
蒟蒻有幸参加了神犇云集的CTSC & APIO 2015,感觉真是被虐成傻逼了……这几天一直没更新博客,今天就来补一下吧~~(不过不是题解……) Day 0 从太原到北京现在坐高铁只需3小时= ...
- 【UOJ #112】【APIO 2015】Palembang Bridges
http://uoj.ac/problem/112 先扣掉在同一侧的情况. 当\(k=1\)时,桥建在所有位置的中位数. 当\(k=2\)时,对于每个居民\((S_i,T_i)\),这个居民只会走离\ ...
- 【BZOJ 4070】【APIO 2015】雅加达的摩天楼
http://www.lydsy.com/JudgeOnline/problem.php?id=4070 分块建图. 对每个\(P_i\)分类讨论,\(P_i>\sqrt N\)则直接连边,边数 ...
- 【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。
[SIGGRAPH 2015][巫师3 狂猎 The Witcher 3: Wild Hunt ]顶级的开放世界游戏的实现技术 作者:西川善司 日文链接 http://www.4gamer.net/ ...
- 【MyEclipse 2015】 逆向破解实录系列【终】(纯研究)
声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...
- 【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)
声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...
- 【CEDEC 2015】【夏日课堂】制作事宜技术篇,新手职员挑战VR Demo开发的真相
日文原文地址 http://www.4gamer.net/games/277/G027751/20150829002/ PS:CEDEC 2015的PPT有些要到10月才有下载,目前的都是记者照片修图 ...
- 【UOJ】67 新年的毒瘤 &【BZOJ】1123 BLO
[UOJ 67] 题目链接: 传送门 题解: 第一眼很懵逼……这什么鬼. 思考什么点复合条件……(o(>﹏<)o 1.树,也就是说还剩n-2条边,等价于要删去一个度数为m-n+2的点. 2 ...
- 【UOJ#236】[IOI2016]railroad(欧拉回路,最小生成树)
[UOJ#236][IOI2016]railroad(欧拉回路,最小生成树) 题面 UOJ 题解 把速度看成点,给定的路段看成边,那么现在就有了若干边,然后现在要补上若干边,以及一条\([inf,\) ...
随机推荐
- 【CodeForces】704 C. Black Widow 动态规划+模拟
[题目]C. Black Widow [题意]给定一个表达式,形式为(...)^(...)^......^(...)=1(n个括号),括号中为1~2个值取或.有m个变量,给出表达式的值为xi或 !xi ...
- Java八种基本类型
boolean 二进制位: true ,false byte 二进制位:8 -128 - 127 -2的7次方到2的7次方-1 char 二进制位:16 0 - 65535 short 二 ...
- Linux下用到数据库sqlite3
最近在Linux下用到数据库sqlite3,于是开始了该方面的学习. 0. 引言 我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理, 包括创建数据库.创建 ...
- mui app页面刷新问题 plus.webview.getWebviewById("").reload()
/** * 放回指定页面,并且刷新指定页面 * @param {Object} pageId 指定页面ID */ mui.app_refresh=function(pageId){ if(!mui.i ...
- 模块定义文件.def
一作用 DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明:另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供 ...
- cgi与html相互调用
html中调用cgi.<form action="/cgi-bin/mult.cgi" method="get" target="_blank& ...
- 3.rabbitmq 发布/订阅
1. 发布者 #coding:utf8 import pika import json import sys message = ''.join(sys.argv[1:]) or "hell ...
- 机器学习-sklearn-learn
随即森林 from sklearn import neighbors, datasets, preprocessing from sklearn.model_selection import trai ...
- 【重点】Jmeter----- 将 JDBC Request 查询结果作为下一个接口参数方法(二)
一.说明 jmeter与数据库mysql已连接成功 二.需求 1.前置条件: 1.已user数据库的前8位手机号码作为行动计划的名称 2.行动计划的日期是2018-10-17 2.操作步骤: 1)获取 ...
- day1 作业编写登录窗口
作业一:编写登录接口 (1)输入用户名和密码: (2)认证成功后显示欢迎信息: (3)输错三次后锁定. 思路:我们知道,要想让程序记住之前输入多少次,锁定用户,那么可以使用数据库来保存用户的状态,然而 ...