/*
用f[i][k]表示考虑到第i个雕塑,分成k组,可不可行(这是一个bool类型的数组)
转移:
f[i][k]=f[j][k-1],sum[i]-sum[j]合法
*/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std; typedef long long ll;
const int max_n = ;
const ll inf = 1e15; inline int getnum() {
int ans = ; char c; bool flag = false;
while (!isdigit(c = getchar()) && c != '-');
if (c == '-') flag = true; else ans = c - '';
while (isdigit(c = getchar())) ans = ans * + c - '';
return ans * (flag ? - : );
} int a[max_n], limit_A, limit_B, n;; namespace part1 {
const int max_n_small = ;
bool able[max_n_small][max_n_small]; inline bool check(ll ba, ll tar) {
memset(able, , sizeof(able));
able[][] = true; for (int i = ; i <= n; i++)
for (int j = ; j <= limit_B; j++) {
ll sum = a[i];
for (int k = i - ; k >= ; k--) {
if (able[k][j - ] && (sum | ba) < tar) {
able[i][j] = true;
break;
}
sum += a[k];
}
} for (int i = limit_A; i <= limit_B; i++)
if (able[n][i])
return true;
return false;
} inline void solve() {
ll sum = ;
for (int i = ; i <= n; i ++)
sum += a[i];
sum <<= ;
int max_bit = ;
for (; sum >> max_bit; max_bit++);
max_bit--; ll ans = ;
for (int i = max_bit; i >= ; i--) {
ll tar = ans | (1LL << i);
if (!check(ans, tar))
ans += (1LL << i);
}
cout << ans << endl;
}
} namespace part2 {
const int max_n_small = ;
bool able[max_n_small];
int f[max_n_small]; inline bool check(ll ba, ll tar) {
memset(able, , sizeof(able));
memset(f, 0x7f, sizeof(f));
able[] = true;
f[] = ; for (int i = ; i <= n; i++) {
ll sum = a[i];
for (int k = i - ; k >= ; k--) {
if (able[k] && (sum | ba) < tar) {
able[i] = true;
f[i] = min(f[i], f[k] + );
} sum += a[k];
}
} if (able[n] && f[n] <= limit_B)
return true;
else
return false;
} inline void solve() {
ll sum = ;
for (int i = ; i <= n; i ++)
sum += a[i];
sum <<= ;
int max_bit = ;
for (; sum >> max_bit; max_bit++);
max_bit--; ll ans = ;
for (int i = max_bit; i >= ; i--) {
ll tar = ans | (1LL << i);
if (!check(ans, tar))
ans += (1LL << i);
}
cout << ans << endl;
}
} int main() {
freopen("sculpture.in", "r", stdin);
freopen("sculpture.out", "w", stdout);
n = getnum(); limit_A = getnum(); limit_B = getnum();
for (int i = ; i <= n; i++) a[i] = getnum(); if (n > )
part2::solve();
else
part1::solve();
}

繁华模拟赛 ljw分雕塑的更多相关文章

  1. 繁华模拟赛 ljw搭积木

    #include<iostream> #include<cstdio> #include<string> #include<cstring> #incl ...

  2. 繁华模拟赛 Vicent与游戏

    #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #i ...

  3. 2018/3/20 noip模拟赛 5分

    T1 傻逼题,写了cmp没sort,5分. T2 树上差分,写了树剖线段树,超时,0分. T3 树归,0分. 我是个zz

  4. 2018/3/13 noiρ[rəʊ]模拟赛 125分

    T1 60分暴力,水分也不会水,打表也不会打,正解是不可能写正解的,这辈子都写不出来正解的,虽然是zz题但是也拿不到分这样子. 正解:(啥?正解是sb组合数?这都他娘的想不到,真鸡儿丢人我自杀吧.) ...

  5. 20180824Noip模拟赛10分总结

    嗯,总之,是我太傻了. 我真傻,真的,我单知道最小生成树,却不知道还有最大生成树 T1 最大生成树.... 累加每一个环内,最大生成树的边权,(对环求最大生成树,则必然剩下一个边权最小的边(因为是求生 ...

  6. [繁华模拟赛]Evensgn 剪树枝

    Evensgn 剪树枝 题目 繁华中学有一棵苹果树.苹果树有 n 个节点(也就是苹果),n − 1 条边(也就 是树枝).调皮的 Evensgn 爬到苹果树上.他发现这棵苹果树上的苹果有两种:一 种是 ...

  7. 清北学堂模拟赛d2t6 分糖果(candy)

    题目描述总共有n颗糖果,有3个小朋友分别叫做L,Y,K.每个小朋友想拿到至少k颗糖果,但这三个小朋友有一个共同的特点:对3反感.也就是说,如果某个小朋友拿到3颗,13颗,31颗,333颗这样数量的糖果 ...

  8. 繁华模拟赛day8 牛栏

    /* 标称并没有用到题解中提到的那种奇妙的性质,我们可以证明,正常从1开始走的话,需要T次,如何使这个次数减小?题解中提到一个办法,有一步小于n/t,我们考虑这一步,如果把它匀到左右两步中,则可以减小 ...

  9. 繁华模拟赛day8 字典序

    /* 这个题要我们求一个字典序,字符串给出的顺序,会对字母的字典序前后相对顺序进行限定,如何用来表示这种限定,我们注意到这种一个之后接着一个,只有先输出他前面的才能输出他,很明显就是拓扑排序,最小方案 ...

随机推荐

  1. pythonchallenge(一)

    PythonChallenge_1 一.实验说明 下述介绍为实验楼默认环境,如果您使用的是定制环境,请修改成您自己的环境介绍. 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码sh ...

  2. windows2003 单网卡 搭建vpn ,windows 2008 R2 类似吧。网上转的,自己加了点经验总结

    先说说可能的坑,也就是我自己搭建的时候碰到的问题. 其实搭建起来很简单,我不知道我总结的对还是不对,但是按下面这样操作做绝对能搭好!因为我就是按这样搭起来的,但是我发现,好像pptp已经被墙了,我也不 ...

  3. jQuery Easy UI 开发笔记

    1.jQuery Easy UI主要的运行原理是通过核心的代码调用插件来实现UI效果的 2.jQuery Easy UI插件与插件之间的关系是: 一.独立式插件: 独立式插件是指:不与其他的插件具有相 ...

  4. 微信小程序开发:http请求

    在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ...

  5. web前端开发教程系列-1 - 前端开发编辑器介绍

    目录: 前言 一. Webstorm 1. 优点 2. 缺点 3. 教程 4. 插件 5. 技巧 二. SublimeText 1. 优点 2. 缺点 3. 教程 4. 插件 5. 技巧 前言 由于很 ...

  6. Callable、Future和FutureTask

    创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口.这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就必须通过共享变量或者使用线 ...

  7. Linux 进程管理器 supervixor

    使用 supervisor 管理进程 http://www.cnblogs.com/smail-bao/p/5673434.html http://ju.outofmemory.cn/entry/20 ...

  8. Xunit

    Attributes Note: This table was written back when xUnit.net 1.0 has shipped, and needs to be updated ...

  9. PowerDesigner-制作Word导出模版

    定制导出模版 当然这不是我们想要的word,下面看如何做一个自定义模版 1. 在工具栏中选择[Report -->Reports],如下图 点击第二个图标创建一个Template,如下图 2. ...

  10. 洛谷P2024 食物链

    挺神奇 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种 ...