bzoj 3965: [WF2011]Pyramids
Description
#include<cstdio>
#include<algorithm>
#include<bitset>
int s1[],s2[];
struct item{
int v,a,t;
bool operator<(item x)const{return v!=x.v?v<x.v:t<x.t;}
}is[],ps[],ps1[];
std::bitset<>f[];
int ip=,pp,mf[];
void dfs(int n,int w,int t){
if(t+mf[n]>=pp)return;
if(!n){
pp=t;
for(int i=;i<t;++i)ps[i]=ps1[i];
}
if(!w)return;
if(n>=is[w].v&&f[w-].test(n-is[w].v))ps1[t]=is[w],dfs(n-is[w].v,w-,t+);
dfs(n,w-,t);
}
int main(){
s1[]=s2[]=;
for(int i=;i<=;++i){
s1[i]=s1[i-]+i*i;
s2[i]=s2[i-]+i*i;
}
for(int i=;s1[i]<=;++i)is[++ip]=(item){s1[i],i,};
for(int i=;s2[i]<=;++i)is[++ip]=(item){s2[i],i,};
std::sort(is+,is+ip+);
f[].set();
for(int i=;i<=ip;++i)f[i]=f[i-]|f[i-]<<is[i].v;
for(int i=;i<=ip;++i){
int x=is[i].v;
if(!mf[x])mf[x]=;
}
for(int i=;i<=ip;++i){
for(int j=i+;j<=ip;++j){
int x=is[i].v+is[j].v;
if(x<=&&!mf[x])mf[x]=;
}
}
for(int i=;i<=ip;++i){
for(int j=i+;j<=ip;++j){
for(int k=j+;k<=ip;++k){
int x=is[i].v+is[j].v+is[k].v;
if(x<=&&!mf[x])mf[x]=;
}
}
}
for(int i=;i<=;++i)if(!mf[i])mf[i]=;
for(int _t=,n;;++_t){
if(scanf("%d",&n)!=||!n)return ;
if(!f[ip].test(n))printf("Case %d: impossible\n",_t);
else{
printf("Case %d:",_t);
pp=;
dfs(n,ip,);
for(int i=;i<pp;++i)printf(" %d%c",ps[i].a,"LH"[ps[i].t]);
puts("");
}
}
}
bzoj 3965: [WF2011]Pyramids的更多相关文章
- HDU 3824/ BZOJ 3963 [WF2011]MachineWorks (斜率优化DP+CDQ分治维护凸包)
题面 BZOJ传送门(中文题面但是权限题) HDU传送门(英文题面) 分析 定义f[i]f[i]f[i]表示在iii时间(离散化之后)卖出手上的机器的最大收益.转移方程式比较好写f[i]=max{f[ ...
- BZOJ 3963: [WF2011]MachineWorks [CDQ分治 斜率优化DP]
传送门 当然了WF的题uva hdu上也有 你的公司获得了一个厂房N天的使用权和一笔启动资金,你打算在这N天里租借机器进行生产来获得收益.可以租借的机器有M台.每台机器有四个参数D,P,R,G.你可以 ...
- ●BZOJ 3963 [WF2011]MachineWorks
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3963 题解: 斜率优化DP,CDQ分治. 先按时间排序.(规定以下内容的第i台机器的卖出时间 ...
- bzoj 3961: [WF2011]Chips Challenge【最小费用最大流】
参考:https://blog.csdn.net/Quack_quack/article/details/50554032 神建图系列 首先把问题转为全填上,最少扣下来几个能符合条件 先考虑第2个条件 ...
- BZOJ 3963: [WF2011]MachineWorks 斜率优化 + splay动态维护凸包
Description 你是任意性复杂机器公司(Arbitrarily Complex Machines, ACM)的经理,公司使用更加先进的机械设备生产先进的机器.原来的那一台生产机器已经坏了,所以 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 【BZOJ 3958】 3958: [WF2011]Mummy Madness (二分+扫描线、线段树)
3958: [WF2011]Mummy Madness Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 96 Solved: 41 Descripti ...
- 【BZOJ 2673】[Wf2011]Chips Challenge
题目大意: 传送门 $n*n$的棋盘,有一些位置可以放棋子,有一些已经放了棋子,有一些什么都没有,也不能放,要求放置以后满足:第i行和第i列的棋子数相同,同时每行的棋子数占总数比例小于$\frac{A ...
- BZOJ 3963 HDU3842 [WF2011]MachineWorks cdq分治 斜率优化 dp
http://acm.hdu.edu.cn/showproblem.php?pid=3842 写的check函数里写的<但是应该是<=,调了一下午,我是个zz. 就是普通的斜率优化因为有两 ...
随机推荐
- HDU1510 White rectangles( 乱搞 O(n^3) )题解
思路: 友谊赛的时候一直想到了,但是没想出来怎么遍历才能找到所有矩阵,卡住了. 这里讲一下完整思路:我们用一个num[i][j]表示第i行第j列每一列连续的白色格子数量,然后我们定义一个MIN,并且每 ...
- Bitmap 位图
转自: http://dongxicheng.org/structure/bitmap/ 1. 概述 位图(bitmap)是一种非常常用的结构,在索引,数据压缩等方面有广泛应用.本文介绍了位图的实现 ...
- BZOJ 2756 【SCOI2012】 奇怪的游戏
题目链接:奇怪的游戏 一开始这道题想岔了……想到黑白染色后对总格子数按奇偶性分类讨论,然后没发现奇数个格子的可以直接解方程…… 首先可以发现每次操作是给相邻的两个格子权值加一,因此我们把棋盘黑白染色后 ...
- hdu 4745 Two Rabbits 区间DP
http://acm.hdu.edu.cn/showproblem.php?pid=4745 题意: 有两只兔子Tom Jerry, 他们在一个用石头围城的环形的路上跳, Tom只能顺时针跳,Jerr ...
- Github Clone to local files
cd to you local files address key the word: git clone -0 github https://github.com/xxxxxxxxx Done... ...
- Java中代码点与代码单元(转)
摘要 本文介绍 Java 平台支持增补字符的方式.增补字符是 Unicode 标准中代码点超出 U+FFFF 的字符,因此它们无法在 Java 编程语言中描述为单个的 16 位实体(例如char数据类 ...
- Spring Cloud组件
Spring Cloud Eureka Eureka负责服务的注册于发现,Eureka的角色和 Zookeeper差不多,都是服务的注册和发现,构成Eureka体系的包括:服务注册中心.服务提供者.服 ...
- Java中HashMap 初始化时容量(参数)如何设置合适?
问题引入 注:本文代码源自java 9. 阿里的插件对于初始化HashMap时,调用无参构造方法,提示如下: 那么问题来了,如果已知需要向 map 中 put n次,那么需要设定初始容量为多少? 单纯 ...
- SQL Server 跨服务器 不同数据库之间复制表的数据
不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数据库 ...
- Android 之WebView实现下拉刷新和其他相关刷新功能
最近项目中需要用到WebView下拉刷新的功能,经过查找资料终于完成了此功能,现在拿出来和大家分享一下.希望对大家有所帮助. 效果如下图: 代码: activity.xml <?xml ve ...