程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> NYIST 116 士兵殺敵(二)

NYIST 116 士兵殺敵(二)

編輯:關於C++

鏈接:click here

題意:

南將軍手下有N個士兵,分別編號1到N,這些士兵的殺敵數都是已知的。

小工是南將軍手下的軍師,南將軍經常想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。

南將軍的某次詢問之後士兵i可能又殺敵q人,之後南將軍再詢問的時候,需要考慮到新增的殺敵數。

思路:RMQ 入門

代碼:

#include   //RMQ 
#include 
#include 

int a[1000005];
int N,M;
#define lowbit(x) ((x)&(-x))
void update(int i,int x)
{
    while(i<=N)
    {
        a[i]+=x;
        i+=lowbit(i);
    }
}
int sum(int n)
{
    int sum=0;
    while(n>0)
    {
        sum+=a[n];
        n-=lowbit(n);
    }
    return sum;
}

int main()
{
    int i,j,pre,last,t;
    char str[10];
    scanf("%d%d",&N,&M);
    for(i=1; i<=N; i++)
    {
        scanf("%d",&t);
        update(i,t);
    }
    for(i=0; i


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved