QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#116120 | #6659. 외곽 순환 도로 2 | xtqqwq# | Compile Error | / | / | C++14 | 1.9kb | 2023-06-28 09:59:29 | 2024-05-31 14:20:51 |
Judging History
你现在查看的是测评时间为 2024-05-31 14:20:51 的历史记录
- [2024-05-31 14:20:51]
- 评测
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [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.