QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#116120#6659. 외곽 순환 도로 2xtqqwq#Compile Error//C++141.9kb2023-06-28 09:59:292024-05-31 14:20:51

Judging History

你现在查看的是测评时间为 2024-05-31 14:20:51 的历史记录

  • [2024-08-26 15:49:30]
  • 管理员手动重测本题所有提交记录
  • 测评结果:100
  • 用时:34ms
  • 内存:32052kb
  • [2024-05-31 14:20:51]
  • 评测
  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-06-28 09:59:29]
  • 提交

answer

#include<bits/stdc++.h>

#define pb push_back
#define fi first
#define se second
#define mp make_pair

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef long double ld;

template <typename T> bool chkmin(T &x,T y){return x>y?x=y,1:0;}
template <typename T> bool chkmax(T &x,T y){return x<y?x=y,1:0;}

int readint(){
	int x=0,f=1; char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}

int n,cnt;
vector<pll> adj[100005];
int rg[100005];
ll w[100005];
ll d[100005][2][2][2],tmp[2][2][2];

void dfs(int u){
	for(int i=0;i<2;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) d[u][i][j][k]=1ll<<60;
	if(!adj[u].size()){
		d[u][0][0][0]=d[u][1][1][1]=0;
		rg[u]=++cnt;
		return;
	}
	bool fl=0;
	for(auto r:adj[u]){
		int v=r.fi;
		ll c=r.se;
		dfs(v);
		if(!fl){
			for(int i=0;i<2;i++)
				for(int j=0;j<2;j++)
					for(int k=0;k<2;k++)
						chkmin(d[u][i^1][j][k],d[v][i][j][k]),chkmin(d[u][i][j][k],d[v][i][j][k]+c);
			rg[u]=rg[v];
			fl=1;
		}
		else{
			for(int i=0;i<2;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) tmp[i][j][k]=1ll<<60;
			for(int i=0;i<2;i++)
				for(int j=0;j<2;j++)
					for(int k=0;k<2;k++)
						for(int ti=0;ti<2;ti++)
							for(int tj=0;tj<2;tj++)
								for(int tk=0;tk<2;tk++)
									chkmin(tmp[i][j][tk],d[u][i][j][k]+d[v][ti][tj][tk]+c*(i==ti)+w[rg[u]]*(k==tj));
			for(int i=0;i<2;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) d[u][i][j][k]=tmp[i][j][k];
			rg[u]=rg[v];
		}
	}
}

ll place_police(vector<int> P,vector<ll> C,vector<ll> W){
	n=P.size()+1;
	for(int i=0;i<n-1;i++) adj[P[i]+1].pb(mp(i+2,C[i]));
	for(int i=0;i<W.size();i++) w[i+1]=W[i];
	dfs(1);
	ll ret=1ll<<60;
	for(int i=0;i<2;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) chkmin(ret,d[1][i][j][k]+w[cnt]*(j==k));
	return ret;
}

詳細信息

cc1plus: fatal error: implementer.cpp: No such file or directory
compilation terminated.