求助今晚ABC的F
  • 板块学术版
  • 楼主iiiiiyang
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/4/15 21:38
  • 上次更新2023/10/23 18:21:57
查看原帖
求助今晚ABC的F
739297
iiiiiyang楼主2023/4/15 21:38

直接维护的行上列上最大次大最后判断,求个hack

#include<bits/stdc++.h>
#define ld long double 
#define ull unsigned long long
#define int long long
#define pb push_back
#define mp make_pair
using namespace std;

inline int read()
{
	int s=0,w=1; char c=getchar();
	while(!isdigit(c)) {if(c=='-') w=-1; c=getchar();}
	while(isdigit(c)) s=(s<<1)+(s<<3)+(c^48),c=getchar();
	return s*w;
}
inline void write(int x,char ch)
{
	if(x<0) x=-x,putchar('-');
	static char stk[25]; int top=0;
	do {stk[top++]=x%10+'0',x/=10;} while(x);
	while(top) putchar(stk[--top]);
	putchar(ch);
	return;
}
inline void file()
{
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
}

bool Mbe;

namespace MyTool
{
	static const int Mod=998244353;
	inline void Swp(int &a,int &b) {int t=a;a=b;b=t;}
	inline int  Max(int a,int b)   {return (b&((a-b)>>63))|(a&(~(a-b)>>31));}
	inline int  Min(int a,int b)   {return (a&((a-b)>>63))|(a&(~(a-b)>>31));}
	template<typename T> inline void cmax(T &a,T b) {a=a>b?a:b;}
	template<typename T> inline void cmin(T &a,T b) {a=a<b?a:b;}
	inline int  Abs(int a) {return (a^(a>>63))-(a>>63);}
	inline void Madd(int &a,int b) {a=a+b>Mod?a+b-Mod:a+b;}
	inline void Mdel(int &a,int b) {a=a-b<0?a-b+Mod:a-b;}
	inline void Mmul(int &a,int b) {a=1ll*a*b%Mod;}
	inline void Mmod(int &a) {a=(a%Mod+Mod)%Mod;}
	inline int  Cadd(int a,int b)  {return a+b>=Mod?a+b-Mod:a+b;}
	inline int  Cdel(int a,int b)  {return a-b<0?a-b+Mod:a-b;}
	inline int  Cmul(int a,int b)  {return a*b%Mod;}
	inline int  Cmod(int a)  {return (a%Mod+Mod)%Mod;}
	inline int  gcd(int a,int b)   {return b?gcd(b,a%b):a;}
	inline int  qpow(int a,int b)  {int res=1; while(b) {if(b&1) Mmul(res,a); Mmul(a,a); b>>=1;} return res;}
	inline int  qmul(int a,int b)  {int res=0; while(b) {if(b&1) Madd(res,a); Madd(a,a); b>>=1;} return res;}
	template<typename T> inline T pow(T x)    {return x*x;}
}
using namespace MyTool;

namespace MyYouth
{
	static const int MAX=200010;
	static const int inf=2147483647;
	static const int INF=4557430888798830399;
	static const int mod=1e9+7;
	static const int bas=131;
	
	int n;
	map<pair<int,int>,int> m;
	unordered_map<int,int> sumx,sumy;
	struct node{int x,y,val;}o[MAX];
	int mx,my,x_,y_;
	int cx,cy,x__,y__;
	int ans;
	
	inline void mian()
	{
		n=read();
		for(int i=1;i<=n;++i) o[i].x=read(),o[i].y=read(),o[i].val=read();
		for(int i=1;i<=n;++i) 
		{
			sumx[o[i].x]+=o[i].val,sumy[o[i].y]+=o[i].val;
			m[mp(o[i].x,o[i].y)]=o[i].val;
			if(sumx[o[i].x]>=mx) cx=mx,x__=x_,mx=sumx[o[i].x],x_=o[i].x;
			else if(sumx[o[i].x]>=cx) cx=sumx[o[i].x],x__=o[i].x;
			if(sumy[o[i].y]>=my) cy=my,y__=y_,my=sumy[o[i].y],y_=o[i].y;
			else if(sumy[o[i].y]>=cy) cy=sumy[o[i].y],y__=o[i].y;
		}
		ans=mx+my; if(m[mp(x_,y_)]) ans-=m[mp(x_,y_)];
		if(m[mp(x__,y_)]) cmax(ans,cx+my-m[mp(x__,y_)]); else cmax(ans,cx+my);
		if(m[mp(x_,y__)]) cmax(ans,mx+cy-m[mp(x_,y__)]); else cmax(ans,mx+cy);
		if(m[mp(x__,y__)]) cmax(ans,cx+cy-m[mp(x__,y__)]); else cmax(ans,cx+cy);
		write(ans,'\n');
		return;
	}
}

bool Med;

signed main()
{
//	file();
	fprintf(stderr,"%.3lf MB\n",(&Med-&Mbe)/1048576.0);
	MyYouth::mian();
	cerr<<1e3*clock()/CLOCKS_PER_SEC<<" ms\n";
	return (0-0);
}
2023/4/15 21:38
加载中...