BZOJ2933:POI1999地图
Description
- 在用颜色k的区域中至少有一半的区域的人口不大于A(k)
- 在用颜色k的区域中至少有一半的区域的人口不小于A(k)
- 读入每个区域的人口数
- 计算最小的累计误差
- 将结果输出
Input
Output
Solution
为了使几个区域的人口更加接近,所以先排序,然后考虑怎样将几个区域的人口分为一段,使得误差最小。又因为i号位之前的分法对于之后的分法没有影响,所以果断DP。如果用f[i][j]表示前i个区域分成j段,再去枚举这i个区域最后一段切在哪里(k),就能得到状态转移方程:f[i][j]=min(f[i][j],f[k][j-1]+(k+1到i号位的误差));
那么就要用前缀和处理出把i到j号位分成一段的误差(1<=i<=j<=n),可离线读取。s为a的前缀和数组,那么i到j位的误差就是(mid为i到j的中位数),a[mid]*(mid-i)-(s[mid-1]-s[i-1])+(s[j]-s[mid])-a[mid]*(j-mid),画数轴自己推一下会好理解得多。
Code
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int a[];
long long s[],w[][],f[][];
int main()
{
int n,m;
cin>>n>>m;
for (int i=; i<=n; i++)
cin>>a[i];
sort(a+,a+n+);//先排序
for (int i=; i<=n; i++)
s[i]=s[i-]+a[i];//前缀和
int mid;
for (int i=; i<=n; i++)
for (int j=i; j<=n; j++)
{
mid=(i+j)/;
w[i][j]=a[mid]*(mid-i)-(s[mid-]-s[i-])+(s[j]-s[mid])-a[mid]*(j-mid);//w数组存的是区间的误差
}
for (int i=; i<=n+; i++)
for(int j=; j<=m+; j++)
f[i][j]=;
f[][]=;
for (int i=; i<=n; i++)
for (int j=; j<=m; j++)
for (int k=; k<=i-; k++)
f[i][j]=min(f[i][j],f[k][j-]+w[k+][i]);
cout<<f[n][m]<<endl;
return ;
}
Source
http://www.lydsy.com/JudgeOnline/problem.php?id=2933
BZOJ2933:POI1999地图的更多相关文章
- BZOJ2933: [Poi1999]地图
Description 一个人口统计办公室要绘制一张地图.由于技术的原因只能使用少量的颜色.两个有相同或相近人口的区域在地图应用相同的颜色.例如一种颜色k,则A(k) 是相应的数,则有: 在用颜色 ...
- BZOJ2933 [Poi1999]地图【区间DP】
Description 一个人口统计办公室要绘制一张地图.由于技术的原因只能使用少量的颜色.两个有相同或相近人口的区域在地图应用相同的颜色.例如一种颜色k,则A(k) 是相应的数,则有: 在用颜色k的 ...
- BZOJ 2933([Poi1999]地图-区间Dp)
2933: [Poi1999]地图 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 7 Solved: 7 [ Submit][ Status] ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- Java 征途:行者的地图
前段时间应因缘梳理了下自己的 Java 知识体系, 成文一篇望能帮到即将走进或正在 Java 世界跋涉的程序员们. 第一张,基础图 大约在 2003 年我开始知道 Java 的(当时还在用 Delph ...
- 【详细教程】论android studio中如何申请百度地图新版Key中SHA1值
一.写在前面 现在越来越多的API接口要求都要求提供我们的项目SHA1值,开发版目前还要求不高,但是发布版是必定要求的.而目前定位在各大APP中也较为常见,当下主流的百度地图和高德地图都在申请的时候会 ...
- C# 程序中嵌入百度地图
本例是对WinForm中使用百度地图的简要介绍.百度地图目前支持Android开发,IOS开发,Web开发,服务接口,具体可以参照'百度地图开放平台'. [动态加载百度地图]涉及到的知识点: WebB ...
- 高德地图api实现地址和经纬度的转换(python)
利用高德地图web服务api实现地理/逆地址编码 api使用具体方法请查看官方文档 文档网址:http://lbs.amap.com/api/webservice/guide/api/georegeo ...
- Highcharts中国地图热力图
最近有个项目需要将MC销量按大陆各省统计,并以中国地图人力图效果显示.由于项目一直使用Highcharts进行图表的统计,故采用Highmaps来实现. 效果如下: 1)中国各个省.直辖市.自治区: ...
随机推荐
- UIAlertController警告视图和操作表单
//创建一个myAlert1操作表单对象(UIAlertControllerStyleActionSheet为操作表单,UIAlertControllerStyleAlert为警告视图) UIAler ...
- paper 125:NSCT——Nonsubsampled contourlet 变换程序(尺度不变性问题研究)
原文地址:NSCT——Nonsubsampled contourlet 变换程序开发教程1作者:向望大海的鱼 08年,被老板逼得走投无路,xx所得项目看来是实在躲不过去,只好硬着头皮上.开发一款图像处 ...
- linux 配置 ftp
1.检测是否安装ftp 2.apt-get install 安装 (如果安装失败 执行apt-get install update<如果update失败 配置dns让自己的服务器 可以ping ...
- python学习笔记系列----(六)错误和异常
python至少有2类不同的错误:语法错误(Syntax Errors)和异常(Exceptions). 8.1 语法错误 这个单词应该还是很有必要认识的,呵呵,语法错误,也叫解析错误,是我们最不愿意 ...
- mysql 每秒钟查询次数、插入次数、删除次数、更新次数的统计
-show global status where Variable_name in('com_select','com_insert','com_delete','com_update'); 查询出 ...
- 响应式内容滑动插件jQuery.bxSlider
bxSlider特性 1.充分响应各种设备,适应各种屏幕: 2.支持多种滑动模式,水平.垂直以及淡入淡出效果: 3.支持图片.视频以及任意html内容: 4.支持触摸滑动: 5.支持Firefox,C ...
- android 使用jdbc1.3.0 操作 sql server
String connectDB = "jdbc:jtds:sqlserver://172.16.1.15:1433;DatabaseName=YanBu";// 连接字符串换成这 ...
- .Net发出图片Request请求
Stream reader = null; //可能是外部链接 if (imgUrl.ToLower().StartsWith("http://")) { var request ...
- MVC3.0 项目升级到 MVC4.0
按照 http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806 的步骤 第一步:修改web.config 注意,默认的MVC3网站 ...
- python :开关,开灯关灯
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...