博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDU】3480 Division
阅读量:7233 次
发布时间:2019-06-29

本文共 1036 字,大约阅读时间需要 3 分钟。

题意:一个n个元素的集合S要求分成m个子集且子集并为S,要求$\sum_{S_i} (MAX-MIN)^2$最小。(n<=10000, m<=5000)

#include 
#include
#include
#include
#include
using namespace std;const int N=10005;typedef long long ll;ll d[2][N];int n, p, x[N], s[2][N];inline ll sqr(ll a) { return a*a; }inline ll w(int i, int j) { return sqr(x[j]-x[i]); }int main() { int T; scanf("%d", &T); for(int __=1; __<=T; ++__) { scanf("%d%d", &n, &p); for(int i=1; i<=n; ++i) scanf("%d", &x[i]); sort(x+1, x+1+n); int h=0, t=1; for(int i=2; i<=n; ++i) d[h][i]=w(1, i), s[h][i]=1; for(int i=2; i<=p; ++i) { s[t][n+1]=n; for(int j=n; j>=1; --j) { int l=s[h][j], r=s[t][j+1], &pos=s[t][j]; ll &now=d[t][j]; now=~0ull>>1; for(int k=l; k<=r; ++k) { ll t=d[h][k-1]+w(k, j); if(now>=t) now=t, pos=k; } } swap(t, h); } printf("Case %d: %lld\n", __, d[h][n]); } return 0;}

  

看完题目就知道很简单= =可是看到数据范围的时候傻了= =就算$O(n^2)$也不能这样卡是不是!!

可是发现时限5s!!!

于是同上一题一样,详细看上一题题解= =

转载地址:http://rwpfm.baihongyu.com/

你可能感兴趣的文章
SQL Server 导入bak备份出错
查看>>
JavaScript中的私有/静态属性
查看>>
Ubuntu下安装XAMPP
查看>>
C# ExpandoObject用法
查看>>
【SICP练习】135 练习3.66
查看>>
数据挖掘——文本挖掘-关键字提取
查看>>
Codeforces Gym - 101102A - Coins
查看>>
webstorm识别 ftl文件
查看>>
在Window 下安装Redis数据库
查看>>
主席树 | | 可持久化线段树
查看>>
JSTL中c:set标签的要点和技巧
查看>>
arp命令
查看>>
微信公众号的localStorage的大坑
查看>>
lua算法(连载)
查看>>
IE6、7下overflow:hidden失效的问题
查看>>
php的静态化
查看>>
asp.net 中使用 pagedlist 分页并具有查询功能的实现方法
查看>>
(二)UML之类图、接口、包
查看>>
Google Protocol Buffer入门
查看>>
DataTable.AcceptChanges方法有何用处
查看>>