【BZOJ】1105: [POI2007]石头花园SKA
题意
二维平面上有\(n(2 \le n \le 1000000)\)个点,可以花费\(w_i\)交换第\(i\)个点的横纵坐标。求在满足能覆盖所有点的最小矩阵周长最短的情况下花费最小。
分析
这题太神了。有一个结论是,所有点都会交换到\(y=x\)线的同一侧。
题解
所以我们暴力就行辣。
#include <bits/stdc++.h>
using namespace std;
inline int getint() {
	int x=0, c=getchar();
	for(; c<48||c>57; c=getchar());
	for(; c>47&&c<58; x=x*10+c-48, c=getchar());
	return x;
}
const int N=1000005;
bool ok[N], vi[N];
int n, x[N], y[N], w[N], ans=~0u>>1;
void go(int lx, int rx, int ly, int ry) {
	int temp=0;
	for(int i=1; i<=n; ++i) {
		if(lx<=x[i] && x[i]<=rx && ly<=y[i] && y[i]<=ry) {
			vi[i]=0;
		}
		else if(lx<=y[i] && y[i]<=rx && ly<=x[i] && x[i]<=ry) {
			vi[i]=1;
			temp+=w[i];
		}
		else {
			return;
		}
	}
	if(temp<ans) {
		ans=temp;
		memcpy(ok, vi, sizeof(bool)*(n+1));
	}
}
int main() {
	n=getint();
	int lx=~0u>>1, ly=lx, rx=-lx, ry=rx;
	for(int i=1; i<=n; ++i) {
		x[i]=getint(), y[i]=getint(), w[i]=getint();
		int a=min(x[i], y[i]), b=max(x[i], y[i]);
		lx=min(lx, a);
		rx=max(rx, a);
		ly=min(ly, b);
		ry=max(ry, b);
	}
	printf("%lld ", 2ll*(rx-lx+ry-ly));
	go(lx, rx, ly, ry);
	go(lx, ry, ly, rx);
	go(ly, rx, lx, ry);
	go(ly, ry, lx, rx);
	printf("%d\n", ans);
	for(int i=1; i<=n; ++i) {
		putchar('0'+ok[i]);
	}
	return 0;
}												
											【BZOJ】1105: [POI2007]石头花园SKA的更多相关文章
- BZOJ 1105: [POI2007]石头花园SKA
		
1105: [POI2007]石头花园SKA Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 628 Solved: 182[Submit][Stat ...
 - BZOJ1105  [POI2007]石头花园SKA 贪心
		
[POI2007]石头花园SKA Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 776 Solved: 237[Submit][Status][Di ...
 - [POI2007]石头花园SKA
		
Description Blue Mary是一个有名的石头收藏家.迄今为止,他把他的藏品全部放在他的宫殿的地窖中.现在,他想将他的藏品陈列在他的花园中.皇家花园是一个边长为1000000000单位的平 ...
 - BZOJ1105 : [POI2007]石头花园SKA
		
考虑把所有石头翻到直线y=x同侧,此时可以保证篱笆长度最短. 这种最短的篱笆一共有4种可能,枚举每种可能然后$O(n)$检验求出答案即可. #include<cstdio> const i ...
 - 树状数组 - BZOJ 1103 [POI2007]大都市
		
bzoj 1103 [POI2007]大都市 描述 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员 Blue Mary也开始骑着摩托车传递邮件了.不过,她经常回忆起以前在乡间漫步的情景. ...
 - 并查集 - BZOJ 1104 [POI2007]洪水
		
BZOJ 1104 [POI2007]洪水 描述 AKD 市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD 市全被水淹没了.Blue Mary,AKD 市的市长,召集了他的所有顾问(包括你 ...
 - BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
		
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
 - BZOJ 1101: [POI2007]Zap
		
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2262 Solved: 895[Submit][Status] ...
 - BZOJ 1100: [POI2007]对称轴osi
		
1100: [POI2007]对称轴osi Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 630 Solved: 243[Submit][Statu ...
 
随机推荐
- 使用SQL语句向已有数据表添加约束
			
如果向存在数据的表里添加约束,有可能会出现数据不符合检查约束而造成添加约束失败. 如: 这是一个表,为身份证号添加检查约束. USE DEmo--指向当前操作的数据库 GO ALTER TABLE E ...
 - RTP/RTCP的时间同步机制
			
转自:http://blog.csdn.net/leesphone/article/details/5571972 RTP支持传送不同codec的steaming,不同codec的clock rate ...
 - ObCallback回调钩子检测
			
ObCallback回调钩子检测 2013-12-20 Nie.Meining Ring0 在 PatchGuard 的摧残下,通过 ObRegisterCallbacks 函数注册回调钩子已经成了 ...
 - Blog Starting...
			
30出头,开始Blog记录学习生活的点滴,待40时再回来一看.
 - 【HTML5  video】video标签的部分属性解析
			
转自:http://www.cnblogs.com/kiter/archive/2013/02/25/2932157.html 现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Th ...
 - java中 几种数据库连接池 的写法
			
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
 - SpringJDBC解析1-使用示例
			
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组 ...
 - hdu1010 dfs+奇偶性减枝
			
Tempter of the Bone Problem Description The doggie found a bone in an ancient maze, which fascinated ...
 - js:方法2. 字符串
			
String.charAt()/String.charCodeAt() string.charAt(n); n:The index of the character that should be re ...
 - App测试时,区分客户端或服务器端导致问题产生的方法
			
1.先确定产生问题的地方是否与服务器产生交互/通信,若无则非服务器问题: 2.通过Fiddler抓包,查看操作时调用的服务器接口是否正常并检查对应返回值: 3.若接口返回值正常,则需查看客户端对业务的 ...