[2018.04.17][水][日志][7][#188][USACO 3.1 Shaping Regions][漂浮大陆][背景-amp;amp;amp;gt;][表示为什么如此虚伪+纯模拟一只]

本文主要是介绍[2018.04.17][水][日志][7][#188][USACO 3.1 Shaping Regions][漂浮大陆][背景-amp;amp;amp;gt;][表示为什么如此虚伪+纯模拟一只],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[背景]

    这是我发的多少道模拟题了......

    本道题表面和善,内在虚伪,因为,如果用纯模拟,你的程序将一塌糊涂..

[#188][USACO 3.1 Shaping Regions]

题目描述
N个不同的颜色的不透明的长方形(1 <= N <= 1000)被放置在一张宽为A长为B的白纸上。
这些长方形被放置时,保证了它们的边与白纸的边缘平行。
所有的长方形都放置在白纸内,所以我们会看到不同形状的各种颜色。坐标系统的原点(0,0)设在这张白纸的左下角,而坐标轴则平行于边缘。 
输入格式
按顺序输入放置长方形的方法。第一行输入的是那个放在底的长方形(即白纸)。 
第 1 行: A , B 和 N, 由空格分开 (1 <=A, B<=10,000) 
第 2 到N+1行: 为五个整数 llx, lly, urx, ury, color 这是一个长方形的左下角坐标,右上角坐标和颜色。 
颜色 1和底部白纸的颜色相同。 (1 <= color <= 2500) 
输出格式
输出文件应该包含一个所有能被看到颜色连同该颜色的总面积的清单( 即使颜色的区域不是连续的),按color的增序顺序。 
不要显示没有区域的颜色。 
样例数据
input
20 20 3
2 2 18 18 2
0 8 19 19 3
8 0 10 19 4
output
1 91
2 84
3 187

4 38

[分析]

    这道题虚伪就虚伪在数据量上,如果使用O(n^2)算法暴搜,我们将:1,定义不了那么大的数组2.严重超时

    现在就GG了,怎么做才比较虚伪地AC呢?

    根据大神的说法,我们引入一个新名词,“漂浮法”,类似于...向菜刀上落饼干,饼干会一份两半移开....

    这就为递归打好了准备...


很好!程序的主体已经完成,现在只要虚伪出核心代码了!


总结来说,我们在思考这类题目时可以考虑一反常识,进行计算

[code]

#include<bits/stdc++.h>
using namespace std;
int x_1[1002],y_1[1002],x_2[1002],y_2[1002];
int color[1002]={1},cnt[2502],N;
void cover(int lx,int ly,int rx,int ry,int c,int h);
int main(void)
{
	cin>>x_2[0]>>y_2[0]>>N;
	for(int i=1;i<=N;i++)	cin>>x_1[i]>>y_1[i]>>x_2[i]>>y_2[i]>>color[i];
cnt[color[N]]+=(y_2[N]-y_1[N])*(x_2[N]-x_1[N]);
for(int i=N-1;i>=0;i--)	cover(x_1[i],y_1[i],x_2[i],y_2[i],color[i],i+1);
for(int i=1;i<=2500;++i)	if(cnt[i])	cout<<i<<" "<<cnt[i]<<endl;
	return 0;
}
void cover(int lx,int ly,int rx,int ry,int c,int h)
{
	if(lx==rx||ly==ry)	return;
	if(h>N)	cnt[c]+=(rx-lx)*(ry-ly);
	else
	{	if(ly<y_1[h])	cover(min(lx,x_2[h]),ly,min(rx,x_2[h]),min(y_1[h],ry),c,h+1);	if(rx>x_2[h])	cover(max(x_2[h],lx),min(y_2[h],ly),rx,min(y_2[h],ry),c,h+1);	if(ry>y_2[h])	cover(max(lx,x_1[h]),max(y_2[h],ly),max(rx,x_1[h]),ry,c,h+1);	if(lx<x_1[h])	cover(lx,max(y_1[h],ly),min(x_1[h],rx),max(y_1[h],ry),c,h+1);
	}
	return;
}

这篇关于[2018.04.17][水][日志][7][#188][USACO 3.1 Shaping Regions][漂浮大陆][背景-amp;amp;amp;gt;][表示为什么如此虚伪+纯模拟一只]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682642

相关文章

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Nacos日志与Raft的数据清理指南

《Nacos日志与Raft的数据清理指南》随着运行时间的增长,Nacos的日志文件(logs/)和Raft持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性,本... 目录引言1. Nacos 日志文件(logs/ 目录)清理1.1 日志文件的作用1.2 是否可以删除

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序