hdu 1500 Chopsticks

http://acm.hdu.edu.cn/showproblem.php?pid=1500

dp[i][j]为第i个人第j个筷子。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5
 6 int dp[1011][5011];
 7 int a[5011];
 8 int k,n;
 9 int sqr(int x)
10 {
11     return x*x;
12 }
13 bool cmp(const int a,const int b)
14 {
15     return a>b;
16 }
17
18 int main()
19 {
20     int t;
21     scanf("%d",&t);
22     while(t--)
23     {
24         scanf("%d%d",&k,&n);
25         memset(dp,0,sizeof(dp));
26         memset(a,0,sizeof(a));
27         for(int i=1; i<=n; i++)
28         {
29             scanf("%d",&a[i]);
30         }
31         sort(a+1,a+n+1,cmp);
32         k=k+8;
33         for(int i=1; i<=k; i++)
34         {
35             dp[i][i*3]=dp[i-1][i*3-2]+sqr(a[i*3-1]-a[i*3]);
36             for(int j=i*3+1; j<=n; j++)
37             {
38                 dp[i][j]=min(dp[i][j-1],dp[i-1][j-2]+sqr(a[j-1]-a[j]));
39             }
40         }
41         printf("%d\n",dp[k][n]);
42     }
43     return 0;
44 }

hdu 1500 Chopsticks,布布扣,bubuko.com

时间: 2024-11-08 22:09:45

hdu 1500 Chopsticks的相关文章

hdu 1500 Chopsticks DP

题目链接:HDU - 1500 In China, people use a pair of chopsticks to get food on the table, but Mr. L is a bit different. He uses a set of three chopsticks -- one pair, plus an EXTRA long chopstick to get some big food by piercing it through the food. As you

hdu 1500

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 题意:有两台机器A和B以及N个需要运行的任务.每台机器有M种不同的模式,而每个任务都恰好在一台机器上运行.如果它在机器A上运行,则机器A需要设置为模式xi,如果它在机器B上运行,则机器A需要设置为模式yi.<br>

【HDOJ】1500 Chopsticks

DP. 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <algorithm> 5 #include <iostream> 6 using namespace std; 7 8 #define MAXN 5005 9 #define MAXK 1005 10 #define INF 0x3f3f3f3f 11 int a[MAXN]; 12 int

!HDU 1500 Chopsticks-dp-(分组问题)

题意:一种新式筷子:每副有三支,两支短的,长度差要尽可能小:一支长的,只要满足是一副里最长的就行.在n支筷子里选k副,要求每副里的短筷子的长度差总和最小 分析: 分组dp模型.这题跟搬寝室那题差不多,但这题的每组里多了一个长筷子,所以排序的时候从大到小,这样才能在一遍dp的时候一遍把长的选进每一组里,具体怎么实现的不要过于钻牛角尖. 正如搬寝室里总结的分组模型的实现方式有两种,这里也给出两个代码.注意具体实现上的一些细节差异,还有初始化. 把两道题结合起来看加深理解. 代码1: #include

HDU 4082 Hou Yi&#39;s secret-求相似三角形的最大个数-(坑货)

题意:找相似三角形的最大个数.注意不是所有相似三角形的个数,而是不同类相似三角形 中个数最大的 分析: 之前理解成了所有相似三角形的个数,所以尽管考虑了所有的特殊情况以及精度问题还是不停的wawawa,甚至重新写了一遍不用余弦来判断而是用边.绝望之中仔细看别人的代码,原来题意理解错了. 这题的收获: 1.三角形相似的判定:用余弦定理.或者边成比例.最好用边,然后判定的时候不用比值,用乘积,这样就不存在精度问题. 2.耐心.对自己有信心. 代码: #include<iostream> #incl

HDU分类

模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 12

HDU 4888

Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1993    Accepted Submission(s): 446 Problem Description Alice and Bob are playing together. Alice is crazy about art an

hdu 3466 Proud Merchants(0-1背包+排序)

题目来源:hdu 3466 Proud Merchants Proud Merchants Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 3595 Accepted Submission(s): 1500 Problem Description Recently, iSea went to an ancient country. For

HDU 1058 Humble Numbers(离线打表)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 解题报告:输入一个n,输出第n个质因子只有2,3,5,7的数. 用了离线打表,因为n最大只有5842. 1 #include<stdio.h> 2 #define INT __int64 3 INT ans[5850] = { 4 0,1,2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27,28,30,32,35,36,40,42,45,48,4