hdu--1866--矩形重叠<扫描法,自定义>

擦  终于做出题了...........  这2天 没心思啊  烦 烦 ...

这题 虽然不难 但还是有地方要注意

可能会有空格存在 所以不能用cin scanf去读 一定要用getline  gets来读取

而且 可能会有除了题目中这些 ( ) , +这4个符号以为的字符 所以判断的时候 用!(ch>=‘0‘ && ch<=‘9‘)来判断

因为 数据很小的啊 才1000  整个扫过去就是了 用个标记变量数组vis表示 是否被扫过了 然后一块格子一块格子++来计算总面积

...........晚上 cf 能让我出C D吗 敢不敢!

 1 #include <iostream>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5
 6 const int size = 520;
 7 char str[size];
 8 int matrix[size];
 9 bool vis[size*2][size*2];
10 bool judge( char ch )
11 {
12     if( ch>=‘0‘ && ch<=‘9‘ )
13         return false;
14     return true;
15 }
16
17 int main()
18 {
19     int i , len , cnt , ans;
20     while( gets(str) )
21     {
22         ans = i = 0;
23         cnt = 1;
24         len = strlen(str);
25         memset( matrix , 0 , sizeof(matrix) );
26         memset( vis , false , sizeof(vis) );
27         while( i<len )
28         {
29             if( judge(str[i]) )
30             {
31                 i++;
32             }
33             else
34             {
35                 while(1)
36                 {
37                     if( judge(str[i]) )
38                         break;
39                     matrix[cnt] = matrix[cnt]*10+(str[i]-‘0‘);
40                     i++;
41                 }
42                 cnt ++;
43             }
44         }
45         for( int i = 0 ; i<cnt/4 ; i++ )
46         {
47             int x1 = matrix[i*4+1];
48             int y1 = matrix[i*4+2];
49             int x2 = matrix[i*4+3];
50             int y2 = matrix[i*4+4];
51             int maxX = max(x1,x2);
52             int maxY = max(y1,y2);
53             for( int x = min(x1,x2)+1 ; x<=maxX ; x++ )
54             {
55                 for( int y = min(y1,y2)+1 ; y<=maxY ; y++ )
56                 {
57                     if( !vis[x][y] )
58                     {
59                         vis[x][y] = true;
60                         ans ++;
61                     }
62                 }
63             }
64         }
65         cout << ans << endl;
66     }
67     return 0;
68 }

好像 2天没更新叻 =-=

today:

  少年谈爱与不爱 成年人谈和谐不和谐

hdu--1866--矩形重叠<扫描法,自定义>,布布扣,bubuko.com

时间: 2024-08-10 02:14:43

hdu--1866--矩形重叠<扫描法,自定义>的相关文章

矩形重叠检测。

// 矩形重叠类型注释 // CORNER_OVERLAP // -------------------- // | | // | | // | **********|********** // | * | * // | * | * // ---------*---------| * // * * // * * // ********************* // // ANCHOR_OVERLAP // ---- // | | // | | // *******|**|******* //

[Swift]LeetCode836. 矩形重叠 | Rectangle Overlap

A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bottom-left corner, and (x2, y2) are the coordinates of its top-right corner. Two rectangles overlap if the area of their intersection is positive.  To b

LeetCode 29. 矩形重叠 反向思维

题目描述 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的是,只在角或边接触的两个矩形不构成重叠. 给出两个矩形,判断它们是否重叠并返回结果. 示例 1: 输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3] 输出:true 示例 2: 输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1] 输出:false 提示: 两个矩

Leetcode 836. 矩形重叠

矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的是,只在角或边接触的两个矩形不构成重叠. 给出两个矩形,判断它们是否重叠并返回结果. 示例 1: 输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3] 输出:true 示例 2: 输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1] 输出:false 提示: 两个矩形 rec

836. 矩形重叠

题目: 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的是,只在角或边接触的两个矩形不构成重叠. 给出两个矩形,判断它们是否重叠并返回结果. 示例 1: 输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3] 输出:true 示例 2: 输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1] 输出:false 提示: 两个矩形

矩形重叠

此博客链接:https://www.cnblogs.com/ping2yingshi/p/12517261.html 矩形重叠(43min) 题目链接:https://leetcode-cn.com/problems/rectangle-overlap/ 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的是,只在角或边接触的两个矩形不构成重叠. 给出两个矩形,判断它们

leetcode 签到 836. 矩形重叠

836. 矩形重叠 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的是,只在角或边接触的两个矩形不构成重叠. 给出两个矩形,判断它们是否重叠并返回结果. 示例 1: 输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3] 输出:true 示例 2: 输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1] 输出:false 提示

hdu 1866 几个矩形面积的和 ***

给出几个矩形,求出面积之和,相交区域只能算一次 一开始想用线段树求个并,后来发现没办法知道并了几次,然后就不会了 看了题解 本题其实很简单,但是想要想到转化也很不容易,因为本题是求面积之和,但是两个矩形有可能会重合在一起,所以这是就需要将所有矩形的分割成一个一个单位的小正方形.这样就可以对他们进行标记.最后查找被标记小正方形的个数. 看了下数据范围,果然可以23333,做题越多越觉得智商不够 题解链接

矩形重叠判断

突然想到一个很有意思的问题,就是怎么判断两个矩形是否重叠? 我想到的算法是,先计算不重叠情况,再取反即可! 不重叠情况 蓝色矩形在黑色矩形的四周,这就是不重叠的情况.转换成坐标就是,蓝色矩形的 Xmin>x2 || Xmax<x1 || Ymin>y2 || Ymax<y1 可得重叠公式为: !(Xmin>x2 || Xmax<x1 || Ymin>y2 || Ymax<y1)