求助:能AC,但样例过不了??
查看原帖
求助:能AC,但样例过不了??
414610
_thiscall楼主2021/7/21 11:58

代码(已省略快读)

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define rg register
#define rep(_vr, _st, _ed) for(rg int _vr=_st; (_vr)<=(_ed); _vr++)
typedef long long ll;
const int maxn=500000;
int n;
ll a[maxn+20]={0}, b[maxn+20]={0};
inline int lowbit(int x) { return x&(-x); }
void bit_modify(int pos, ll val) {
	for (rg int i=pos; i<=n; i+=lowbit(i)) b[i]+=val;
}
ll bit_query(int pos) {
	ll ans=0;
	for (rg int i=pos; i>0; i-=lowbit(i)) ans+=b[i];
	return ans;
}
int main()
{
	int q; read(n); read(q);
	rep(i, 1, n) {
		read(a[i]);
		bit_modify(i, a[i]-a[i-1]);
	}
	while (q--) {
		rg int op, x, y, z;
		read(op); read(x);
		if (op==1) {
			read(y); read(z);
			bit_modify(x, z);
			bit_modify(y+1, -z);
		} else {
			printf("%lld\n", bit_query(x));
		}
	}
	return 0;
}

样例答案是 6 10 ,但我的程序输出 6 12

硬着头皮交上去,结果 AC 了

真有趣。

2021/7/21 11:58
加载中...