CF#571 B. Minimization (DP)
来源:互联网 发布:剑三御姐捏脸数据下载 编辑:程序博客网 时间:2024/05/01 22:24
题目点我点我点我
题目大意:给出一个序列,可以任意调整序列的顺序,使得给出的式子的值最小
解题思路:将序列升序排序后,dp[i][j]:选择i个数量为n/k+1的集合,选择j个数量为n/k的集合的最小值。n/k+1的集合有n%k组,n/k的集合有k-n%k组。
如:序列为1,2,3,4,5,6,7,8,9,10.
当k=2时,不难看出来,1,6,2,7,3,8,4,9,5,10才是最优解,
即有2个n/k的集合,分别为{1,2,3,4,5},{6,7,8,9,10}。
这里不用考虑数量为n/k+1的集合是n%k=0,若n%k!=0的话则要考虑。
/* ***********************************************┆ ┏┓ ┏┓ ┆┆┏┛┻━━━┛┻┓ ┆┆┃ ┃ ┆┆┃ ━ ┃ ┆┆┃ ┳┛ ┗┳ ┃ ┆┆┃ ┃ ┆┆┃ ┻ ┃ ┆┆┗━┓ 马 ┏━┛ ┆┆ ┃ 勒 ┃ ┆ ┆ ┃ 戈 ┗━━━┓ ┆┆ ┃ 壁 ┣┓┆┆ ┃ 的草泥马 ┏┛┆┆ ┗┓┓┏━┳┓┏┛ ┆┆ ┃┫┫ ┃┫┫ ┆┆ ┗┻┛ ┗┻┛ ┆************************************************ */#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <bitset>using namespace std;#define rep(i,a,b) for (int i=(a),_ed=(b);i<=_ed;i++)#define per(i,a,b) for (int i=(b),_ed=(a);i>=_ed;i--)#define pb push_back#define mp make_pairconst int inf_int = 2e9;const long long inf_ll = 2e18;#define inf_add 0x3f3f3f3f#define mod 1000000007#define LL long long#define ULL unsigned long long#define MS0(X) memset((X), 0, sizeof((X)))#define SelfType intSelfType Gcd(SelfType p,SelfType q){return q==0?p:Gcd(q,p%q);}SelfType Pow(SelfType p,SelfType q){SelfType ans=1;while(q){if(q&1)ans=ans*p;p=p*p;q>>=1;}return ans;}#define Sd(X) int (X); scanf("%d", &X)#define Sdd(X, Y) int X, Y; scanf("%d%d", &X, &Y)#define Sddd(X, Y, Z) int X, Y, Z; scanf("%d%d%d", &X, &Y, &Z)#define reunique(v) v.resize(std::unique(v.begin(), v.end()) - v.begin())#define all(a) a.begin(), a.end()typedef pair<int, int> pii;typedef pair<long long, long long> pll;typedef vector<int> vi;typedef vector<long long> vll;inline int read(){int ra,fh;char rx;rx=getchar(),ra=0,fh=1;while((rx<'0'||rx>'9')&&rx!='-')rx=getchar();if(rx=='-')fh=-1,rx=getchar();while(rx>='0'&&rx<='9')ra*=10,ra+=rx-48,rx=getchar();return ra*fh;}//#pragma comment(linker, "/STACK:102400000,102400000")LL dp[5005][5005];int a[300005];int main(){//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);ios::sync_with_stdio(0);cin.tie(0);Sdd(n,k);rep(i,1,n)a[i] = read();sort(a+1,a+1+n);int big = n%k, small = k - n%k;int bsz = n/k+1, ssz = n/k;memset(dp,0x3f3f3f3f3f3f3f3f,sizeof dp);dp[0][0] = 0;rep(i,0,big){ rep(j,0,small) { int id = i * bsz + j * ssz; if(i) dp[i][j] = min(dp[i][j],dp[i-1][j] + a[id] - a[id-bsz+1]); if(j) dp[i][j] = min(dp[i][j],dp[i][j-1] + a[id] - a[id-ssz+1]); }}printf("%I64d\n",dp[big][small]);return 0;}
0 0
- CF#571 B. Minimization (DP)
- codeforces 571B--Minimization(贪心+dp)
- CodeForces 571B Minimization(dp)
- CodeForces 571B Minimization(dp)
- codeforces 571B Minimization(dp)
- Codeforces 571B Minimization (DP)
- CF DP Minimization
- codeforces 571B B. Minimization(dp)
- [贪心 + DP] Codeforces #571B. Minimization
- Minimization - Codeforces 571 B
- codeforce 571 B Minimization
- codeforces 571 B. Minimization
- Codeforces 571B--Minimization
- 【codeforces 571B】Minimization
- Codeforces 571B Minimization
- codeforces #317B. Minimization dp && greedy
- CF 2 B(dp)
- CF - 407 - B. Long Path(dp)
- 教你最快html入门
- shopnc框架数据库查询限制30条记录
- 水稻重要品种与参考基因组存在广泛差异
- Jsoncpp遍历json
- 第一个吃 Wayland 螃蟹的 Fedora 25
- CF#571 B. Minimization (DP)
- U3D开发学习之路--RayCast中layerMask的使用
- 转 [学习笔记]时钟中断的定义及作用
- Java开发中的23种设计模式详解
- nginx学习——建立hash表的前提条件
- leetcode 33. Search in Rotated Sorted Array
- 在Linux下进入目录,目录下创建、修改、删除文件所需权限
- 使用QtCreator作为嵌入式Linux的IDE及可视化调试工具
- Java之美[从菜鸟到高手演变]系列之博文阅读导航