自建物流的无人机实验(困难)

题目链接:http://nanti.jisuanke.com/t/440

假设知道最终答案,那么以某点x为根的点对数公式可以列出,其中Cx表示x为根的子树无人机的个数,xi为x的直接子节点:

根据公式可以看出几点:

(1).某个点若满足条件,则只与以该点为根的子树无人机分布情况有关。

(2).根据(1)进一步分析知,解决某点的分配方案需要递归解决该点的所有子树

(3).对公式逆向思维,假设点x为根的树分配个数最少为Cx,那么为了满足题意,则应该使上面公式得出的值尽可能大,而Cx假设确定,即被减数固定,那么应使减数尽量小。所有Cxi的和是Cx,固定。那么,Cxi的方差越小则减数越小。

然后就能做了。

2遍DFS,第一遍确定以x为根的Cx是多少,用优先队列维护子树的Cxi,每次选取Cxi最小的i,即能保证方差最小。第二遍根据求出的Cx,确定每个点是选取还是不选取……

#include <queue>
#include <cstdio>
#include <cstring>

using namespace std;
typedef long long  ll;

#define read freopen("in.txt","r",stdin)
#define N 100020
struct str
{
    int n,v;
}ed[N];
int head[N],cnt;
void init()
{
    memset(head,-1,sizeof(head));
    cnt = 0;
}
void add(int u,int v)
{
    ed[cnt].n = head[u];
    ed[cnt].v = v;
    head[u] = cnt++;
}
ll a[N],b[N],c[N];
bool vis[N];
bool dfs(int u)
{
    b[u] = 1, c[u] = 0, vis[u] = false;
    ll t = 0;
    priority_queue< pair<int,int> >q;
    for (int i = head[u]; ~i; i = ed[i].n)
    {
        int v = ed[i].v;
        if(!dfs(v))return false;
        b[u] += b[v];
        c[u] += c[v];
        t -= c[v]*(c[v]-1)/2;
        if (c[v] < b[v])q.push(make_pair(-c[v],v));
    }
    t += c[u]*(c[u]-1)/2;
    q.push(make_pair(0,u));

    for (;c[u] <= b[u]; ++c[u])
    {
        if (t >= a[u])return true;
        t -= c[u]*(c[u]-1)/2;
        t += (c[u]+1)*c[u]/2;
        int x = -q.top().first, y = q.top().second;
        q.pop();
        t += x*(x-1)/2;
        t -= (x+1)*x/2;
        if (y == u)
        {
            vis[u] = true;
            continue;
        }
        ++ c[y];
        if (x+1 < b[y])q.push(make_pair(-x-1,y));
    }
    return false;
}
void dfs2(int u,ll f)
{
    for (int i = head[u]; ~i; i = ed[i].n)
        f -= c[ed[i].v];
    if (vis[u])--f;

    for (int i = head[u]; ~i; i = ed[i].n)
    {
        int v = ed[i].v;
        ll t = min(f,b[v]-c[v]);
        dfs2(v,t+c[v]);
        f -= t;
        c[u] -= (t+c[v]);
    }
    if (f)vis[u] = true;
}
int main()
{
    //read;
    int n;
    while (~scanf("%d",&n))
    {
        for (int i = 1; i <= n; ++i)
            scanf("%lld",a+i);
        init();
        int u,v;
        for (int i = 1; i < n; ++i)
        {
            scanf("%d%d",&u,&v);
            add(u,v);
        }
        if(!dfs(1))
        {
            puts("-1");
            continue;
        }
        dfs2(1,c[1]);
        int cnt = 0;
        for (int i = 1; i <= n; ++i)
            if(vis[i]) cnt++;
        printf("%d\n",cnt);
        bool ff = false;
        for (int i = 1; i <= n; ++i)
            if(vis[i])
            {
                if (ff)printf(" ");
                else ff = true;
                printf("%d",i);
            }
        if(cnt)puts("");
    }
    return 0;
}

这题告诉我们,学好数学很重要,列出公式就能看穿题目……

时间: 2024-08-11 08:57:17

自建物流的无人机实验(困难)的相关文章

计算客 自建物流的wu人机实验(简单)(状态压缩+LCA)

756次 29.1% 2000ms 65536K 作为一个电子商务作为主体的公司,京东一直努力实现着自己"多.快.好.省"的承诺.其中,"快"的特质更是被京东发挥到了极致.京东建立了层级分明的物流网络,然后除了在社区里面的到户物流点,每个作为中转的物流点都是有下属的物流点的.每个物流点都有一定数量的快递员,他们每天都辛苦的在外奔波. 京东计划给一些物流点配备一种新式的无人机,用于进行货物中转.配送.因为这种无人机还在试验期,京东对每个参与测试的物流点最多都只配备一台

互联网+物流,无人机等智能化与大数据下的物流行业发展更可观

