zoukankan      html  css  js  c++  java
  • 网格染色问题

    有一个网格,在初始状态下所有网格都是空白的。现有如下操作:执行n次操作,每次选择坐标对应的那一行和一列,在该行或该列上选择两个端点网格,将两个端点网格间的所有网格(包括端点网格)都染色。具体染色规则:如果两个网格坐标(x1, y1)和(x2, y2)中横坐标x1 == x2,则把这一列所有网格都染色,如果纵坐标y1 == y2则把这一行都染色。同一网格多次染色只计一次。

    问:n次操作后将有多少个网格被染色?

    #include <iostream>
    
    #include <vector>
    
    #include <set>
    
    using namespace std;
    
     
    
    //直接进行暴力法计算网格结果。为了避免重复,将得到的端点总数放到集合里面,最终集合里面的点的个数即为填充的面积。
    
    int main()
    
    {
    
         set<pair<int, int>> rec;
    
         int n;
    
         cin >> n;
    
     for (int i = 0; i < n; ++i)
    
    {
    
          int x1, y1, x2, y2;
    
          cin >> x1 >> y1 >> x2 >> y2;
    
          int l, r;
    
          if  (x1 == x2)
    
        {
    
                   //xi和x2相等时,分别得到上端点和下端点
    
       if  (y1 < y2)
    
            {
    
                    l = y1;
    
                    r = y2;
    
                   
    
            }
    
               else
    
            {
    
                    l = y2;
    
                    r = y1;
    
                   
    
            }
    
       for (int m = l; m <= r; ++m)
    
    {
    
            rec.insert(make_pair(x1, m));
    
           
    
    }
    
      
    
        }
    
          else
    
        {
    
                          //不相等的时候 , 依次从左到右计算端点格数。
    
       if  (x1 < x2)
    
            {
    
                    l = x1;
    
                    r = x2;
    
                   
    
            }
    
               else
    
            {
    
                    l = x2;
    
                    r = x1;
    
                   
    
            }
    
       for (int m = l; m <= r; ++m)
    
    {
    
            rec.insert(make_pair(m, y1));
    
           
    
    }
    
      
    
        }
    
         
    
    }
    
     cout << rec.size() << endl;
    
        // 得到结果。
    
     return 0;
    
    }
  • 相关阅读:
    CodeForces 7B
    CodeForces 4D
    离散化
    线段树入门
    洛谷 P3951 小凯的疑惑(赛瓦维斯特定理)
    Codeforces 1295D Same GCDs (欧拉函数)
    Codeforces 1295C Obtain The String (二分)
    Codeforces 1295B Infinite Prefixes
    Codeforces 1295A Display The Number(思维)
    Codeforces 1294F Three Paths on a Tree(树的直径,思维)
  • 原文地址:https://www.cnblogs.com/youngao/p/13193114.html
Copyright © 2011-2022 走看看