题意:一个环状数组,给定可以删去一个数,代价的相邻两个数的gcd,求最小代价。

思路:区间DP即可,dp[i][j]表示[i,j]区间只剩下i和j时的最小代价,那么dp[i][j]=min  dp[i][k]+dp[k][j]+gcd(a[[i],a[j])。带上注意不能加倍做,以为常数会乘8,TLE,这也是这道题通过率低的原因。dp[][]可以循环的,所以需要按照长度来转移状态。

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
const int inf=1e9+;
int dp[maxn][maxn],a[maxn];
int main()
{
int N,i,j,k,ans;
while(~scanf("%d",&N)&&N){
for(i=;i<=N;i++) for(j=;j<=N;j++) dp[i][j]=inf;
for(i=;i<=N;i++) scanf("%d",&a[i]);
for(j=;j<N;j++){
for(i=;i<=N;i++){
if(j==){
if(i+j==N) dp[i][N]=;
else dp[i][(i+j)%N]=;
}
else for(k=i+;k<i+j;k++){
int tj=(i+j)%N; if(!tj) tj=N;
int tk=k%N; if(!tk) tk=N;
dp[i][tj]=min(dp[i][tj],dp[i][tk]+dp[tk][tj]+__gcd(a[i],a[tj]));
}
}
}
ans=dp[][N]+__gcd(a[],a[N]);
for(i=;i<=N;i++)
for(j=i+;j<=N;j++)
ans=min(ans,dp[i][j]+dp[j][i]+__gcd(a[i],a[j]));
printf("%d\n",ans);
}
return ;
}

Gym - 101196:F Removal Game(区间DP)的更多相关文章

  1. 暑假集训 || 区间DP

    区间DP 经典石子合并问题V1    复杂度 On3 int a[SZ], sum[SZ], f[SZ][SZ]; int main() { int n; scanf("%d", ...

  2. BZOJ 2121: 字符串游戏 区间DP + 思维

    Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对 于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删 ...

  3. Codeforces Gym 100002 Problem F "Folding" 区间DP

    Problem F "Folding" Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/ ...

  4. Educational Codeforces Round 61 F 思维 + 区间dp

    https://codeforces.com/contest/1132/problem/F 思维 + 区间dp 题意 给一个长度为n的字符串(<=500),每次选择消去字符,连续相同的字符可以同 ...

  5. 2016-2017 ACM-ICPC East Central North America Regional Contest (ECNA 2016) F 区间dp

    Problem F Removal GameBobby Roberts is totally bored in his algorithms class, so he’s developed a li ...

  6. F. Clear the String(区间 DP )//每次都删除一个相同字符的子串 , 最小多少次

    https://codeforces.com/contest/1132/problem/F 借鉴:https://www.cnblogs.com/chhokmah/p/10508762.html 题意 ...

  7. ABC206 F - Interval Game 2 (区间DP,博弈论,SG函数)

    题面 题意很简单 A l i c e \tt Alice Alice 和 B o b \tt Bob Bob 在博弈.摆在他们面前有 N \rm N N 个区间 [ l i , r i ) \rm[l ...

  8. codeforces#1132 F. Clear the String(神奇的区间dp)

    题意:给出一个字符串S,|S|<=500.每次操作可以删除一段连续的相同字母的子串.问,最少操作多少次可以把这个字符串变成空串. 分析:刚开始的思路是,把连续的串给删除掉,然后再....贪心.完 ...

  9. [Gym 101334E]Exploring Pyramids(区间dp)

    题意:给定一个先序遍历序列,问符合条件的树的种类数 解题关键:枚举分割点进行dp,若符合条件一定为回文序列,可分治做,采用记忆化搜索的方法. 转移方程:$dp[i][j] = \sum {dp[i + ...

随机推荐

  1. 在UIWebView中设置cookie

     本文转载至 http://blog.csdn.net/chengyakun11/article/details/8863878 项目中,需要在打开3g网页时,通过cookie传递一些信息. 实现代码 ...

  2. 关于angularjs的model的一些问题

    有的时候 在一些页面中 我们会需要用到弹出的模态框,这里主要是使用angularjs的uimodel. 页面效果如下: 首先我们需要在JS的controller中导入$uibModal模块. HTML ...

  3. 爬虫入门【1】urllib.request库用法简介

    urlopen方法 打开指定的URL urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, ca ...

  4. vscode 全局安装和配置 stylelint 像 webstorm 等 ide 一样来检查项目

    商店里安装完插件以后全局安装或者在项目中(记得加--save-dev)安装配置: npm install stylelint-config-recommended -g 然后在vscode setti ...

  5. [原创]webpack动态设置css路径

    在程序入口的最上方添加 __webpack_public_path__ = path; //your path //your app start here

  6. A visual proof that neural nets can compute any function

    http://neuralnetworksanddeeplearning.com/chap4.html In essence, we're using our single-layer neural ...

  7. MySQL 练习 答案

    表关系 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 3.查询平均成绩大于60分的同学的学号和平均成绩: 4.查询所有同学的学号.姓名.选课数.总成绩: ...

  8. python多版本管理

    1.查看系统中的安装了那些python版本 2.查看系统中的alternatives命令是否安装 3.使用alternatives --install 接管python -install 选项使用了多 ...

  9. Android AbsoluteLayout绝对布局

    绝对布局也叫坐标布局,指定元素的绝对位置,因为适应性很差,一般很少用到.可以使用RelativeLayout替代. 常用属性: android:layout_x --------组件x坐标 andro ...

  10. Data Structure Binary Tree: Convert an arbitrary Binary Tree to a tree that holds Children Sum Property

    http://www.geeksforgeeks.org/convert-an-arbitrary-binary-tree-to-a-tree-that-holds-children-sum-prop ...