zoukankan      html  css  js  c++  java
  • NYOJ 123 士兵杀敌(四)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=123

    这题本来交上去就超时了, 然后自己就囧了.... 不知道该用什么更高级的结构了...

    然后去百度的题解....

    看到的是和我一样的思路, 但怎么就过了呢.. 仔细看了下, 别人的更新都是从当前点更新到0位置.

    然而我是从当前点, 更新到数组的结尾, 结果就不行了.

    然后自己改了下代码就过了......感觉是数据出的问题,偏向了某一边把....

    用线段树是不是会更好呢?

    View Code
     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 using namespace std;
     5 const int maxn = 1000005;
     6 int ans[maxn], n;
     7 int lowbit(int x)
     8 {
     9     return x & (-x);
    10 }
    11 
    12 int getSum(int x)
    13 {
    14     int i, sum=0;
    15     for(i = x; i<= n; i+=lowbit(i))
    16     sum += ans[i];
    17     return sum;
    18 }
    19 
    20 int mod(int x, int num)
    21 {
    22     int i;
    23     for(i = x; i > 0; i-=lowbit(i))
    24     ans[i] += num;
    25 }
    26 
    27 int main()
    28 {
    29     int m, a, b, c;
    30     memset(ans,0,sizeof(ans));
    31     scanf("%d%d",&n,&m);
    32     char s[20];
    33     while(m--)
    34     {
    35         scanf("%s",s);
    36         if(strcmp(s,"ADD")==0)
    37         {
    38             scanf("%d%d%d",&a,&b,&c);
    39             mod(a-1,-c);
    40             mod(b,c);
    41         }
    42         else
    43         {
    44             scanf("%d",&a);
    45             printf("%d\n",getSum(a));
    46         }
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    典型用户
    站立会议5
    站立会议4
    《构建之法》阅读笔记05-需求分析
    站立会议3
    编写Android程序Eclipse连不上手机。
    站立会议2
    站立会议1
    第七周学习进度
    shiro之 散列算法(加密算法)
  • 原文地址:https://www.cnblogs.com/yoru/p/2671080.html
Copyright © 2011-2022 走看看