• Codeforces 306B


     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <ctime>
     6 #include <cmath>
     7 #include <set>
     8 #include <map>
     9 using namespace std;
    10 
    11 const int maxm=int(2e5)+100;
    12 
    13 struct data
    14 {
    15     int x, y, num;
    16     bool operator < (const data b) const
    17     {
    18         if (x!=b.x) return x<b.x;
    19         return y>b.y;
    20     }
    21 };
    22 
    23 int n, m;
    24 int ans;
    25 data a[maxm];
    26 bool vis[maxm];
    27 
    28 void init()
    29 {
    30     scanf("%d%d", &n, &m);
    31     for (int i=1; i<=m; ++i)
    32     {
    33         scanf("%d%d", &a[i].x, &a[i].y);
    34         a[i].y+=a[i].x-1;
    35         a[i].num=i;
    36     }
    37     sort(a+1, a+1+m);
    38 }
    39 void solve()
    40 {
    41     ans=m;
    42     for (int i=1, next; i<=m; i=next)
    43     {
    44         vis[a[i].num]=true;
    45         ans--;
    46         next=i;
    47         int k=i+1;
    48         while (k<=m && a[k].x<=a[i].y+1)
    49         {
    50             if (a[k].y>a[next].y) next=k;
    51             ++k;
    52         }
    53         if (next==i) next=k; 
    54     }
    55     printf("%d
    ", ans);
    56     for (int i=1; i<=m; ++i)
    57         if (!vis[i]) printf("%d ", i);
    58 }
    59 int main()
    60 {
    61     freopen("input.txt", "r", stdin);
    62     freopen("output.txt", "w", stdout);
    63     init();
    64     solve();
    65     return 0;
    66 }
    View Code
  • 相关阅读:
    常用分页插件
    sessionStorage二种存值取值的方法
    $(this).index()与$(obj).index(this)的区别
    每次移1px的无缝轮播图
    为什么全局变量在赋值之前调用会报错
    Number()、parseInt()和parseFloat()的区别
    JSON.parse()与JSON.stringify()
    HDU
    出现负数的01背包问题
    HDU
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/5058135.html
Copyright © 2020-2023  润新知