2017(第三届)互联网+物流格局论坛于昨日在北京新闻大厦举行,大会以"人与无人"为主题,围绕智能高科技.人性化服务等方面探讨了物流大数据的未来走向. 随着互联网的崛起,物流行业也发展迅速,在不断追求创新的过程中物联网也紧跟"智能化发展"潮流,对未来物流网发展趋势做出了定位. 人与无人 现在说到物流必定会想到快递小哥,想必大家对高温环境下穿梭城市中的快递小哥还深有印象,仔细想想,似乎每段时间都会有关于快递小哥的新闻刷频,大家对于快递以及物流人员的关注度显然很高. 据

中铁快运联手顺丰建物流生态壁垒,再掀行业变革风暴

昨天,在众多剁手族都沉浸在双11的购物狂欢中时,一列"复兴号"从北京南站驶向上海,除了普通旅客,这趟列车还承载着一批特殊"客人"--快递包裹.这是中铁快运联合顺丰推出的"高铁极速达"服务,一件快递通过"复兴号"从北京到上海可以在10小时顺利送达. 在中国快递业开始进入量变到质变的关键节点,中铁快运联合顺丰在京沪高铁正式推出"高铁极速达",向"高速运快件"发起了进攻. 从运力合作到产品合作

计蒜之道 初赛 第二场 题解

人人都有极客精神 人人公司是一家极为鼓励极客精神的公司,当有重要的项目需要上线但又时间太紧,甚至需要当天上线的时候,往往会挂起海盗旗开启电子日期显示,让大家可以在对时间有更明确的感知的情况下,同心协力搞定重要的项目.海盗旗下方的电子屏显示的日期形式为 YYYYMMDD (年份占 4 位.月份占 2 位.天数占 2 位). 日期电子屏幕上每个数字对应的显示如下图: <img src="http://res.jisuanke.com/img/nanti/428.png" <=&

书乐说:京东阿里猫狗大战 嘴炮只为物流天下谁更强?

在新近播出的央视<对话>栏目中,京东集团CEO刘强东评价了京东物流的竞争对手菜鸟网络,他称菜鸟网络本质还是要在几个快递公司之上,搭建数据系统,最后,几家快递公司的大部分利润,都会被菜鸟物流吸走.菜鸟网络新闻发言人则很快回应称,"一家没有平台共享思维的企业,眼界只能停留榨取合作伙伴利润养活自己上,不可能理解赋能伙伴.提升行业.繁荣生态的意义." 嘴炮大战,不是吵给消费者看 对于京东(吉祥物是狗)和菜鸟(天猫就是只猫)在物流上的"猫狗大战"互掐,笔者和每日经

春节不打烊网友实测:京东物流谎言被戳破

春节物流不打烊成为各大电商快递公司彰显自身服务能力的市场展示手段,京东今年就为春节壕掷7600万元保证物流配送能力,但却被微博网友暴出京东配送员不友好的一幕. 送货员不愿送货,让消费者自提,消费者未能自提,结果配送员就以超出5公里为由强制退单而引起消费者的不满情绪,若在平时这也不算什么大事,但放在春节期间,特别是京东几次三番强调春节配送不打烊,问题的严重性就升级了.这让前几日集中宣传春节物流的京东脸上无光,而且近日有很多网友在微博上抱怨京东春节配送不给力,说好的春节不打烊并未能做到. 有一.两次

物流业:如何为电子商务起飞护航

刚刚过去的端午节期间,网购再次掀起热潮.然而,由于物流影响,消费者收到产品的速度却差异巨大,一些产品由于送货迟缓甚至被消费者进行了"在线投诉". 当前,我国电子商务发展迅速,然而物流依然是制约电商发展的瓶颈.由于居高不下的运输成本和偏低的运作效率,我国电商物流发展水平依然相对滞后.在互联网时代,电商物流呈现出怎样的新格局?面临哪些发展困境和问题?未来,电商物流企业如何把握新机遇,找准行业转型升级的着力点,托起新的云端梦想? 跨界与互补:电商物流呈现融合发展新态势 近年来,电子商务的兴起

dbca 建库、配置监听、导入数据(CentOS5.6+Oracle10G)

dbca 建库.配置监听.导入数据(CentOS5.6+Oracle10G) ******************************************************************************** *目标:建库.配置监听.创建相关表空间.导入数据 *步骤: * 1.dbca建库 * 2.图形化netca配置监听 * 3.配置开机启动实例 * 4.创建相关表空间 * 5.导入相关数据 ************************************

阿里招股书解读社会化物流体系价值

全年完成50亿个包裹,日均递送的包裹量达到1370万个.这是阿里巴巴的社会化物流体系交出的2013年答卷. 电商.支付.物流一直被称为铁三角,缺一不可.5月7日凌晨,阿里巴巴集团向美国证券交易委员会递交的IPO招股书中对其社会化物流体系花了大量篇幅进行阐释. 从阿里的电商平台推出伊始,在物流策略上,阿里就一直期望通过社会化的物流体系来解决电商平台的物流配送问题.与其他自建物流不同的是,阿里电商平台的卖家和买家都分布在极广的地域范围内,利用社会化物流有利于上百万的卖家向分布在中国各个地区的无数买家