zoukankan      html  css  js  c++  java
  • ZOJ 1234 UVA 10271 Chopsticks

    这个题目,筷子应该最好是非降序排列的(只要输入的时候处理一下即可),这样处理起来就比较方便,因为这样就可以保证在后来的计算中,每取两个筷子都有比他们两根长的筷子,就可以符合题意了。

    下面贴代码:

    View Code
     1 #include <iostream>
     2 using namespace std;
     3 int dp[5050][1010];
     4 #define maxn 1<<30
     5 int a[5050];
     6 int main()
     7 {
     8 
     9     int ncase,guests,chopsticks,i,j;
    10     cin>>ncase;
    11     while(ncase--)
    12     {
    13         cin>>guests>>chopsticks;
    14         for(i = chopsticks;i >= 1;i--)
    15             cin>>a[i];
    16         for(i = 1;i < 5050;i++)
    17             for(j = 0;j < 1010;j++)
    18             {
    19                 if(j == 0)
    20                     dp[i][j] = 0;
    21                 else
    22                     dp[i][j] = maxn;
    23             }
    24         for(j = 1;j <= guests + 8;j++)
    25             for(i = 3;i <= chopsticks;i++)
    26             {
    27                 if(i >= j * 3)
    28                 {
    29                     dp[i][j] = dp[i - 1][j];
    30                     int temp = dp[i - 2][j - 1] + (a[i - 1] - a[i]) * (a[i - 1] - a[i]);
    31                     if(temp < dp[i][j])
    32                         dp[i][j] = temp;
    33                 }
    34             }
    35         cout<<dp[chopsticks][guests + 8]<<endl;
    36     }
    37     return 0;
    38 }
  • 相关阅读:
    Java中抽象类和接口的区别
    servlet的转发与重定向
    JSP知识点
    过滤器与拦截器
    java关键字 super 和 this
    oracle 基础
    java 集合
    java 内部类
    java 数组详解
    图,深度优先遍历与广度优先遍历
  • 原文地址:https://www.cnblogs.com/zhexipinnong/p/2457217.html
Copyright © 2011-2022 走看看