hdu4283 区间dp
- //Accepted 300 KB 0 ms
- //区间dp
- //dp[i][j] 表示i到j第一个出场的最小diaosizhi
- //对于i到j考虑元素i
- //(1)i第一个出场,diaosizhi为 dp[i+1][j]+sum(i+1--j)
- //(2)i不是第一个出场,而是第k个出场,则i+1到k+i-1这段区间第一个出场,k+i到j第k+1个出场
- //diaoshizhi为dp[i+1][i+k-1] + a[i]*(k-1) + (dp[i+k][j]+k*sum(i+k--j))
- //sum为一段区间的diaosizhi的和,考虑k+i到j第k+1个出场相当于k+i到j第一个出场再加上k*(sum(i+k--j))
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- using namespace std;
- ;
- int dp[imax_n][imax_n];
- int a[imax_n],sum[imax_n];
- int n;
- int min(int a,int b)
- {
- return a<b?a:b;
- }
- void Dp()
- {
- memset(dp,,sizeof(dp));
- ;l<=n;l++)
- {
- ;i<=n;i++)
- {
- ;
- if (j>n) break;
- dp[i][j]=dp[i+][j]+sum[j]-sum[i];
- ;k<=l;k++)
- {
- dp[i][j]=min(dp[i][j],dp[i+][i+k-]+a[i]*(k-)+dp[i+k][j]+k*(sum[j]-sum[i+k-]));
- }
- }
- }
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- ;t<=T;t++)
- {
- scanf("%d",&n);
- sum[]=;
- ;i<=n;i++)
- {
- scanf("%d",&a[i]);
- sum[i]=sum[i-]+a[i];
- }
- Dp();
- printf(][n]);
- }
- ;
- }
- //Accepted 4792 KB 281 ms
- //区间dp
- //dp[i][j][k] i到j整段区间在第k个出去时的最小花费
- //考虑区间中的第一个元素i,有一下两种情况:
- //(1)i在第k个出去,则i+1到j在第k+1个出去即dp[i+1][j][k+1]
- //(2)i不在第k个出去,则i后必有一段在第k个出去,假设这段为i+1到m
- //则有dp[i+1][m][k]+a[i]*(k+m-i)+dp[m+1][j][k+m-i+1]
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- using namespace std;
- ;
- ;
- int dp[imax_n][imax_n][imax_n];
- int a[imax_n];
- int n;
- int min(int a,int b)
- {
- return a<b?a:b;
- }
- void Dp()
- {
- memset(dp,,sizeof(dp));
- ;i<=n;i++)
- {
- ;k<=n;k++)
- {
- dp[i][i][k]=(k-)*a[i];
- }
- }
- ;i<n;i++)
- {
- ;k<=n;k++)
- {
- dp[i][i+][k]=min((k-)*a[i]+k*a[i+],k*a[i]+(k-)*a[i+]);
- }
- }
- ;l<=n;l++)
- {
- ;i<=n;i++)
- {
- ;
- if (j>n) break;
- ;k<=n;k++)
- {
- dp[i][j][k]=inf;
- dp[i][j][k]=min(dp[i][j][k],dp[i+][j][k+]+(k-)*a[i]);
- ;m<=j;m++)
- {
- dp[i][j][k]=min(dp[i][j][k],dp[i+][m][k]+a[i]*(k+m-i-)+dp[m+][j][k++m-i]);
- }
- }
- }
- }
- }
- int main()
- {
- int T;
- scanf("%d",&T);
- ;t<=T;t++)
- {
- scanf("%d",&n);
- ;i<=n;i++)
- scanf("%d",&a[i]);
- Dp();
- printf(][n][]);
- }
- ;
- }
hdu4283 区间dp的更多相关文章
- HDU4283:You Are the One(区间DP)
Problem Description The TV shows such as You Are the One has been very popular. In order to meet the ...
- hdu4283 You Are the One 区间DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4283 自己想了很久还是不会,参考了别人的思路才写的,区间DP还是很弱,继续努力!! 思路: 转载: 题 ...
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- BZOJ 1260&UVa 4394 区间DP
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...
随机推荐
- LayoutParams使用
LayoutParams继承于Android.View.ViewGroup.LayoutParams. LayoutParams相当于一个Layout的信息包,它封装了Layout的位置. ...
- 为什么MySQL死锁检测会严重降低TPS
在大量的客户端,更新数据表的同一行时,会造成数据库的吞吐量大幅降低. 很多数据库的前辈和同行分别通过实验和源码的方法,定位到了罪魁祸首----MySQL死锁检测 实验方式:http://blog.cs ...
- 【转】 Linux chmod命令
在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读.写.运行设定权限.例如我用ls -l命令列文件表时,得到如下输出:-rw-r--r-- 1 apple users 22 ...
- $.get的重写
window.meng = window.meng || {}; (function () { function Get() { this.def = $.Deferred(); } Get.prot ...
- arguments的基本用法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [转载]Soap安全测试入门
http://www.cnblogs.com/zerotest/p/4670902.html 在SoapUI4.0引入的安全测试特点使它非常容易为你来验证你的目标服务的功能性安全,就可以评估您的系统常 ...
- hdu---(1325)Is It A Tree?(并查集)
Is It A Tree? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- java代码抓取网页邮箱
实现思路:1.使用java.net.URL对象,绑定网络上某一个网页的地址2.通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象3.通过Ht ...
- UB单修改
FUNCTION Z_SD_UB_CHANGE. *"-------------------------------------------------------------------- ...
- UDPsocket编程
socket编程UDP模式, package com.wtd.socket.udp; import java.io.IOException; import java.net.DatagramPacke ...