P3320 [SDOI2015]寻宝游戏

P3320 [SDOI2015]寻宝游戏
若当前点集S, s[i]的dfn为a[i], 且a单调.
则答案即:d(a[1], a[2]) + d(a[2], a[3]) +… + d(a[n - 1], a[n]) + d(a[n], a[1]).
set维护.(set用法见蓝书.)
代码1如下:

#include <cstdio>
#include <cctype>
#include <algorithm>
#include <cmath>
#include <set>

using namespace std; 

#define ll long long

inline int read() {
   
	int x = 0, f = 0; char ch = getchar(); 
	while (!isdigit(ch)) f = ch == '-', ch = getchar(); 
	while (isdigit(ch)) x = (x << 3) + (x << 1) + (ch ^ 48), ch = getchar(); 
	return f ? -x : x; 
}

inline void print(ll x) {
   
	if (x < 0) x = -x; 
	if (x < 10) putchar(x + '0'); 
	else {
   
		print(x / 10); 
		putchar(x % 10 + '0'); 
	}
}

const int N = 1e5 + 5; 
int n, m; 
int head[N], nex[N << 1], ver[N << 1], val[N << 1], tot; 
int dfn[N], idx[N], num; 
int fa[N][20], dep[N]; 
int vis[N]; 
set<int> s; 
ll dist[N], ans; 

void Addedge(int x, int y, int z) {
   
	ver[++tot] = y; 
	val[tot] = z; 
	nex[tot] = head[x]; 
	head[x] = tot; 
}

void dfs(int x, int fat) {
   
	dfn[x] = ++num; idx[num] = x; 
	fa[x][0] = fat; dep[x] = dep[fat] + 1; 
	for (int i = 1; i < 20; ++i) {
   
		fa[x][i] = fa[fa[x][i - 1]][i - 1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值