zoukankan      html  css  js  c++  java
  • hdu 5115 区间dp ***

    题意:有n只狼,每只狼有两种属性,一种攻击力一种附加值,我们没杀一只狼,那么我们受到的伤害值为这只狼的攻击值与它旁边的两只狼的附加值的和,求把所有狼都杀光受到的最小的伤害值。

    枚举中间k作为最后杀死的狼

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 const int INF=0x3f3f3f3f;
    11 const double eps=1e-5;
    12 typedef long long ll;
    13 #define cl(a) memset(a,0,sizeof(a))
    14 #define ts printf("*****
    ");
    15 const int MAXN=1005;
    16 int n,m,tt;
    17 int a[MAXN],b[MAXN],dp[MAXN][MAXN];
    18 int main()
    19 {
    20     int i,j,k;
    21     #ifndef ONLINE_JUDGE
    22     freopen("1.in","r",stdin);
    23     #endif
    24     scanf("%d",&tt);
    25     int ca=1;
    26     while(tt--)
    27     {
    28         scanf("%d",&n);
    29         for(i=0;i<n;i++)
    30         {
    31             scanf("%d",a+i);
    32         }
    33         for(i=0;i<n;i++)
    34         {
    35             scanf("%d",b+i);
    36         }
    37         for(int d=0;d<n;d++)
    38         {
    39             for(i=0;i+d<n;i++)
    40             {
    41                 j=i+d;
    42                 dp[i][j]=INF;
    43                 for(k=i;k<=j;k++)
    44                 {
    45                    dp[i][j]=min(dp[i][j],dp[i][k-1]+dp[k+1][j]+a[k]+b[i-1]+b[j+1]);
    46                 }
    47             }
    48         }
    49         printf("Case #%d: %d
    ",ca++,dp[0][n-1]);
    50     }
    51 }
  • 相关阅读:
    分段、分页&&内存碎片、外存碎片
    mysql中的事务处理
    算法的在线演示网站
    为什么要使用树以及使用什么树
    平衡多叉树--B-Tree(B树)
    MVCC--多版本并发控制机制
    mysql中的锁
    平衡二叉树--红黑树(RB-Tree)
    平衡二叉树--AVL树
    自平衡方式--旋转
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4662070.html
Copyright © 2011-2022 走看看