关于月赛E题
  • 板块学术版
  • 楼主Epoch_L
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/8/7 17:03
  • 上次更新2023/10/27 16:36:20
查看原帖
关于月赛E题
415256
Epoch_L楼主2022/8/7 17:03

今天E题有WA最后一个点的吗,卡半小时了,求hack。

#include<bits/stdc++.h>
#define int long long
using namespace std;
void read(int &x)
{
	char ch=getchar();
	int r=0,w=1;
	while(!isdigit(ch))w=ch=='-'?-1:1,ch=getchar();
	while(isdigit(ch))r=(r<<3)+(r<<1)+(ch^48),ch=getchar();
	x=r*w;
}
map<pair<int,int>,int>mp;
main()
{
	int T,sum=0;
	read(T);
	while(T--)
	{
		int x,y,z;
		read(x);read(y);read(z);
		int now=mp[make_pair(x,y)];
		sum+=z*4;
		if(mp[make_pair(x+1,y)])
		{
			int k=mp[make_pair(x+1,y)];
			if(k>now)sum-=min(k-now,z)*2;
		}
		if(mp[make_pair(x-1,y)]&&x>0)
		{
			int k=mp[make_pair(x-1,y)];
			if(k>now)sum-=min(k-now,z)*2;
		}
		if(mp[make_pair(x,y+1)])
		{
			int k=mp[make_pair(x,y+1)];
			if(k>now)sum-=min(k-now,z)*2;
		}
		if(mp[make_pair(x,y-1)]&&y>0)
		{
			int k=mp[make_pair(x,y-1)];
			if(k>now)sum-=min(k-now,z)*2;
		}
		mp[make_pair(x,y)]+=z;
		printf("%lld\n",sum);
	}
	return 0;
}
2022/8/7 17:03
加载中...