题解:

首先计算出两两之间的距离

然后二分答案

然后贪心判断是否可以放置少于等于k个

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=;
int n,m,k,x,i,j,l,L,R,mid,r[N],d[N],h[N],dt[N][N];
int judge(int x)
{
int temp=k,tot=m,t,u,v,c[N],p[N];
for (int i=;i<n;i++)c[i]=h[i];
for (int i=;i<n;i++)
if (!c[i])
{
t=1e9;
for (int j=;j<n;j++)
if (c[j]==)t=min(t,dt[i][j]);
if (t<=x)c[i]=,tot++;
}
if (tot==n)return ;
while (temp--)
{
memset(p,,sizeof(p));
for (int i=;i<n;i++)
if (!c[i])
for (int j=;j<n;j++)
if (c[j]!=&&dt[i][j]<=x)p[j]++;
u=;
for (int i=;i<n;i++)
if (c[i]!=&&p[i]>=u)u=p[i],v=i;
if (!c[v])tot++;c[v]=;
for (int i=;i<n;i++)
if (!c[i])
{
t=1e9;
for (int j=;j<n;j++)
if (c[j]==)t=min(t,dt[i][j]);
if (t<=x)c[i]=,tot++;
}
if (tot==n)return ;
}
return ;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for (int i=;i<n;i++)
for (int j=;j<n;j++)dt[i][j]=(i==j)?:1e9;
for (int i=;i<n;i++)scanf("%d",&r[i]);
for (int i=;i<n;i++)
{
scanf("%d",&d[i]);
R+=d[i];
dt[i][r[i]]=dt[r[i]][i]=min(dt[i][r[i]],d[i]);
}
for (int i=;i<=m;i++)
{
scanf("%d",&x);
h[x]=;
}
for (int l=;l<n;l++)
for (int i=;i<n;i++)
for (int j=;j<n;j++)
if (i!=j&&i!=l&&j!=l)
if (dt[i][l]+dt[l][j]<dt[i][j])dt[i][j]=dt[i][l]+dt[l][j];
while (L<=R)
{
mid=(L+R)>>;
if (judge(mid))R=mid-;
else L=mid+;
}
printf("%d\n",L);
}

bzoj1239的更多相关文章

随机推荐

  1. this 指向 及 调用方式

    1. this 指向 函数执行方式 this指向1.直接圆括号 window2.对象调用 对象3.事件触发 触发对象4.定时器运行 window (常常定义变量存储this以达到this指向特定对象) ...

  2. 获取 ip ( 第三方接口 )

    搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson 搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8 ...

  3. C# 视频多人脸识别的实现

    上一篇内容的调整,提交到git了,https://github.com/catzhou2002/ArcFaceDemo基本思路如下:一.识别线程1.获取当前图片2.识别当前图片的人脸位置,并将结果存入 ...

  4. sort-选择排序

    void sort_select(vector<int> &v) { for(int i=0;i<v.size()-1;i++) { int min=v[i]; int in ...

  5. 响应式图片 (responsive image)

    更新 : 2019-02-21 除了写 srcset sizes 还有一种 x1, x2, x3, x4 的写法. 我们对比一下 假设 pc 希望是 1000w mobile 希望是 300w siz ...

  6. Appium的工作原理

    把我们写的python语言代码,看做客户端 通过客户端向appium服务器发送请求 appium服务器把我们的代码转换成手机可以识别的指令 然后把指令发给手机,手机根据指令做出相应的操作 最后手机把操 ...

  7. jquey 小记

    1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍jQuery对象的$().each()方法,此方法可用于例遍任何对象. 回调函数拥有两个参数: 第一个为对象的 ...

  8. 2017-2018-2 20165327 实验二 《Java面向对象程序设计》实验报告

    20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...

  9. p1472 Cow Pedigrees

    用dp[i][j]记录i个点,组成深度恰好为j的方案数.arr[i][j]记录i个点,深度<=j的方案数.那么dp[i][j]只有i为奇数时不为0.而arr[i][j]等于dp[i][j]的前缀 ...

  10. 5 项目---自定义用户模型以及轮播图图片url返回格式

    创建自定义的用户模型类  1. 用命令创建users 应用 2. 将users 注册到settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'd ...