UVALive 6924Load Balancing(dp)
来源:互联网 发布:学神it linux视频下载 编辑:程序博客网 时间:2024/06/16 08:23
题意:
N≤104个数的序列,每个数∈[0,160],现求一个四等分点,使得落在每个区间的频数与浮点平均数的差值和最小
分析:
一开始想着贪心,然后又想暴力枚举,直到最后发现了数是可以重复的,−−160的范围,1W个数。。
然后就是显然的dp了,维护下数的个数的前缀和
考虑状态dp[i][j]:=[0,i]范围的数划分成j部分的最小差值和
然后暴力转移就可以了,记录下转移的过程为了打印方便
嘛,a,b,c是不能相等的,所以转移的时候是<
代码:
//// Created by TaoSama on 2015-12-09// Copyright (c) 2015 TaoSama. All rights reserved.////#pragma comment(linker, "/STACK:1024000000,1024000000")#include <algorithm>#include <cctype>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <map>#include <queue>#include <string>#include <set>#include <vector>using namespace std;#define pr(x) cout << #x << " = " << x << " "#define prln(x) cout << #x << " = " << x << endlconst int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;int n;double dp[165][5];int pre[165][5], cnt[165], sum[165];void printDp(int i, int j) { printf("dp[%d][%d] = %.5f\n", i, j, dp[i][j]);}int main() {#ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);// freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);#endif ios_base::sync_with_stdio(0); int t; scanf("%d", &t); int kase = 0; while(t--) { scanf("%d", &n); memset(cnt, 0, sizeof cnt); for(int i = 1; i <= n; ++i) { int x; scanf("%d", &x); ++cnt[x]; } sum[0] = cnt[0]; for(int i = 1; i <= 160; ++i) sum[i] = sum[i - 1] + cnt[i]; double avg = n / 4.0; for(int i = 0; i <= 160; ++i) { dp[i][1] = abs(sum[i] - avg); for(int j = 2; j <= 4; ++j) { dp[i][j] = INF; for(int k = 0; k < i; ++k) { double dif = abs(sum[i] - sum[k] - avg); if(dp[i][j] > dp[k][j - 1] + dif) { dp[i][j] = dp[k][j - 1] + dif; pre[i][j] = k; } } } } vector<int> ans; int cur = 160, k = 4; while(ans.size() != 3) { ans.push_back(pre[cur][k]); cur = pre[cur][k]; --k; } printf("Case %d: %d %d %d\n", ++kase, ans[2], ans[1], ans[0]); } return 0;}
0 0
- UVALive 6924Load Balancing(dp)
- ICPC 6924 Load Balancing
- 负载均衡( Load Balancing )
- Load Balancing
- load balancing
- Load Balancing
- Load Balancing
- HDU 2850 Load Balancing(优先队列)
- UVA 12904 Load Balancing (暴力)
- 【CodeForces】609C - Load Balancing(水)
- CodeForces 609 C. Load Balancing(水~)
- Load Balancing Web Applications
- Server Load Balancing
- Apache + Tomcat + Load Balancing
- Load balancing (computing)
- Hbase Load Balancing
- hdu 2850 Load Balancing
- Runtime Connection Load Balancing
- 利用Nginx做负载均衡
- 搭建Nginx+Java环境(转)
- 2015最新华为过360版GSMS软件ISO文件下载
- C++智能指针使用总结
- 程序员浪费生命的几种方式
- UVALive 6924Load Balancing(dp)
- PAT1012
- 易错、易望、基础、重要知识点 ——java语言的基本常识
- 易错、易望、基础、重要知识点——java中最常用的两种排序方式
- libz.so.1: cannot open shared object file
- 易错、易望、基础、重要知识点 ——API常用类1——StringBuffer/StringBuilder
- Android-ViewPager自动滑动
- Scala基础教程--3控制结构与函数
- Hessian Matrix