【TYVJ】1094 矩形分割

原创 2015年07月09日 19:50:11
【解析】

由于每行每列都要取一次,为了使结果最小,越大的数被分割的次数应该越少。

所以按照数值从大到小排序,然后枚举并维护出现了几次。

<span style="font-size:18px;">#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;

const int N=2140;

//0,n:行		1,m:列 
int n,m,c[2][N],v[2][N];
struct Q
{
	int k,id,w;
}q[N];
int res;

inline int read(void)
{
	int s=0,f=1; char c=getchar();
	for (;c<'0'||c>'9';c=getchar()) if (c=='-') f=-1;
	for (;'0'<=c&&c<='9';c=getchar()) s=(s<<1)+(s<<3)+c-'0';
	return s*f;
}

inline int cmp(Q qa,Q qb)
{
	return qa.w>qb.w;
}

int main(void)
{
	n=read(),m=read();
	for (int i=1;i<n;i++) c[0][i]=read();
	for (int i=1;i<m;i++) c[1][i]=read();
	
	for (int i=1;i<n;i++) q[i].id=i,q[i].w=c[0][i];
	for (int i=1;i<m;i++) q[i+n-1].k=1,q[i+n-1].id=i,q[i+n-1].w=c[1][i];
	sort(q+1,q+n+m-1,cmp);
	
	int cc;
	for (int i=1;i<=n+m-2;i++)
	{
		cc=1;
		if (!q[i].k)
		{
			for (int j=1;j<m;j++) cc+=v[1][j];
			v[0][q[i].id]=1;
		}
		else
		{
			for (int j=1;j<n;j++) cc+=v[0][j];
			v[1][q[i].id]=1;
		}
		res+=cc*q[i].w;
	}
	printf("%d\n",res);
	
	return 0;
}</span>


版权声明:本文为博主原创文章,未经博主允许不得转载。

Tyvj 1094 矩形分割【贪心】

题目链接:http://www.tyvj.cn/p/1094题解: 模拟切割的过程,注意到切割的次序越往后,值越大,所以每次选取当前数组中最大的,再弹出。结果比较好求,想想就切了,有意思的一...
  • qq_34896694
  • qq_34896694
  • 2017年02月10日 18:01
  • 131

COGS 498 TYVJ 1094 矩形分割 贪心

这道题最容易想到的是DP,但是基于数据范围,DP并不是很容易实现。空间会爆。于是可以想贪心,我们每次都割开最大代价的边。如何证明这个的正确性呢,其实我一开始不是这么想的贪心,我想的是:割一条竖边对其他...
  • qq_25978793
  • qq_25978793
  • 2015年09月16日 19:30
  • 208

P1094 矩形分割|tyvj

**背景**YHOI Train#4 Problem 1**描述**出于某些方面的需求,我们要把一块N×M的木板切成一个个1×1的小方块。 对于一块木板,我们只能从某条横线或者某条竖线(要在方格线上)...
  • fd_xuan
  • fd_xuan
  • 2015年10月03日 13:32
  • 480

Tyvj专题 P1094 矩形分割

题目因为要分成1*1的格子,所以每一条边肯定都要切,只不过是切的次数的多少有所不同。 对于每一条纵边来说,它所需要切得次数等于在这条纵向边切之前的已经切的横边的次数。对于横边就看纵边。让代价大的先切...
  • D042412
  • D042412
  • 2015年07月14日 15:54
  • 296

03:矩形分割 来源OJ

这是本人第一次发博,c++初学者 总时间限制: 1000ms内存限制: 65536kB 描述 平面上有一个大矩形,其左下角坐标(0,0),右上角坐标(R,R)。大矩形内部包含一些小矩形,...
  • sinat_34943123
  • sinat_34943123
  • 2016年05月10日 22:23
  • 1105

矩形分割(动态规划)

 矩形分割(cut)Description出于某些方面的需求,我们要把一块N×M的木板切成一个个1×1的小方块。对于一块木板,我们只能从某条横线或者某条竖线(要在方格线上),而且这木板是不均匀的,从不...
  • wxf1995
  • wxf1995
  • 2009年11月14日 13:08
  • 2471

算法学习之——矩形切割思想

算法学习之——矩形切割思想
  • u012746396
  • u012746396
  • 2014年11月19日 13:17
  • 854

线与矩形的切割算法

在球形摄像机,因为设备有水平和垂直方向以及镜头的zoom三台电机,所以画在某个空间位置上的线在设备运动之后可能会出现在视频预览中的位置变化,如下图所示: 在P215 T19 Z001的位置天花板上画...
  • jinnlxl
  • jinnlxl
  • 2015年03月04日 15:10
  • 1235

tyvj p1004 滑雪

描述     trs喜欢滑雪。他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形。为了得到更快的速度,滑行的路线必须向下倾斜。     例如样例中的那个矩形,可...
  • nmlh744831517
  • nmlh744831517
  • 2015年09月21日 23:33
  • 747

【OpenJudge】矩形分割——(二分查找)

03:矩形分割总时间限制: 1000ms 内存限制: 65536kB 描述 平面上有一个大矩形,其左下角坐标(0,0),右上角坐标(R,R)。大矩形内部包含一些小矩形,小矩形都平行于坐标轴且互不重...
  • zhhe0101
  • zhhe0101
  • 2016年10月12日 10:25
  • 1820
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【TYVJ】1094 矩形分割
举报原因:
原因补充:

(最多只允许输入30个字)