NYOJ 228 士兵殺敵(五)【差分標記裸題】
阿新 • • 發佈:2018-08-24
r+ define unsigned assert cst lib pri list signed
題目鏈接
所有元素初始值為0才能這麽做:
①l--r全加1
a[l]++; a[r+1]--;
求一遍前綴和為元素本身。
求兩遍前綴和為元素前綴和。
#include<cstdio> #include<string> #include<cstdlib> #include<cmath> #include<iostream> #include<cstring> #include<set> #include<queue> #include<algorithm> #include<vector> #include<map> #include<cctype> #include<stack> #include<sstream> #include<list> #include<assert.h> #include<bitset> #include<numeric> #define mod 10003 using namespace std; typedef long long LL; typedef unsigned long long ULL; const int INF = 1<<30; const int maxn = 1000003; const double eps = 1e-8; int t,n,m,q; int sum[maxn]; int p[maxn],l,r,x,y; int main() { scanf("%d%d%d",&n,&m,&q); memset(p,0,sizeof(p)); memset(sum,0,sizeof(sum)); while(m--) { scanf("%d%d%d",&x,&y,&t); p[x]+=t, p[y+1]-=t; } for(int i=1;i<=n;i++)//此操作過後得到的就是每個士兵的戰功 p[i]+=p[i-1]; for(int i=1;i<=n;i++)//得到前綴和 p[i]=(p[i-1]+p[i])%mod; while(q--) { scanf("%d%d",&l,&r); printf("%d\n",(p[r]-p[l-1]+mod)%mod); //區間詢問-前綴和做差&相減防溢所以+mod後再% } return 0; }
NYOJ 228 士兵殺敵(五)【差分標記裸題】