QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#504626#9104. Zayin and ForestXunwuqishi#TL 0ms0kbC++203.4kb2024-08-04 14:14:382024-08-04 14:14:38

Judging History

你现在查看的是最新测评结果

  • [2024-08-04 14:14:38]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:0kb
  • [2024-08-04 14:14:38]
  • 提交

answer

#include<bits/stdc++.h>
#define Alex std::ios::sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0);
#define int long long
#define double long double
const int QAQ = 0;
const double eps = 1e-10;
const int mod = 1e9 + 7;
int n,m;
inline int f(int x)
{
	if(x % 2 == 1) return x + 1;
	int t = 0;
	while(x % 2 == 0)
	{
		x = x / 2;
		t++;
	}
	return (x + 1) * (1LL << t);
}
//struct Treap{ int val,dat,size,cnt; }Tree[N];
//inline int Add_Spot(int v)
//{
//	tot = tot + 1;
//	Tree[tot].val = v;
//	Tree[tot].dat = rand();
//	Tree[tot].size = 1;
//	Tree[tot].cnt = 1;
//	return tot;
//}
//inline void Push_Up(int k)
//{
//	Tree[k].size = Tree[ch[k][0]].size + Tree[ch[k][1]].size + Tree[k].cnt;
//}
//inline void Build_Tree()
//{
//	root = Add_Spot(-INF),ch[root][1] = Add_Spot(INF);
//	Push_Up(root);
//}
//inline void Rotate(int &k,int d)
//{
//	int temp = ch[k][d ^ 1];
//	ch[k][d ^ 1] = ch[temp][d];
//	ch[temp][d] = k;
//	k = temp;
//	Push_Up(ch[k][d]);
//	Push_Up(k);
//}
//inline void insert(int &k,int v)
//{
//	if(! k)
//	{
//		k = Add_Spot(v);
//		return;
//	}
//	if(v == Tree[k].val) Tree[k].cnt = Tree[k].cnt + 1;
//	else
//	{
//		int d = v < Tree[k].val ? 0 : 1;
//		insert(ch[k][d],v);
//		if(Tree[k].dat < Tree[ch[k][d]].dat) Rotate(k,d ^ 1);
//	}
//	Push_Up(k);
//}
//inline void Remove(int &k,int v)
//{
//	if(! k) return;
//	if(v == Tree[k].val)
//	{
//		if(Tree[k].cnt > 1)
//		{
//			Tree[k].cnt = Tree[k].cnt - 1;
//			Push_Up(k);
//			return;
//		}
//		if(ch[k][0] || ch[k][1])
//		{
//			if(! ch[k][1] || Tree[ch[k][0]].dat > Tree[ch[k][1]].dat)
//			{
//				Rotate(k,1);
//				Remove(ch[k][1],v);
//			} else
//			{
//				Rotate(k,0);
//				Remove(ch[k][0],v);
//			}
//			Push_Up(k);
//		}else k = 0;
//		return;
//	}
//	v < Tree[k].val ? Remove(ch[k][0],v) : Remove(ch[k][1],v);
//	Push_Up(k);
//}
//inline int Get_Rank(int k,int v)
//{
//	if(! k) return 0;
//	if(v == Tree[k].val) return Tree[ch[k][0]].size + 1;
//	else if(v < Tree[k].val) return Get_Rank(ch[k][0],v);
//	else return Tree[ch[k][0]].size + Tree[k].cnt + Get_Rank(ch[k][1],v);
//}
//inline int Get_Val(int k,int rank)
//{
//	if(! k) return INF;
//	if(rank <= Tree[ch[k][0]].size) return Get_Val(ch[k][0],rank);
//	else if(rank <= Tree[ch[k][0]].size + Tree[k].cnt) return Tree[k].val;
//	else return Get_Val(ch[k][1],rank - Tree[ch[k][0]].size - Tree[k].cnt);
//}
//inline int Get_Pre(int v)
//{
//	int k = root,pre;
//	while(k)
//	{
//		if(Tree[k].val < v) pre = Tree[k].val,k = ch[k][1];
//		else k = ch[k][0];
//	}
//	return pre;
//}
//inline int Get_Next(int v)
//{
//	int k = root,next;
//	while(k)
//	{
//		if(Tree[k].val > v) next = Tree[k].val,k = ch[k][0];
//		else k = ch[k][1];
//	}
//	return next;
//}
signed main()
{
	Alex;
	int _;
	_ = 1;
	while(_--)
	{
		std::cin>>n>>m;
		std::map<int,int> ma;
		std::vector<int> V;
		V.clear();
		ma.clear();
		for(int i = 1;i <= m;i++)
		{
			int op;
			std::cin>>op;
			if(op == 1)
			{
				int x,v;
				std::cin>>x>>v;
				while(x <= n)
				{
					if(ma[x] == 0) V.push_back(x);
					ma[x] = ma[x] + v;
					x = f(x);
				}
			}else
			{
				int l,r;
				int ans = 0;
				std::cin>>l>>r;
				for(int j = 0;j < V.size();j++)
				if(V[j] >= l && V[j] <= r) ans = ans + ma[V[j]];
				std::cout<<ans<<'\n';
			}
		}
	}
	return QAQ;
}

详细

Test #1:

score: 0
Time Limit Exceeded

input:

1000000000 20000
2 384578735 526547442
1 64211261 592970906
1 512065247 448267721
1 44993150 127180320
1 880319036 927623947
1 170536687 572121854
1 896600029 804033011
1 666246328 754201635
1 654066651 179982083
2 240989825 984888006
2 372004567 858916479
2 76127818 98606736
1 181794163 902842353
1...

output:

0
43148875202
17613404710
0
32808578044
28190043566
15641637055
78276219892
14955165236
20262224725
105057452192
17002492367
57916137452
27165464255
72766353838
39458327919
38294102627
264448717384
0
70928519548
279674530483
88885017175
111664599432
69703816663
211506104092
104120007714
34403738515
...

result: