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

    原题链接

    题目大意:有这么一个公式 A,B,C(A<=B<=C), (A-B)^2来衡量这对数字的好坏,值越小越好。现在给出一个数组,要求每三个配对,最后得到的每组值总和最小。

    解法:我是复制粘贴的代码

    参考代码:

    /*
    *	代码来源:www.cnblogs.com/zhexipinnong/archive/2012/04/19/2457217.html
    *	dp的问题需要再专题研究
    *
    */
    
     #include <iostream>
     using namespace std;
     int dp[5050][1010];
     #define maxn 1<<30
     int a[5050];
     int main()
     {
     
         int ncase,guests,chopsticks,i,j;
         cin>>ncase;
         while(ncase--)
         {
             cin>>guests>>chopsticks;
             for(i = chopsticks;i >= 1;i--)
                 cin>>a[i];
             for(i = 1;i < 5050;i++)
                 for(j = 0;j < 1010;j++)
                 {
                     if(j == 0)
                         dp[i][j] = 0;
                     else
                         dp[i][j] = maxn;
                 }
             for(j = 1;j <= guests + 8;j++)
                 for(i = 3;i <= chopsticks;i++)
                 {
                     if(i >= j * 3)
                     {
                         dp[i][j] = dp[i - 1][j];
                         int temp = dp[i - 2][j - 1] + (a[i - 1] - a[i]) * (a[i - 1] - a[i]);
                         if(temp < dp[i][j])
                             dp[i][j] = temp;
                     }
                 }
             cout<<dp[chopsticks][guests + 8]<<endl;
         }
         return 0;
     }
  • 相关阅读:
    Sum Root to Leaf Numbers
    Sum Root to Leaf Numbers
    Sort Colors
    Partition List
    Binary Tree Inorder Traversal
    Binary Tree Postorder Traversal
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Search a 2D Matrix
    leetcode221
  • 原文地址:https://www.cnblogs.com/naive/p/3568811.html
Copyright © 2011-2022 走看看