• codeforces-1066 B Heaters


      1 #include <cstdio>
      2 #include <cstring>
      3 #include <vector>
      4 #include <iostream>
      5 #include <algorithm>
      6 #include <set>
      7 #include <map>
      8 #include <stack>
      9 
     10 using namespace std;
     11 
     12 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
     13 #define _rep(i,a,b) for(int i = (a);i <= (b);i ++)
     14 typedef long long int ll;
     15 
     16 struct cmp
     17 {
     18     inline bool operator() (const int a,const int b)
     19     {
     20         return a >= b;
     21     }
     22 };
     23 
     24 int readint()
     25 {
     26     int x;    //vector<int> v;v.push_back(readint())
     27     scanf("%d",&x);
     28     return x;
     29 }
     30 
     31 struct edge
     32 {
     33     int Left;
     34     int Right;
     35 };
     36 
     37 int main()
     38 {
     39     int n,r;
     40     while(~scanf("%d %d",&n,&r))
     41     {
     42         vector<pair<int,int>> v;
     43         int heaterNum = 0;
     44         for(int i = 0;i < n;i ++)
     45         {
     46             int tmp;
     47             scanf("%d",&tmp);
     48             if(tmp)
     49             {
     50                 heaterNum ++;
     51                 int left,right;
     52                 left = i-r+1;
     53                 right = i+r-1;
     54                 if(i-r+1<0)
     55                 {
     56                     left = 0;
     57                 }
     58                 if(i+r-1>=n)
     59                 {
     60                     right = n-1;
     61                 }
     62                 v.push_back(make_pair(left,right));
     63             } 
     64         }
     65         
     66         sort(v.begin(),v.end());
     67     //    for(auto p:v)
     68     //        cout << p.first << " " << p.second << endl;
     69         int test[n] {0};
     70         for(int i = 0;i < v.size();i ++)
     71         {
     72             for(int j = v[i].first;j <= v[i].second;j ++)
     73                 test[j] = 1;
     74         }
     75         int flag = 0;
     76         for(auto d:test)
     77         {
     78             if(!d)
     79             {
     80                 flag = 1;    
     81             }
     82         }
     83         if(flag)
     84         {
     85             cout << "-1" << endl;
     86             continue;
     87         }
     88         
     89         int m[n] {0};
     90         int result = 0;
     91         for(int i = 0;i < n;i ++)
     92         {
     93             if(m[i]==0)
     94             {
     95                 for(int j = v.size()-1;j >= 0;j --)
     96                 {
     97                     if(v[j].first<=i)
     98                     {
     99                         result ++;
    100                         for(int k = v[j].first;k <= v[j].second;k ++)
    101                             m[k] = 1;
    102                         break;
    103                     }
    104                 }
    105             }
    106         }
    107         cout << result << endl;
    108     }
    109     return 0;
    110 }
  • 相关阅读:
    c++模板使用
    配置文件读取(2-2)读取yml
    全景拼接学习-原理篇 (4) 基本过程
    全景拼接学习-原理篇 (3) 从对极几何 单相机拍摄的画面估计运动轨迹
    全景拼接学习-原理篇 (2) 单张图片 单相机成像模型
    全景拼接学习-原理篇 (1) 两张图片之间关系计算 单应性Homograph估计
    js之async和await
    mysql之GORM接口
    casbin应用
    jQuery
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9862155.html
Copyright © 2020-2023  润新知