ZOj 1234
2015-09-22 09:46
453 查看
Chopsticks Time Limit: 10 Seconds Memory Limit: 32768 KB 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 may guess, the length of the two shorter chopsticks should be as close as possible, but the length of the extra one is not important, as long as it's the longest. To make things clearer, for the set of chopsticks with lengths A,B,C(A<=B<=C), (A-B)^2 is called the 'badness' of the set. It's December 2nd, Mr.L's birthday! He invited K people to join his birthday party, and would like to introduce his way of using chopsticks. So, he should prepare K+8 sets of chopsticks(for himself, his wife, his little son, little daughter, his mother, father, mother-in-law, father-in-law, and K other guests). But Mr.L suddenly discovered that his chopsticks are of quite different lengths! He should find a way of composing the K+8 sets, so that the total badness of all the sets is minimized. Input The first line in the input contains a single integer T, indicating the number of test cases(1<=T<=20). Each test case begins with two integers K, N(0<=K<=1000, 3K+24<=N<=5000), the number of guests and the number of chopsticks. There are N positive integers Li on the next line in non-decreasing order indicating the lengths of the chopsticks.(1<=Li<=32000). Output For each test case in the input, print a line containing the minimal total badness of all the sets. Sample Input 1 1 40 1 8 10 16 19 22 27 33 36 40 47 52 56 61 63 71 72 75 81 81 84 88 96 98 103 110 113 118 124 128 129 134 134 139 148 157 157 160 162 164 Sample Output 23 Note For the sample input, a possible collection of the 9 sets is: 8,10,16; 19,22,27; 61,63,75; 71,72,88; 81,81,84; 96,98,103; 128,129,148; 134,134,139; 157,157,160 Source: OIBH Reminiscence Programming Contest Submit Status |
#pragma comment(linker, "/STACK:1024000000,1024000000") #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<vector> #include<set> #include<map> #define L(x) (x<<1) #define R(x) (x<<1|1) #define MID(x,y) ((x+y)>>1) #define bug printf("hihi\n") #define eps 1e-12 typedef long long ll; using namespace std; #define INF 2147483647 #define N 5005 int n,k; int a ; int dp [2]; void DP() { int i,j; memset(dp,0,sizeof(dp)); int cur,to; cur=0; for(int ti=1;ti<=k;ti++) { to=cur^1; dp[2*ti-1][to]=INF; for(int j=ti*2;j<=n;j++) { dp[j][to]=dp[j-1][to]; if((n-j)>(k-ti)*3) dp[j][to]=min(dp[j][to],dp[j-2][cur]+(a[j]-a[j-1])*(a[j]-a[j-1])); } cur=cur^1; } printf("%d\n",dp [cur]); } int main() { int i,j,t; scanf("%d",&t); while(t--) { scanf("%d%d",&k,&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); k+=8; DP(); } return 0; } /* 1 1 40 1 8 10 16 19 22 27 33 36 40 47 52 56 61 63 71 72 75 81 81 84 88 96 98 103 110 113 118 124 128 129 134 134 139 148 157 157 160 162 164 */ /* #pragma comment(linker, "/STACK:1024000000,1024000000") #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<vector> #include<set> #include<map> #define L(x) (x<<1) #define R(x) (x<<1|1) #define MID(x,y) ((x+y)>>1) #define bug printf("hihi\n") #define eps 1e-12 typedef long long ll; using namespace std; #define INF 0x3f3f3f3f #define N 5005 int n,k; int a ; int dp [1020]; void DP() { for(int i=0;i<=n;i++) for(int j=0;j<=k;j++) dp[i][j]=INF; int i,j; dp[0][0]=0; dp[1][0]=0; for(int i=2;i<=n;i++) { dp[i][0]=0; for(int j=1;j*2<=i;j++) { dp[i][j]=dp[i-1][j]; if((n-i)>(k-j)*3) { dp[i][j]=min(dp[i][j],dp[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1])); } } } } int main() { int i,j,t; scanf("%d",&t); while(t--) { scanf("%d%d",&k,&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); k+=8; DP(); int ans=INF; printf("%d\n",dp [k]); } return 0; } /* 1 1 40 1 8 10 16 19 22 27 33 36 40 47 52 56 61 63 71 72 75 81 81 84 88 96 98 103 110 113 118 124 128 129 134 134 139 148 157 157 160 162 164 */ */
相关文章推荐
- CodeForces 579C A Problem about Polyline[数学]
- Java中关系操作符"=="和equals()方法的用法
- iOS 网络编程基础
- HDU 3743 Frosh Week(树状数组求逆序数)
- TR069相关介绍
- 用批处理来提取文件夹名名称将其前六位作为前缀重命名文件夹内文件
- P2P行业专业术语(最全)
- Mysql Linux下的数据库自动备份
- NOIP2010 关押罪犯(最大生成树)
- mysql不登陆执行命令小结
- Struts2-常用标签
- Mybatis使用generator自动生成映射配置文件信息
- 修改机器名后无法使用复制
- init进程 http://blog.csdn.net/dagouaofei/article/details/5644119
- Kubernetes负责人Dawn Chen:开源是唯一的路(图灵访谈)
- C++操作HTML TABLE元素
- iOS 9 学习系列:Storyboard References
- ArcSDE数据库的要素类批量重建空间索引
- 【springmvc+mybatis项目实战】杰信商贸-22.合同货物附件生产厂家mapper关联
- 【UCOSII】UCOSII应用要点