白书例题,直接用书上的暴力压缩坐标是可以的,但是看了别人的博客的写法,大概是理解了思想但是看不懂为什么那么压缩,先放这,等明白了补上

#define debug
#include<stdio.h>
#include<math.h>
#include<cmath>
#include<queue>
#include<stack>
#include<string>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<functional>
#include<iomanip>
#include<map>
#include<set>
#define f first
#define s second
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll>PLL;
typedef pair<int,ll>Pil;
const ll INF = 0x3f3f3f3f;
const double inf=1e8+100;
const double eps=1e-8;
const ll maxn =1e3+200;
const int N = 1e4+10;
const ll mod=1000007;
//
int dx[]= {0,1,-1,0};
int dy[]= {1,0,0,-1};
int fld[2*maxn][2*maxn];
int X1[maxn],X2[maxn],Y1[maxn],Y2[maxn];
int W,H,n;
//
int compress(int *x1,int *x2,int w) {
vector<int>xs;
//
for(int i=0; i<n; i++) {
int tx1=x1[i],tx2=x2[i];
if(1<=tx1&&tx1<w)
xs.push_back(tx1);
if(1<=tx2&&tx2<w)
xs.push_back(tx2);
}
xs.push_back(0);
xs.push_back(w);
sort(xs.begin(),xs.end());
xs.erase(unique(xs.begin(),xs.end()),xs.end());
for(int i=0; i<n; i++) {
x1[i]=find(xs.begin(),xs.end(),x1[i])-xs.begin();
x2[i]=find(xs.begin(),xs.end(),x2[i])-xs.begin();
cout<<x1[i]<<" "<<x2[i]<<endl;
}
return xs.size()-1;
}
//
int bfs() {
int ans=0;
//
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
if(fld[i][j])
continue;
ans++;
queue<pair<int,int> >q;
q.push(make_pair(j,i));
while(!q.empty()){
int sx=q.front().first,sy=q.front().second;
q.pop();
//
for(int k=0;k<4;k++){
int tx=sx+dx[k],ty=sy+dy[k];
if(tx<0||W<tx||ty<0||H<ty||fld[ty][tx]>0)
continue;
q.push(make_pair(tx,ty));
fld[ty][tx]=1;
}
}
}
}
return ans;
}
//
void solve() {
int i,j,tt=1;
while(cin>>W>>H) {
cin>>n;
for(i=0; i<n; i++) {
cin>>X1[i]>>Y1[i]>>X2[i]>>Y2[i];
}
memset(fld,0,sizeof(fld));
//
W=compress(X1,X2,W);
H=compress(Y1,Y2,H);
cout<<endl;
for(i=0; i<n; i++) {
cout<<X1[i]<<" "<<Y1[i]<<" "<<X2[i]<<" "<<Y1[i]<<endl;
}
//
for(i=0; i<n; i++) {
fld[Y1[i]][X1[i]]++;
fld[Y2[i]][X2[i]]++;
fld[Y1[i]][X2[i]]--;
fld[Y2[i]][X1[i]]--;
}
//
for(i=0; i<H; i++) {
for(j=1; j<W; j++) {
fld[i][j]+=fld[i][j-1];
}
}
for(i=1; i<H; i++) {
for(j=0; j<W; j++) {
fld[i][j]+=fld[i-1][j];
}
}
for(i=0; i<H; i++) {
for(j=0; j<W; j++) {
cout<<fld[i][j]<<" ";
}
cout<<endl;
}
//
// cout<<bfs()<<endl;
}
} int main() {
ios_base::sync_with_stdio(false);
#ifdef debug
freopen("in.txt", "r", stdin);
// freopen("out.txt","w",stdout);
#endif
cin.tie(0);
cout.tie(0);
solve();
/*
#ifdef debug
fclose(stdin);
fclose(stdout);
system("out.txt");
#endif
*/
return 0;
}

  

