LGP3092题解
看 DP 的时候翻到的题,发现这题的坑鸽子了一年半
这个状态感觉比较厉害,还是来记录一下吧。
首先硬币数量很少让我们想到状压,可以想出来一个十分 navie 的状态:\(dp[S][n]\) 表示用过 \(S\) 这些硬币,走到 \(n\) 的最少花费。
转移也是十分暴力,但是不可能通过此题。
不可能继续考虑状态数量过高的做法,所以考虑 \(O(n)\) 的状态或者 \(O(2^k)\) 甚至 \(O(k2^k)\) 的状态。
我也不知道这个状态是怎么想出来的。。。觉得非常厉害(或者说我太菜了)
设 \(f[S]\) 为使用了这些金币能走的最远的位置。于是可以枚举一个子集进行转移,加一个二分就能够做到 \(O(2^k\log n)\)。
#include<cstdio>
typedef long long ll;
const int M=1<<16;
int n,k,m[20],dp[M],sum[100005];
ll ans=1e18,num,f[M];
inline ll min(const ll&a,const ll&b){
return a>b?b:a;
}
inline int BS(int id,int M){
int L=id,R=n,mid,ans=id;
while(L<=R)if(sum[mid=L+R>>1]-sum[id-1]<=M)ans=mid,L=mid+1;else R=mid-1;
return ans;
}
signed main(){
int i,j,x,id;
scanf("%d%d",&k,&n);
for(i=0;i^k;++i)scanf("%d",m+i),num+=m[i];
for(i=1;i<=n;++i)scanf("%d",sum+i),sum[i]+=sum[i-1];
for(i=0;i^1<<k;++i){
for(j=0;j^k;++j)if(i>>j&1){
x=i^1<<j;
if((id=BS(dp[x]+1,m[j]))>dp[i]){
dp[i]=id;f[i]=f[x]+m[j];
if(dp[i]==n&&f[i]<ans)ans=f[i];
}
}
}
printf("%lld",ans==1e18?-1:num-ans);
}
LGP3092题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 推荐的php安全配置选项
推荐安全配置选项 这里有几个会影响安全功能的 PHP 配置设置.下面是一些显然应该用于生产服务器的: register_globals 设置为 offsafe_mode 设置为 offerror_re ...
- 关于String不可变的一些理解
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11683720.html 一直对String不可变感到疑问, 不知为何说String是不可变的, ...
- 聊天泡泡(仿微信)By-H罗
在做私信时,聊天泡泡仿着QQ做时,聊天泡泡底图有露出,不怎么好看,微信的就比较好看,当时就因为那2行纠结了好久 - (void)viewDidLoad { [super viewDidLoad]; / ...
- eclipse快捷键 包括查找类、方法、变量
[Ct rl+T] 搜索当前接口的实现类 1. [ALT +/] 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类.方法和属性的名字时,多体验一下[ ...
- pm2 部署 vue
链接:我整理了一个网站, 用来介绍一些有意思和实用工具的网站, 我没有打包, 直接甩上去了 因为vue是用 npm run dev 来运行的, 你用pm2 npm run dev 是错误的 需要加上- ...
- 9、Linux基础--编译安装、压缩打包、定时任务
笔记 1.晨考 1.搭建yum私有仓库的步骤 1.安装工具 yum install createrepo yum-utils nginx -y 2.创建目录 mkdir /opt/test 3.创建包 ...
- 02 HTML标签
2. HTML标签 1. HTML简介 用户使用浏览器打开网页看到结果的过程就是:浏览器将服务端的文本文件(即网页文件)内容下载到本地,然后打开显示的过程. 而文本文件的文档结构只有空格和黄航两种组织 ...
- Mapper代理方式
MyBatis入门初体验时,使用mapper的方式: 很奇怪,为什么只有interface二没有实现,怎么就可以从数据库中查出准确的数据.其实Mybatis利用了JDK动态代理实现了相应功能,下面详细 ...
- mysq数据库相信介绍大纲!!!!!!
什么是数据库? 数据库(Database)是按照数据结构来安排.存储和办理数据的仓库. 每个数据库都有一个或多个不同的 API 用于创立,访问,办理,搜索和仿制所保存的数据. 我们也能够将数据存储在文 ...
- [LeetCode]1281. 整数的各位积和之差
给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差. 示例 1: 输入:n = 234 输出:15 解释: 各位数之积 = 2 * 3 * 4 = 24 各位数之和 = ...