【离散化】【差分】幻灯片(jzoj 1609)
幻灯片
题目大意:
有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)相关推荐
- 2019ICPC(上海) - Light bulbs(离散化+差分)
题目链接:点击查看 题目大意:给出n个灯泡,初始化全都是熄灭状态,给出m次操作,每次操作给出闭区间[l,r],将该区间内的灯泡状态翻转,即熄灭的灯泡变为打开状态,打开的灯泡变为熄灭状态,求最后打开灯泡 ...
- AcWing 1952. 金发姑娘和 N 头牛(离散化+差分)
题目链接 https://www.acwing.com/problem/content/description/1954/ 思路 因为对于每一个牛牛来说都有三个不同的舒适度区间,那么我们最终要求的一个 ...
- AcWing 1987. 粉刷栅栏(离散化+差分)
题目链接 https://www.acwing.com/problem/content/1989/ 思路 通过map进行差分处理,每次处理到前缀和从大于1变到小于等于1的时候就进行一次区间长度统计,每 ...
- 跳方格(离散化+差分)
跳方格 (lattice) 时间限制: 1 Sec 内存限制: 128 MB 题目描述 有一个长长的走廊,巨神 ctt 把它分成m方格,从左到右编号为1,2,...,m. 有一天,巨神 ctt 得到 ...
- 【Codeforces - 1000C】Covered Points Count(思维,离散化,差分)
题干: You are given nn segments on a coordinate line; each endpoint of every segment has integer coord ...
- Acwing第 29 场周赛【完结】
TLE场 目录 4194. Pow[签到] 4195. 线段覆盖[离散化+差分] 4196. 最短路径[最短路] 4194. Pow[签到] https://www.acwing.com/proble ...
- [10.2模拟] book
题意:给你n个区间,要你选择一个点,点每覆盖一个区间,都可以得到这个点坐标值的收益,求最大收益 题解: 离散化+差分 #include<iostream> #include<cstd ...
- The Preliminary Contest for ICPC Asia Shanghai 2019 BDL
传送门 B:离散化+差分 #include <bits/stdc++.h> using namespace std; typedef long long ll; struct node{i ...
- matlab限幅器无饱和怎么设置,抗积分饱和算法:输出限幅.ppt
抗积分饱和算法:输出限幅 模块八 数字控制器设计 本章要点 1. 连续化设计方法 重点:数字PID设计 2. 直接离散化设计方法 重点:最少拍控制算法 3. 大林算法与纯滞后控制 4. 模糊控制基础 ...
最新文章
- MinGW 和 MSVC 下,使用 FILE 类型的一个奇怪的问题
- nginx整合php+lua+oracle环境搭建
- Ajax — 第六天
- 如何调用一个windows上的应用程序呢?
- 中国“两高”发布司法解释 依法严惩涉地下钱庄犯罪
- PC/UVA 110405/10026 Shoemaker's problem
- 百度地图API地理位置和坐标转换 城市坐标
- inventor中齿条怎么画_标准齿轮及齿条绘制方法
- 基于convLSTM模型的雷达图像外推算法
- html怎么唤起虚拟键盘,电脑虚拟键盘怎么打开?电脑虚拟键盘打开五大方法介绍...
- 外贸企业邮箱格式怎么写?外贸域名邮箱格式
- VUE中的img的:src动态加载图片的问题,require也不能随便用
- java游戏回转贝贝龙2下载,崩坏3:暴雨将至最后的剧情,为何贝贝龙拼死保护琪亚娜...
- HTML5简明教程系列之HTML5基础(一)
- 阿里前端智能化技术探索和未来思考
- 清理Win10系统C盘的脚本方法
- 【网络】https单向认证和双向认证
- 日本語を勉強するのは、楽しいです。
- OpenGL ES glfw 下载和使用
- 软件质量与测试--第二周作业 WordCount
热门文章
- redis session java获取attribute_redis里的数据结构
- 调整png的不透明度_TGA与PNG的优劣对比
- 地线与接地螺丝_电气接地规范与接地的各项参数
- python求解微分方程组_python – SymPy / SciPy:求解具有不同变量的常微分方程组...
- Linux中 安装centos-release-scl 报错No package centos-release-scl available.
- leetcode116. 填充每个节点的下一个右侧节点指针(层序遍历07)
- [C++STL]stack容器用法介绍
- C++实现链式存储二叉树
- 算法-排序-选择排序
- Piggy-Bank POJ - 1384(完全背包+背包放满)