hdu 4283 You Are the One (2012 ACM/ICPC Asia Regional Tianjin Online 1006 )
来源:互联网 发布:单片机基础知识 编辑:程序博客网 时间:2024/06/16 10:32
一开始的想法是贪心, 是错的。 最后是dp做的dp[x][y]表示第x位到第y位所需要的花费, 然后是转移方程 dp到x位的时候会有3个决策
1. x最先出栈;
2.x最后出栈;
3.先有i个出栈,然后x出栈,到剩下的出栈;
/*tmp = min( tmp, a[x]*i + dfs( x+1, x+i ) + dfs( x+i+1, y ) + (i+1)*(s[y]-s[x+i]) ); //
这一句中的(i+1)*(s[y] - s[x+i])是表示dp[x+i+1][y]之前有i+1个人先出栈了之后所要增加的花费
*/
#include<cstdio>#include<cstring>#define M 110#define inf 1<<30int dp[M][M], s[M], a[M];int n;int min( int a, int b ){ return a > b? b: a; }int dfs( int x, int y ){if( dp[x][y] != -1 ) return dp[x][y];if( x >= y )return dp[x][y] = 0;int tmp = dfs( x+1, y ) + s[y] - s[x]; //x位置最先出栈for( int i = 1; i < y - x; ++i ){ //x位置前面有i个出栈tmp = min( tmp, a[x]*i + dfs( x+1, x+i ) + dfs( x+i+1, y ) + (i+1)*(s[y]-s[x+i]) );}tmp = min( tmp, dfs( x+1, y ) + a[x]*(y-x) ); //x位置最后出栈return dp[x][y] = tmp;}int main(){int t = 0, T;scanf( "%d", &T );while( T-- ){scanf( "%d", &n );s[0] = 0;memset( dp, -1, sizeof(dp) );for( int i = 1; i <= n; i++ ){scanf( "%d", a + i );s[i] = s[i-1] + a[i];}printf( "Case #%d: %d\n", ++t, dfs( 1, n ) );}}
- hdu 4283 You Are the One (2012 ACM/ICPC Asia Regional Tianjin Online 1006 )
- 2012 ACM/ICPC Asia Regional Tianjin Online 1006_you are the one 解题报告
- 2012 ACM/ICPC Asia Regional Tianjin Online
- 2012 ACM/ICPC Asia Regional Tianjin Online [赛后解题报告]
- 2012 ACM/ICPC Asia Regional Tianjin Online-Faulty Odometer
- 2012 ACM/ICPC Asia Regional Tianjin Online [赛后解题报告]
- HDU3622 Bomb Game(2-SAT 问题,The 35th ACM/ICPC Asia Regional Tianjin ,Online)
- 2012 ACM/ICPC Asia Regional Tianjin Online hdu 4287 map和char[]的合作应用
- HDU4280 Island Transport(2012 ACM/ICPC Asia Regional Tianjin Online)
- The 35th ACM/ICPC Asia Regional Tianjin Site —— Online Contest
- The 37th ACM/ICPC Asia Regional Tianjin Site Online Contest - A.B.J
- The 37th ACM/ICPC Asia Regional Tianjin Site Online Contest - A.B.J
- The 37th ACM/ICPC Asia Regional Tianjin Site Online Contest - G Travel
- 2012 ACM/ICPC Asia Regional Tianjin Online ——A very hard mathematic problem解题报告
- HDU 5478 Can you find it (卡常数)2015 ACM/ICPC Asia Regional Shanghai Online
- 2012 ACM/ICPC Asia Regional Chengdu Online-hdu 4288
- 2012 ACM/ICPC Asia Regional Chengdu Online-hdu-4289
- HDU 5883 The Best Path 2016 ACM/ICPC Asia Regional Qingdao Online 1006d
- TCP/IP中的广播报的发送
- InfoPath 系列:表单的发布与共享
- 编译自己功能定制的Fedora7内核
- 在macbook 上安装windows后 使用PC按键命令(包含 Insert→Fn-Enter)
- InfoPath 系列:表单数据的提交
- hdu 4283 You Are the One (2012 ACM/ICPC Asia Regional Tianjin Online 1006 )
- 抽象类与抽象方法
- vnisedit使用介绍说明
- 推荐一系列优秀的Android开发源码
- VIM Config
- SDRAM扩展
- 写正确函数需要注意的地方:两个非降序链表的并集,1>2>3和2>3>5合并为1>2>3>5。
- Date format
- maven settings