关于namespace
  • 板块灌水区
  • 楼主Fwio_
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/6/20 07:47
  • 上次更新2023/10/23 12:44:05
查看原帖
关于namespace
965238
Fwio_楼主2023/6/20 07:47

我不理解为什么namespace在我的电脑上能正常运行,到洛谷就RE; 题目:P1198 [JSOI2008] 最大数 我的代码:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 200010;
int m , p , cnt , last;
namespace SFT{
	struct Node{
		int l , r;
		int maxn;
	}tr[N << 2];
	void pushup(int u){
		tr[u].maxn = max(tr[u << 1].maxn , tr[u << 1 | 1].maxn);
	}
	void build(int u , int l , int r){
		tr[u].l = l , tr[u].r = r;
		if(l == r) return ;
		int mid = l + r >> 1;
		build(u << 1 , l , mid);
		build(u << 1 | 1 , mid + 1 , r);
	}
	void modify(int u , int x , int k){
		if(tr[u].l == x && tr[u].r == x){
			tr[u].maxn = k;
			return ;
		}
		else{
			int mid = tr[u].l + tr[u].r >> 1;
			if(x <= mid) modify(u << 1 , x , k);
			else modify(u << 1 | 1 , x , k);
			pushup(u);
		}
	}
	int query(int u , int l , int r){
		if(tr[u].l >= l && tr[u].r <= r) return tr[u].maxn;
		int mid = tr[u].l + tr[u].r >> 1;
		int maxval = 0;
		if(r <= mid) maxval = query(u << 1 , l , r);
		else if(l > mid) maxval = query(u << 1 | 1 , l , r);
		else maxval = max(max(maxval , query(u << 1 , l , mid)) , query(u << 1 | 1 , mid + 1 , r));
	}
}
using namespace SFT;
int main(){
	scanf("%d%d" , &m , &p);
	build(1 , 1 , m);
	while(m--){
		char opt;
		cin >> opt;
		if(opt == 'A'){
			int x;
			scanf("%d" , &x);
			modify(1 , cnt + 1 , (last + x) % p);
			cnt++;
		}
		else{
			int x;
			scanf("%d" , &x);
			last = query(1 , cnt - x + 1 , cnt);
			printf("%d\n" , last);
		}
	}
	return 0;
}
2023/6/20 07:47
加载中...