Aizu - 0531 Paint Color的更多相关文章

  1. Aizu 0531 "Paint Color" (坐标离散化+DFS or BFS)

    传送门 题目描述: 为了宣传信息竞赛,要在长方形的三合板上喷油漆来制作招牌. 三合板上不需要涂色的部分预先贴好了护板. 被护板隔开的区域要涂上不同的颜色,比如上图就应该涂上5种颜色. 请编写一个程序计 ...

  2. AOJ 0531:Paint Color(二维离散+imos)

    [题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0531 [题目大意] 给出一张图,和一些矩形障碍物,求该图没被障碍物覆 ...

  3. Greedy:Paint Color(AOJ 0531)

    涂颜料 题目大意:在一个1000000*1000000的矩阵中放入几块木板,问你这些木板把矩阵划分成了几个区域?输入会给左下角和右上角的坐标,输入W==0且H==0结束. 这一题是书上的作业题,书上有 ...

  4. ProgrammingContestChallengeBook

    POJ 1852 Ants POJ 2386 Lake Counting POJ 1979 Red and Black AOJ 0118 Property Distribution AOJ 0333 ...

  5. imos-累积和法

    在解AOJ 0531 Paint Color时,学到了一个累积和的妙用--imos法,由于原文是日语,所以特意翻译过来.值得一提的是,作者Kentaro Imajo跟鄙人同龄,却已取得如此多的成就,而 ...

  6. Android Paint画笔及Color .

    引自:http://blog.csdn.net/q445697127/article/details/7736926 Paint paint = new Paint(); // 设置paint为无锯齿 ...

  7. LC 265. Paint House II

    There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...

  8. JAVAFX纯手写布局

    主页面效果: 第一栏的效果: 工程目录: package MessageBean; /** * * @author novo */ public class Message { private Str ...

  9. EditBox问题的实现以及Junit测试框架的简要说明

    一.这周的EditBox由一个框改为三个框,同时进行测试,下面给出程序及截图 1 import java.util.regex.Matcher; 2 import java.util.regex.Pa ...

随机推荐

  1. java.sql.SQLException: Access denied for user 'sa'@'localhost' (using password: NO)

    1.错误描述 INFO:2015-05-01 16:53:29[main] - HHH000228: Running hbm2ddl schema update INFO:2015-05-01 16: ...

  2. java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class org.

    1.错误描述 严重: Exception starting filter struts2 java.lang.UnsupportedClassVersionError: Bad version num ...

  3. Caused by: Unable to locate parent package [json-default] for [class com.you.user.action.StudentActi

    1.错误描述 信息: Choosing bean (struts) for (com.opensymphony.xwork2.util.TextParser) 2014-7-13 1:52:04 or ...

  4. hibernate学习(一)配置,导包

    框架的作用 学过javaWeb基础的已经对web层 jsp  servlet   ,service  层  ,dao层的jdbc .DBUtils 有了很深的了解 并编写代码实现某种功能 为了提高开发 ...

  5. linux下直接拷贝新版本R

      如果要使用新版本的R,除了直接安装,也可以直接拷贝R的文件夹.这样既可以保留原始的R版本和R包,也可以使用新版本的R和R包,R包存放在R目录下的library文件夹. 文件放路径 R: /usr/ ...

  6. 【BZOJ4869】相逢是问候(线段树,欧拉定理)

    [BZOJ4869]相逢是问候(线段树,欧拉定理) 题面 BZOJ 题解 根据欧拉定理递归计算(类似上帝与集合的正确用法) 所以我们可以用线段树维护区间最少的被更新的多少次 如果超过了\(\varph ...

  7. 快速开发 HTML5 WebGL 的 3D 斜面拖拽生成模型

    前言 3D 场景中的面不只有水平面这一个,空间是由无数个面组成的,所以我们有可能会在任意一个面上放置物体,而空间中的面如何确定呢?我们知道,空间中的面可以由一个点和一条法线组成.这个 Demo 左侧为 ...

  8. ubuntu14.04上面安装ia32-libs

    sudo -i cd /etc/apt/sources.list.d echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main ...

  9. tar命令核心应用案列及多重参数和find组合应用

    tar zcvf 压缩包 文件 打包:尽量切换到打包目录的上级目录,然后用相对路径打包 tar zcvf [随意路径] /框 [相对路径]  一堆苹果 tar tf 查看内容 -z --gzip -- ...

  10. 论文笔记(4):Fully Convolutional Networks for Semantic Segmentation

    一.FCN中的CNN 首先回顾CNN测试图片类别的过程,如下图: 主要由卷积,pool与全连接构成,这里把卷积与pool都看作图中绿色的convolution,全连接为图中蓝色的fully conne ...