状压DP之LGTB 与序列
题目
思路
- 这道题竟然是状压DP,本人以为是数论,看都没看就去打下一题的暴力了,哭
\(A_i\)<=30,所以我们只需要考虑1~58个数,再往后选的话还不如选1更优,注意,1是可以重复选取的,因为题目中有一句话
所以我们所枚举的因子只能包括1~58之间的质因子,而且每个质因子只能选一次,所以选完质因子之后,如果还有剩余的数,就用1填补,而1~58之间的质因子只有16个!!!我们对其进行状压。 - f[i][j]代表处理到第i位j状态下的最优解
- 预处理1~58之间的每一个数的因子,用state数组存放,方便处理,
\(f[0][0]=0\),显然在一个数都不处理的情况下,所得价值为0; - dp过程和一般状压dp过程差不多,
i枚举处理到的位数(min(16,n))-->16个质因子都选完不重复,最大为16
S枚举前状态
k枚举要选入的数
判断合法性,!(S&state[k])为合法,显然,如果前一状态已经包含了k的质因子,不合法,
然后进行转移--->f[i][S|state[k]]=min(f[i][S|state[k]],f[i-1][S]+abs(k-a[i]));
对当前状态和上一状态加上当前数的贡献取最小值
- 求转移到的状态(min(16,n))的最小值,可能转移完,也可能没有,如果转移完,直接输出就ok了,如果没有,剩下的用1填补,这就涉及到一开始数组排序方式的问题,如果从小到大,最后没有解决的几个值贡献会很大,所以应该从大到小,先解决大块头
附上蒟蒻代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1<<20+1;
int prime[] = {0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};
int f[18][maxn];
int n,a[105];
int state[maxn];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sort(a+1,a+1+n);
reverse(a+1,a+1+n);
for(int i=1;i<=58;i++){
for(int j=1;j<=16;j++){
if(i<prime[j])break;
else if(i%prime[j]==0){
state[i]|=(1<<(j-1));
}
}
}
int lim=1<<16;
int ans=0x7f7f7f7f;
memset(f,0x3f,sizeof(f));
f[0][0]=0;
for(int i=1;i<=min(16,n);i++){
for(int S=0;S<lim;S++){
for(int k=1;k<=58;k++){
if(!(S&state[k])){
f[i][S|state[k]]=min(f[i][S|state[k]],f[i-1][S]+abs(k-a[i]));
}
}
}
}
for(int S=0;S<lim;S++){
ans=min(ans,f[min(16,n)][S]);
}
if(n>16){
for(int i=17;i<=n;i++)
ans+=abs(a[i]-1);
}
printf("%d\n",ans);
}
推荐状压DP题单(个人觉得比较好的题目,大佬手下留情)
和本题有关:[NOI2015]寿司晚宴
其他:
P1433 吃奶酪
[USACO06NOV]Corn Fields G
[SCOI2005]互不侵犯
[AHOI2009]中国象棋
[SDOI2009]学校食堂
[SDOI2009]Bill的挑战
[NOI2001]炮兵阵地
P2831 愤怒的小鸟
P2915 [USACO08NOV]Mixed Up Cows G
P3052 [USACO12MAR]Cows in a Skyscraper G
P3226 [HNOI2012]集合选数
P4163 [SCOI2007]排列
状压DP之LGTB 与序列的更多相关文章
- LGTB与序列 状压dp
考试一看我就想到了状压dp.当时没有想到素数,以为每一位只有0~9这些数,就开始压了.后来发现是小于30,然后改到了15,发现数据一点不给面子,一个小点得数都没有,完美爆零.. 考虑到bi最多变成58 ...
- 2018.10.05 NOIP模拟 上升序列(状压dp)
传送门 状压dp好题. 首先需要回忆O(nlogn)O(nlog n)O(nlogn)求lislislis的方法,我们会维护一个单调递增的ddd数组. 可以设计状态f(s1,s2)f(s1,s2)f( ...
- ZOJ3802 Easy 2048 Again (状压DP)
ZOJ Monthly, August 2014 E题 ZOJ月赛 2014年8月 E题 http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...
- fzu2188 状压dp
G - Simple String Problem Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & ...
- zoj3802:easy 2048 again(状压dp)
zoj月赛的题目,非常不错的一个状压dp.. 题目大意是一个一维的2048游戏 只要有相邻的相同就会合并,合并之后会有奖励分数,总共n个,每个都可以取或者不取 问最终得到的最大值 数据范围n<= ...
- [poj1185]炮兵阵地_状压dp
炮兵阵地 poj-1185 题目大意:给出n列m行,在其中添加炮兵,问最多能加的炮兵数. 注释:n<=100,m<=10.然后只能在平原的地方建立炮兵. 想法:第2到状压dp,++.这题显 ...
- [HNOI2012]集合选数(状压DP+构造)
题目要求若出现x,则不能出现2x,3x 所以我们考虑构造一个矩阵 \(1\ 2\ 4 \ 8--\) \(3\ 6\ 12\ 24--\) \(9\ 18\ 36--\) \(--\) 不难发现,对于 ...
- our happy ending(状压dp)
题意:给定一个n,k,l. 问有多少长度为n的序列满足选出一些数使得他们相加为k,数列中每个数都在1-l以内. Solution 正解还是很妙的. 状压dp,设dp[i][j]表示长度为i的序列,能表 ...
- NowCoder110E Pocky游戏 状压DP
传送门 题意:给出$N$个数和一个长为$M$.所有数在$[1,N]$范围之内的正整数序列$a_i$,求出这$N$个数的一种排列$p_1...p_N$使得$\sum\limits_{i=2}^M |p_ ...
随机推荐
- RocketMQ系列(三)消息的生产与消费
前面的章节,我们已经把RocketMQ的环境搭建起来了,是一个两主两从的异步集群.接下来,我们就看看怎么去使用RocketMQ,在使用之前,先要在NameServer中创建Topic,我们知道Rock ...
- Flask 项目目录蓝图
Flask 项目目录蓝图 小型项目 大型项目 定义蓝图 注册蓝图 template_folder="XXX" 参数是指 模板文件夹 注意 优先是找templates 在找自己指定的 ...
- 网络KPI异常检测之时序分解算法
时间序列数据伴随着我们的生活和工作.从牙牙学语时的“1, 2, 3, 4, 5, ……”到房价的走势变化,从金融领域的刷卡记录到运维领域的核心网性能指标.时间序列中的规律能加深我们对事物和场景的认识, ...
- [转] CISC与RISC
点击阅读原文 这里就不去管细节,简单来谈一下,ARM和X86之间为什么不太具有可比性的问题.要搞清楚这个问题首先要明白什么是架构,之前也有很多人提到了架构不同,但架构是什么意思?它是一个比较 ...
- [每日一题2020.06.12]P3375 【模板】KMP字符串匹配
题目链接 关于kmp : https://www.cnblogs.com/roccoshi/p/13096988.html 关于kmp, 想了很久, 我觉得不应该放在这里写, 另开一贴记录一下. #i ...
- (八)slf4j+logback 的配置与使用
logback的配置看这篇:https://www.cnblogs.com/lvchengda/p/13054457.html 使用 @Slf4j 1)安装插件lombok 在eclipse/myec ...
- c常用函数-strcpy和strncpy
strcpy和strncpy strcpy在脚本开发中经常用到,例如处理参数等,它的作用是把一个字符串复制到另一个字符串中. strncpy的作用是把一个字符串中的指定长度复制到另一个字符串中,如果指 ...
- Web测试和app测试区别?
EB测试和APP测试从流程上来说,没有区别.都需要经历测试计划方案,用例设计,测试执行,缺陷管理,测试报告等相关活动.从技术上来说,WEB测试和APP测试其测试类型也基本相似,都需要进行功能测试,性能 ...
- Java架构师如何学习?
引言 古人云:"活到老,学到老."互联网算是最辛苦的行业之一,"加班"对工程师来说已是"家常便饭",同时互联网技术又日新月异,很多工程师都疲 ...
- pikachu靶场-XSS
.Tips: 一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS 由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者环境限制了执行(浏览器): 通过变化不同的scr ...