LGTB 与 序列
题目描述
LGTB
有一个长度为
N
的序列
A
,现在他想构造一个新的长度为
N
的序列
B
,使得
B
中的任意两个数都互质。并且他要使
\sum_{1\le i\le N}|A_i-B_i|
最小,请输出最小值。
输入格式
- 第一行包含一个数
N代表序列初始长度。
- 接下来一行包含
N个数
A_1, A_2, …, A_N,代表序列
A。
输出格式
输出包含一行,代表最小值。
样例
样例输入
5
1 6 4 2 8
样例输出
3
数据范围与提示
- 样例解释:
B=\{1,5,3,2,7\},
1与任何数都互质。
- 对于
40\%的数据,
1 ≤ N ≤ 10。
- 对于
100\%的数据,
1 ≤ N ≤ 100, 1 ≤ A_i≤30。
code
/*
5
1 6 4 2 8
*/
#include <bits/stdc++.h>
using namespace std;
const int maxn = 110;
const int Inf = 0x3f3f3f3f;
int prime[] = { 0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53 };
bool cmp(int a, int b) { return a > b; }
int a[maxn], dp[17][1 << 17];
int jl[maxn];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
sort(a + 1, a + n + 1, cmp);
memset(jl, 0, sizeof(jl));
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)
jl[i] |= (1 << j - 1);
memset(dp, 0x3f, sizeof(dp));
dp[0][0] = 0;
for (int i = 1; i <= min(n, 16); i++)
for (int j = 0; j < (1 << 16); j++)
for (int num = 1; num <= 58; num++)
if (!(jl[num] & j)) {
int s = j | jl[num];
dp[i][s] = min(dp[i][s], dp[i - 1][j] + abs(a[i] - num));
}
int ans = Inf;
for (int j = 0; j < (1 << 16); j++) ans = min(ans, dp[min(n, 16)][j]);
if (n > 16)
for (int i = 17; i <= n; i++) ans += abs(a[i] - 1);
return cout << ans, 0;
}
LGTB 与 序列的更多相关文章
- LGTB 与序列
LGTB 有一个长度为N 的序列A,现在他想构造一个新的长度为N 的序列B,使得B 中的任意两个数都 互质. 并且他要使ai与bi对应项之差最小 请输出最小值 输入 第一行包含一个数N 代表序列初始长 ...
- LGTB与序列 状压dp
考试一看我就想到了状压dp.当时没有想到素数,以为每一位只有0~9这些数,就开始压了.后来发现是小于30,然后改到了15,发现数据一点不给面子,一个小点得数都没有,完美爆零.. 考虑到bi最多变成58 ...
- 状压DP之LGTB 与序列
题目 思路 这道题竟然是状压DP,本人以为是数论,看都没看就去打下一题的暴力了,哭 \(A_i\)<=30,所以我们只需要考虑1-58个数,再往后选的话还不如选1更优,注意,1是可以重复选取的, ...
- 05:LGTB 与偶数
总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 LGTB 有一个长度为 N 的序列.当序列中存在相邻的两个数的和为偶数的话,LGTB 就能把它 ...
- 【夯实PHP基础】UML序列图总结
原文地址 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色 ...
- Windows10-UWP中设备序列显示不同XAML的三种方式[3]
阅读目录: 概述 DeviceFamily-Type文件夹 DeviceFamily-Type扩展 InitializeComponent重载 结论 概述 Windows10-UWP(Universa ...
- 软件工程里的UML序列图的概念和总结
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 软件工程的一般开发过程:愿景分析.业务建模,需求分析,健壮性设计,关键设计,最终设计,实现…… 时序图也叫序列图(交互图),属于软件 ...
- python序列,字典备忘
初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...
- BZOJ 1251: 序列终结者 [splay]
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3778 Solved: 1583[Submit][Status][Discu ...
随机推荐
- Typescript的interface、class和abstract class
interface,class,和abstract class这3个概念,既有联系,又有区别,本文尝试着结合官方文档来阐述这三者之间的关系. 1. Declaration Merging Declar ...
- 状压DP 从TSP问题开始入门哦
一开始学状压DP难以理解,后来从TSP开始,终于入门了nice!!!! 旅行商问题 : 给定n个城市和两两相互的距离 ,求一条路径经过所有城市,并且路径达到最下仅限于; 朴树想法: 做n个城 ...
- spring boot actuator端点高级进阶metris指标详解、git配置详解、自定义扩展详解
https://www.cnblogs.com/duanxz/p/3508267.html 前言 接着上一篇<Springboot Actuator之一:执行器Actuator入门介绍>a ...
- ImageLoader在ViewPage中的使用
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- vue基础入门(1)
1.vue初体验 1.1.vue简介 1.1.1.vue是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架,什么叫做渐进式呢?通俗的讲就是一层一层的,一步一 ...
- js语法基础入门(1)
1.基础入门 1.1.hello world 1.1.1.JavaScript是什么? JavaScript是一门跨平台.面向对象的轻量级脚本语言,在web开发中被广泛应用 1.1.2.JavaScr ...
- VC单选按钮控件(Radio Button)用法(转)
先为对话框加上2个radio button,分别是Radio1和Radio2. 问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了? 关键是选上,“默认”只要放在OnInitDi ...
- 拿2k的前端开发都会做些什么?
坐标珠海,前端程序媛一枚 实习时候做的是测试,2.5k+600餐补: 后来觉得对前端更有兴趣所以重新找工作,但是苦于没有经验,毕业第一年在一个传统行业的公司找到了一个前端岗位,薪酬4k,公司主要是接政 ...
- CSS position 属性_css中常用position定位属性介绍
css可以通过为元素设置一个position属性值,从而达到将不同的元素显示在不同的位置, position定位是指定位置的定位,以下为常用的几种: 1.static(静态定位): 这个是元素的默认定 ...
- UVA - 11300 Spreading the Wealth(数学题)
UVA - 11300 Spreading the Wealth [题目描述] 圆桌旁边坐着n个人,每个人有一定数量的金币,金币的总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金 ...