zoukankan      html  css  js  c++  java
  • 【NOIP2014】无线网络发射器选址

    本题在洛谷上的链接:https://www.luogu.org/problemnew/show/P2038


    估计是NOIP2014的Day1 T1,虽然比较水,但我还是正儿八经做了。

    可能只要考虑每个发射器,然后暴力做加法就可以A掉。而我是用二维前缀和与差分做的。

    还好这样做,让我找到了我二维差分的一个错误,原来我二维矩阵做加法的式子就搞错了,默默改正。。。

    没有太多坑,就看二维前缀和与差分掌握得如何。

     1 #include <cstdio>
     2 
     3 const int mmax = 130;
     4 
     5 int diff[mmax][mmax], sum[mmax][mmax];
     6 
     7 int main() {
     8     int d, n, x, y, k, ans = 0, cnt = 0;
     9     scanf("%d%d", &d, &n);
    10     for (int i = 1; i <= n; ++i) {
    11         scanf("%d%d%d", &x, &y, &k);
    12         int xa = x - d, xb = x + d, ya = y - d, yb = y + d;
    13         if (xa < 0) xa = 0;
    14         if (xb > 128) xb = 128;
    15         if (ya < 0) ya = 0;
    16         if (yb > 128) yb = 128;
    17         diff[xa][ya] += k;
    18         diff[xa][yb + 1] -= k;
    19         diff[xb + 1][ya] -= k;
    20         diff[xb + 1][yb + 1] += k;
    21     }
    22     for (int i = 0; i <= 128; ++i) {
    23         sum[i][0] = diff[i][0], sum[0][i] = diff[0][i];
    24         if (i) sum[i][0] += sum[i - 1][0], sum[0][i] += sum[0][i - 1];
    25         if (sum[i][0] > ans)
    26             ans = sum[i][0], cnt = 1;
    27         else if (sum[i][0] == ans) ++cnt;
    28         if (!i) continue;
    29         if (sum[0][i] > ans)
    30             ans = sum[0][i], cnt = 1;
    31         else if (sum[0][i] == ans) ++cnt;
    32     }
    33     for (int i = 1; i <= 128; ++i)
    34         for (int j = 1; j <= 128; ++j) {
    35             sum[i][j] = sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1] + diff[i][j];
    36             if (sum[i][j] > ans)
    37                 ans = sum[i][j], cnt = 1;
    38             else if (sum[i][j] == ans) ++cnt;
    39         }
    40     printf("%d %d", cnt, ans);
    41     return 0;
    42 }
    AC代码
  • 相关阅读:
    静态变量一定要先声明后赋值
    建议3 三元操作的类型必一致
    IDEA 创建 Maven web项目注意事项
    js不同类型作比较
    exception中return方法
    exception 打印出异常栈踪迹
    spring controller使用了@ResponseBody却返回xml
    springboot中的406(Not Acceptable)错误
    把本地建好的项目提交到git上
    java基础---------方法和方法重载
  • 原文地址:https://www.cnblogs.com/Mr94Kevin/p/9834430.html
Copyright © 2011-2022 走看看