圆环取数
来源:互联网 发布:时代周刊封面 知乎ps 编辑:程序博客网 时间:2024/06/09 08:20
每次任意去除相邻两个数,去掉较小的那个,并把它们差的绝对值加起来,重复这一过程,直到剩最后一个数为止。
f[i][j]代表i开始到j的最优解,max[i][j]表示i开始到j的最大值。
#include<cstdio>#include<cstring>#include<string.h>#include<algorithm>#include<iostream>#include<math.h>#include<vector>using namespace std;const long maxn=210;long n;long a[maxn];long f[maxn][maxn],maxx[maxn][maxn],f1;void process(){long i,j,k,len,tmp1,tmp2,tmp3,ans=-1;for(len=0;len<n;len++){for(int i=0;i<n;i++){j=i+len;if(len==0){f[i][j]=0;maxx[i][j]=a[i];continue;}f[i][j%n]=-1;for(k=i;k<j;k++){f1=f[i][k%n]+f[(k+1)%n][j%n];tmp1=maxx[i][k%n];tmp2=maxx[(k+1)%n][j%n];if(tmp1<tmp2)tmp3=tmp1,tmp1=tmp2,tmp2=tmp3;f1+=tmp1-tmp2;if(f1<f[i][j%n]||f[i][j%n]==-1)f[i][j%n]=f1;maxx[i][j%n]=tmp1;}if(len==n-1){if(ans==-1||f[i][j%n]<ans)ans=f[i][j%n];}}}printf("%ld\n",ans);}int main(){scanf("%ld",&n);long i;for(i=0;i<n;i++)scanf("%d",&a[i]);process();return 0;}
阅读全文
0 0
- 圆环取数
- Vijos 1451 圆环取数 【区间DP】
- 圆环取数 jzoj1397 dp+ST
- vijos圆环取数(好题,我不会,来日再补)
- Android自定义圆环,取区域
- 圆环
- 圆环
- 圆环
- 圆环
- bzoj1662 [Usaco2006 Nov]Round Numbers 圆环数
- 1662: [Usaco2006 Nov]Round Numbers 圆环数
- [BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数
- 1662: [Usaco2006 Nov]Round Numbers 圆环数
- 取数
- bzoj 1662: [Usaco2006 Nov]Round Numbers 圆环数(枚举)
- 随机取数
- 随机取数问题
- 取字符串字节数
- npm的安装及Vue.js2.0从入门到放弃---入门实例(一)
- C
- 动态规划训练20 [Treats for the Cows POJ
- BFS练习-POJ.2386
- MySQL性能优化的最佳21条经验
- 圆环取数
- 什么是SVM? 写得挺有意思
- “玲珑杯”线上赛 Round #17 Sin your life(数学知识)
- 动态规划训练21 [FatMouse and Cheese HDU
- 管道
- 线程基础概念
- 根据角色的选择获取对应信息
- 发纸牌问题---多维数组
- hdu2645