题意:

给定一个序列。将序列中的一个数字消去的代价是与这个数字相邻的两个数字的gcd,问将所有数字消去的最小代价。注意这个序列是环形的。

思路:

首先我们比较容易发现这是一个区间DP问题,于是问题就变成了如何列区间DP状态。一开始考虑的是dp[i][j]表示区间[i,j]全部消去的最小代价,然后在区间[i,j]中枚举第一个消去的k进行更新。然后会发现一个问题,如何先消的是 j ,那么 j 是右端点,因此 j 两端的元素是不确定的,因此这个转移方程不对。

因此我们来重新考虑这道题。由于左右端点不确定,因此我们重新定义dp状态,dp[i][j]表示区间 [i, j] 中所有数全部消除,最后剩下 i 和 j 的最小代价。则在区间中枚举 k ,dp[i][j] = dp[i][k]+dp[k][j]+gcd(i,j) 。由于是个环形序列,因此需要将长度扩展两倍进行dp。最后的答案就是枚举最后剩下的两个点,然后找最小值即可。

代码:

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define rep(i,a,b) for(int i = a; i <= b; i++)
#define LOG1(x1,x2) cout << x1 << ": " << x2 << endl;
#define LOG2(x1,x2,y1,y2) cout << x1 << ": " << x2 << " , " << y1 << ": " << y2 << endl;
typedef long long ll;
typedef double db;
const db EPS = 1e-9;
using namespace std;
const int N = 300;int n,a[N],dp[N][N];int gcd(int a,int b)
{return b == 0 ? a:gcd(b,a%b);
}int main()
{while(~scanf("%d",&n)){if(n == 0) break;rep(i,1,n) scanf("%d",&a[i]);rep(i,n+1,2*n) a[i] = a[i-n];rep(len,1,n)rep(j,1,2*n){int x = j, y = x+len-1;if(y > 2*n) continue;if(y == x+1 || y == x) dp[x][y] = 0;else{dp[x][y] = 10000;rep(k,x+1,y-1) dp[x][y] = min(dp[x][y],dp[x][k]+dp[k][y]+gcd(a[x],a[y]));}// printf("dp[%d][%d]:%d\n",x,y,dp[x][y]);}int ans = 10000;rep(i,1,n)rep(j,i+1,i+n-1){if(ans > dp[i][j]+dp[j][i+n]+gcd(a[i],a[j])){ans = dp[i][j]+dp[j][i+n]+gcd(a[i],a[j]);// LOG1("ans",ans);// LOG2("i",i,"j",j);}}printf("%d\n",ans);}return 0;
}

【2016-2017 ACM-ICPC (ECNA 2016) F】Removal Game【区间DP】相关推荐

  1. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...

  2. 2016 年 ACM/ICPC 青岛区域赛 Problem C Pocky

    昨晚乱入学弟的训练赛,想了一下这个题.推导的过程中,加深了对公理化的概率论理解.$\newcommand{\d}{\mathop{}\!\mathrm{d}}$ 解法一 考虑 $ d < L$ ...

  3. 2017 ACM/ICPC 南宁赛区小结 By JSB @ Reconquista

    Statistics TYPE: Onsite Contest NAME: 2017 - ICPC - Asia Nanning PLAT: pc^2 TIME: 2017/11/26 09:00-1 ...

  4. 2017 ACM ICPC Asia Shenyang Regional Contest 题解(10 / 13)【每日亿题2 / 16】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A.(2017 ICPC shenyang I)Little Boxes B.(2017 ICP ...

  5. 2017 ACM/ICPC 北京赛区小结 By jsb @Reconquista

    Statistics TYPE: Onsite Contest NAME: 2017 - ICPC - Asia Beijing PLAT: hihoCoder TIME: 2017/11/19 09 ...

  6. [Contest]2017 ACM/ICPC Asia Regional Shenyang Online(01 03 07 09 10 11待补)

    1001 string string string 题意 给定一个字符串$s$,求其中出现$k$次的子串的个数. 题解 后缀自动机. 代码 1002 cable cable cable 题意 给定$M ...

  7. 2017 ACM ICPC Asia Regional - Daejeon Programming Constest

    A: Broadcast Stations 题目大意 给定一棵树,选一些节点iii,赋予P(i)" role="presentation">P(i)P(i)P(i) ...

  8. 2017 ACM/ICPC Asia Regional Shenyang Online array

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=6197 题目大意:给出一个序列,删去k个元素是否能构成不上升序列或不下降子序列 (呃,先凑个数吧 二分+ ...

  9. HDU - 6208 The Dominator of Strings n次KMP 2017 ACM/ICPC Asia Regional Qingdao Online

    找到最长串 然后进行n次KMP #include <iostream> #include <cstdio> #include <cstdlib> #include ...

  10. 2017 ACM/ICPC Asia Regional Shenyang Online(9.10)

    总结下这两天做的题目,昨天的题目与图相关的很多,图的题一般就是遇到没见过就gg了,比如那个有向的加强图那个,,沈阳这个有两个推公式的,但是只过了一个...number number number这个题 ...

最新文章

  1. 只要努力搞,没有KPI搞不垮的团队?
  2. 判断条件为空时需要注意
  3. 大牛带你深入SpringBoot:自定义Endpoint 及实现原理
  4. [bzoj3879]SvT_后缀数组_RMQ_单调栈
  5. c# TCP Socket通讯基础
  6. 免去架构算法调优,如何让你的系统风驰电掣?|图说
  7. 解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit value and so on...)
  8. qt 在label上以光标位置进行缩放_缩放|位移|渐变简单动画
  9. mysql通配符like,不吃透都对不起自己
  10. Identity of indiscernibles(不可分与同一性)
  11. 移动平台开发项目(推箱子小游戏)
  12. 谷歌ai人工智能叫什么_为Google产品提供动力的人工智能
  13. switch在内存中的实现机制
  14. 70.(cesium篇)cesium接入天地图影像与注记(经纬度)
  15. 浏览器的历史浏览记录_如何在任何浏览器中清除历史记录
  16. matlab波浪号怎么打,数学中字母上面波浪号 波浪号怎么打到上面
  17. 六、数据(分组)计算
  18. python - 模块解析
  19. java将古诗竖排_古诗词竖排格式
  20. 指标管理是如何优化目标管理体系的!

热门文章

  1. Bloodshed Dev-C++
  2. MYSQL 二进制还原
  3. c语言字符串注入命令,C语言基础之输入输出、常量定义、随机数、动态链接库的注入、数据类型介绍、goto语句的使用...
  4. python中可变参数*args传入函数时的存储方式为,Python函数可变参数(*args,**kwargs)详解...
  5. Sum nyoj215
  6. 微型计算机普遍采用的数字编码是,计算机原理复习题1
  7. 【POJ2774】Long Long Message(求两个字符串的最长公共子串----后缀数组)
  8. 【cf:1100F】 Ivan and Burgers(多次区间最大异或值查询----线性基+离线+思维)
  9. (转)Dinkelbach算法(01二分规划更优解法)
  10. 计算机绘图的教学目的,浅谈如何提高《计算机绘图AutoCAD》课程的教学质量