幻灯片

题目大意:

有n个幻灯片映在一起,每个幻灯片的的左上角是a1,a2,右上角是a3,a4,颜色是a5当多个幻灯片在同一个位置时,颜色就是他们的和,求有所少种颜色

样例输入

3

2 2 3 3 2

2 0 4 4 1

1 1 3 5 3

样例输出

4

数据范围限制

提示

数据说明:

对于50%的数据,0<=X1,Y1,X2,Y2<=10^2。

对于100%的数据,0<=X1,Y1,X2,Y2<=10^9。

解题思路:

这道题只能拿50分暴力,想拿100分首先要离散化(注意:这里要加0.5或减0.5,要不然会有bug),离散化要排序,去重,然后还要将去重后的位置放回原处,这样就可以省下很多空间,时间,然后用一种差分,快速推出每一个地方的颜色

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int w,n,len,ans,b[1005][1005],pd[10005];
double f[1005];
struct rec
{double x1,x2,y1,y2;//每一个幻灯片int c;
}a[105];
int main()
{freopen("b.in","r",stdin);freopen("b.out","w",stdout);scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%lf %lf %lf %lf %d",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2,&a[i].c);f[++w]=a[i].x1-0.5;//全是避免bugf[++w]=a[i].y1-0.5;f[++w]=a[i].x2+0.5;f[++w]=a[i].y2+0.5;f[++w]=(a[i].x1+=0.5);f[++w]=(a[i].y1+=0.5);f[++w]=(a[i].x2-=0.5);f[++w]=(a[i].y2-=0.5);}sort(f+1,f+1+w);//排序len=unique(f+1,f+1+w)-f-1;//去重for (int i=1;i<=n;i++){a[i].x1=lower_bound(f+1,f+1+len,a[i].x1)-f;//先二分查找,再放回去,离散化a[i].y1=lower_bound(f+1,f+1+len,a[i].y1)-f;a[i].x2=lower_bound(f+1,f+1+len,a[i].x2)-f;a[i].y2=lower_bound(f+1,f+1+len,a[i].y2)-f;b[(int)a[i].x1][(int)a[i].y1]+=a[i].c;//左上角b[(int)a[i].x2+1][(int)a[i].y2+1]+=a[i].c;//右下角b[(int)a[i].x1][(int)a[i].y2+1]-=a[i].c;//右上角b[(int)a[i].x2+1][(int)a[i].y1]-=a[i].c;//左下角}for (int i=1;i<=len;i++)for (int j=1;j<=len;j++){b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1];//差分if ((b[i][j])&&(!pd[b[i][j]]))//判断是否记录过和是否有颜色ans++,pd[b[i][j]]++;//颜色种数加一}printf("%d",ans);//输出fclose(stdin);fclose(stdout);return 0;
}

【离散化】【差分】幻灯片(jzoj 1609)相关推荐

  1. 2019ICPC(上海) - Light bulbs(离散化+差分)

    题目链接:点击查看 题目大意:给出n个灯泡,初始化全都是熄灭状态,给出m次操作,每次操作给出闭区间[l,r],将该区间内的灯泡状态翻转,即熄灭的灯泡变为打开状态,打开的灯泡变为熄灭状态,求最后打开灯泡 ...

  2. AcWing 1952. 金发姑娘和 N 头牛(离散化+差分)

    题目链接 https://www.acwing.com/problem/content/description/1954/ 思路 因为对于每一个牛牛来说都有三个不同的舒适度区间,那么我们最终要求的一个 ...

  3. AcWing 1987. 粉刷栅栏(离散化+差分)

    题目链接 https://www.acwing.com/problem/content/1989/ 思路 通过map进行差分处理,每次处理到前缀和从大于1变到小于等于1的时候就进行一次区间长度统计,每 ...

  4. 跳方格(离散化+差分)

    跳方格 (lattice) 时间限制: 1 Sec  内存限制: 128 MB 题目描述 有一个长长的走廊,巨神 ctt 把它分成m方格,从左到右编号为1,2,...,m. 有一天,巨神 ctt 得到 ...

  5. 【Codeforces - 1000C】Covered Points Count(思维,离散化,差分)

    题干: You are given nn segments on a coordinate line; each endpoint of every segment has integer coord ...

  6. Acwing第 29 场周赛【完结】

    TLE场 目录 4194. Pow[签到] 4195. 线段覆盖[离散化+差分] 4196. 最短路径[最短路] 4194. Pow[签到] https://www.acwing.com/proble ...

  7. [10.2模拟] book

    题意:给你n个区间,要你选择一个点,点每覆盖一个区间,都可以得到这个点坐标值的收益,求最大收益 题解: 离散化+差分 #include<iostream> #include<cstd ...

  8. The Preliminary Contest for ICPC Asia Shanghai 2019 BDL

    传送门 B:离散化+差分 #include <bits/stdc++.h> using namespace std; typedef long long ll; struct node{i ...

  9. matlab限幅器无饱和怎么设置,抗积分饱和算法:输出限幅.ppt

    抗积分饱和算法:输出限幅 模块八 数字控制器设计 本章要点 1. 连续化设计方法 重点:数字PID设计 2. 直接离散化设计方法 重点:最少拍控制算法 3. 大林算法与纯滞后控制 4. 模糊控制基础 ...

最新文章

  1. MinGW 和 MSVC 下,使用 FILE 类型的一个奇怪的问题
  2. nginx整合php+lua+oracle环境搭建
  3. Ajax — 第六天
  4. 如何调用一个windows上的应用程序呢?
  5. 中国“两高”发布司法解释 依法严惩涉地下钱庄犯罪
  6. PC/UVA 110405/10026 Shoemaker's problem
  7. 百度地图API地理位置和坐标转换 城市坐标
  8. inventor中齿条怎么画_标准齿轮及齿条绘制方法
  9. 基于convLSTM模型的雷达图像外推算法
  10. html怎么唤起虚拟键盘,电脑虚拟键盘怎么打开?电脑虚拟键盘打开五大方法介绍...
  11. 外贸企业邮箱格式怎么写?外贸域名邮箱格式
  12. VUE中的img的:src动态加载图片的问题,require也不能随便用
  13. java游戏回转贝贝龙2下载,崩坏3:暴雨将至最后的剧情,为何贝贝龙拼死保护琪亚娜...
  14. HTML5简明教程系列之HTML5基础(一)
  15. 阿里前端智能化技术探索和未来思考
  16. 清理Win10系统C盘的脚本方法
  17. 【网络】https单向认证和双向认证
  18. 日本語を勉強するのは、楽しいです。
  19. OpenGL ES glfw 下载和使用
  20. 软件质量与测试--第二周作业 WordCount

热门文章

  1. redis session java获取attribute_redis里的数据结构
  2. 调整png的不透明度_TGA与PNG的优劣对比
  3. 地线与接地螺丝_电气接地规范与接地的各项参数
  4. python求解微分方程组_python – SymPy / SciPy:求解具有不同变量的常微分方程组...
  5. Linux中 安装centos-release-scl 报错No package centos-release-scl available.
  6. leetcode116. 填充每个节点的下一个右侧节点指针(层序遍历07)
  7. [C++STL]stack容器用法介绍
  8. C++实现链式存储二叉树
  9. 算法-排序-选择排序
  10. Piggy-Bank POJ - 1384(完全背包+背包放满)