100003. Tree

题目大意

给定一棵以1为根n个节点的树,树上每条边有一个覆盖的限制次数di。现在给出树上的m条链,每条链有一个价值ci。现在可以从中选出一些链,在满足覆盖次数的限制下,求最大的价值。
T组数据。

Data Constraint
T1000,m1000,n100000

题解

考虑网络流,对于每一条树边i(u,v),deepu<deepvuv连一条流量为di费用为0的边。
对于每一条链i,uv,deepu<deepvvu连一条流量为1费用为ci的边。
然后跑最大费用循环流(无源汇最大费用流)。


最大费用循环流

先将所有费用>=0的边强制满流,费用记为ans
degi=inioutiin为入流之和,out为出流之和。
对于所有i(degi<0)Si连一条流量为degi费用为0的边。
对于所有i(degi>0)iT连一条流量为degi费用为0的边。
然后从ST跑一遍最小费用流,本质上就是为了保证流量平衡模拟退流过程。
最后的最大费用就是ansmincost


SRC

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std ;

#define N 500000 + 10
#define M 10000 + 10
typedef long long ll ;
struct Path {
    int u , v , c ;
} P[N] ;
struct Edge {
    int u , v , d ;
} E[N] ;

vector < int > G[N] ;

int Node[10*N] , Next[10*N] , C[10*N] , Cost[10*N] , Head[M] , tot ;
int D[10*N] , Pre[N] , vis[N] ;
ll Dist[M] ;
int Deep[N] , fa[N] , Deg[M] ;
int Case , n , m ;
int S , T ;
ll ans ;

bool cmp( Path a , Path b ) { return a.c > b.c || ( a.c == b.c && Deep[a.u] - Deep[a.v] < Deep[b.u] - Deep[b.v] ) ; }

void DFS( int x , int F ) {
    fa[x] = F ;
    for (int p = 0 ; p < G[x].size() ; p ++ ) {
        if ( G[x][p] == F ) continue ;
        Deep[G[x][p]] = Deep[x] + 1 ;
        DFS( G[x][p] , x ) ;
    }
}

void link( int u , int v , int w , int cost ) {
    Node[++tot] = v , Next[tot] = Head[u] , C[tot] = w , Cost[tot] = cost , Head[u] = tot ;
    Node[++tot] = u , Next[tot] = Head[v] , C[tot] = 0 , Cost[tot] = -cost , Head[v] = tot ;
}

bool SPFA( int st ) {
    memset( Dist , 63 , sizeof(Dist) ) ;
    int i = 0 , j = 1 ;
    D[1] = st ;
    vis[st] = 1 ;
    Dist[st] = 0 ;
    while ( i < j ) {
        i ++ ;
        int now = D[i] ;
        for (int p = Head[now] ; p ; p = Next[p] ) {
            if ( !C[p] ) continue ;
            if ( Dist[now] + Cost[p] < Dist[Node[p]] ) {
                Dist[Node[p]] = Dist[now] + Cost[p] ;
                Pre[Node[p]] = p ;
                if ( !vis[Node[p]] ) {
                    vis[Node[p]] = 1 ;
                    D[++j] = Node[p] ;
                    if ( Dist[D[j]] < Dist[D[i+1]] ) swap( D[i+1] , D[j] ) ;
                }
            }
        }
        vis[now] = 0 ;
    }
    return Dist[T] < Dist[T+1] ;
}

ll MinCost() {
    ll ret = 0 ;
    while ( SPFA(S) ) {
        int Minv = 0x7FFFFFFF ;
        for (int x = T ; x != S ; x = Node[Pre[x]^1] ) Minv = min( Minv , C[Pre[x]] ) ;
        ret += (ll)Minv * Dist[T] ;
        for (int x = T ; x != S ; x = Node[Pre[x]^1] ) {
            C[Pre[x]] -= Minv ;
            C[Pre[x]^1] += Minv ;
        }
    }
    return ret ;
}

int main() {
    freopen( "tree.in" , "r" , stdin ) ;
    freopen( "tree.out" , "w" , stdout ) ;
    scanf( "%d" , &Case ) ;
    while ( Case -- ) {
        ans = 0 ;
        tot = 1 ;
        memset( Deg , 0 , sizeof(Deg) ) ;
        memset( Head , 0 , sizeof(Head) ) ;
        scanf( "%d%d" , &n , &m ) ;
        S = 0 , T = n + 1 ;
        for (int i = 1 ; i <= n ; i ++ ) G[i].clear() ;
        for (int i = 1 ; i < n ; i ++ ) {
            scanf( "%d%d%d" , &E[i].u , &E[i].v , &E[i].d ) ;
            G[E[i].u].push_back( E[i].v ) ;
            G[E[i].v].push_back( E[i].u ) ;
        }
        Deep[1] = 1 ;
        DFS( 1 , 0 ) ;
        for (int i = 1 ; i < n ; i ++ ) {
            if ( Deep[E[i].u] > Deep[E[i].v] ) swap( E[i].u , E[i].v ) ;
            link( E[i].u , E[i].v , E[i].d , 0 ) ;
            Deg[E[i].u] -= E[i].d , Deg[E[i].v] += E[i].d ;
        }
        for (int i = 1 ; i <= m ; i ++ ) {
            scanf( "%d%d%d" , &P[i].u , &P[i].v , &P[i].c ) ;
            if ( Deep[P[i].u] < Deep[P[i].v] ) swap( P[i].u , P[i].v ) ;
            ans += P[i].c ;
            Deg[P[i].v] ++ , Deg[P[i].u] -- ;
            link( P[i].u , P[i].v , 1 , P[i].c ) ;
        }
        for (int i = 1 ; i <= n ; i ++ ) {
            if ( Deg[i] < 0 ) link( S , i , -Deg[i] , 0 ) ;
            else link( i , T , Deg[i] , 0 ) ;
        }
        ll tmp = MinCost() ;
        printf( "%lld\n" , ans - tmp ) ;
    }
    return 0 ;
}

以上.

Failed to parse json to bean, json: {"eid":"vms.front","ct":1761637330615,"ep":{"env":{"browserInfo":{"type":"Chrome","version":"141"},"systemInfo":{"type":"Windows 10","framework":"win64"}},"errorInfo":[],"videoInfo":[{"pullStreamDuration":993,"pullStreamResult":true,"module":"live","type":"mediaServer","vmsModule":"Video"},{"pullStreamResult":false,"errorCode":-100003,"module":"playback","type":"mediaServer","vmsModule":"Video"}],"featureInfo":[{"module":"video","feature":"deviceTree.switchPicture","event":"visible","params":{}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":0}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":1}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":2}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":3}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":4}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":5}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":6}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":7}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":8}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":9}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":10}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":11}}],"visitInfo":[{"module":"video","feature":"deviceTree.switchPicture","event":"visible","params":{}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":0}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":1}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":2}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":3}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":4}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":5}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":6}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":7}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":8}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":9}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":10}},{"module":"video","feature":"liveview.toolbar","event":"visible","params":{"type":11}}]},"usi":"68da00b6840d6a705e9d6065","uvi":"vms-876c908014ca4cd39db52e106031122a"}, bean class: class com.tplink.cdd.component.datatrack.common.dto.SingleUpLoadDataDTO com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "eid" (class com.tplink.cdd.component.datatrack.common.dto.SingleUpLoadDataDTO), not marked as ignorable (13 known properties: "scr", "sv", "tz", "apv", "uvi", "ex", "dataTrackEvent", "plv", "lg", "scl", "sr", "accountId", "apn"]) at [Source: (String)"{"eid":"vms.front","ct":1761637330615,"ep":{"env":{"browserInfo":{"type":"Chrome","version":"141"},"systemInfo":{"type":"Windows 10","framework":"win64"}},"errorInfo":[],"videoInfo":[{"pullStreamDuration":993,"pullStreamResult":true,"module":"live","type":"mediaServer","vmsModule":"Video"},{"pullStreamResult":false,"errorCode":-100003,"module":"playback","type":"mediaServer","vmsModule":"Video"}],"featureInfo":[{"module":"video","feature":"deviceTree.switchPicture","event":"visible","params":{}}"[truncated 2249 chars]; line: 1, column: 9] (through reference chain: com.tplink.cdd.component.datatrack.common.dto.SingleUpLoadDataDTO["eid"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1127) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2036) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1700) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1678) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:320) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3597) ~[jackson-databind-2.13.4.2.jar:2.13.4.2] at com.tplink.cdd.component.datatrack.common.util.JsonUtil.json2bean(JsonUtil.java:82) [components-datatrack-1.1.18.jar:1.1.18] at com.tplink.cdd.component.datatrack.port.evnetcenter.FrontDataTrackEventWatcher.handleEvent(FrontDataTrackEventWatcher.java:57) [components-datatrack-1.1.18.jar:1.1.18] at com.tplink.smb.eventcenter.core.DataProcessor.run(DataProcessor.java:31) [eventcenter.core-1.4.5.jar:1.4.5] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_452] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_452] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_452] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_452] at java.lang.Thread.run(Thread.java:750) [?:1.8.0_452] at java.lang.Thread.run(Thread.java:750) [?:1.8.0_452] at com.tplink.cdd.component.datatrack.common.threadpool.MdcAwareThreadFactory$MdcAwareThread.run(MdcAwareThreadFactory.java:42) [components-datatrack-1.1.18.jar:1.1.18] 10-28-2025 15:42:10.620 ERROR [Thread-90] [TID: N/A] [Reqid: ef731024a135017aeb4e82874f84deb3] [ReqTime: 2025-10-28 15:42:10] c.t.s.e.c.DataProcessor: Fail to process event, handler:com.tplink.cdd.component.datatrack.port.evnetcenter.FrontDataTrackEventWatcher java.lang.NullPointerException: null at com.tplink.cdd.component.datatrack.datacollect.DataCollectService.collectWholeEventData(DataCollectService.java:73) ~[components-datatrack-1.1.18.jar:1.1.18] at com.tplink.cdd.component.datatrack.port.evnetcenter.FrontDataTrackEventWatcher.handleEvent(FrontDataTrackEventWatcher.java:58) ~[components-datatrack-1.1.18.jar:1.1.18] at com.tplink.smb.eventcenter.core.DataProcessor.run(DataProcessor.java:31) [eventcenter.core-1.4.5.jar:1.4.5] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_452] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_452] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_452] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_452] at java.lang.Thread.run(Thread.java:750) [?:1.8.0_452] at java.lang.Thread.run(Thread.java:750) [?:1.8.0_452] at com.tplink.cdd.component.datatrack.common.threadpool.MdcAwareThreadFactory$MdcAwareThread.run(MdcAwareThreadFactory.java:42) [components-datatrack-1.1.18.jar:1.1.18] 发生了什么,如何解决
10-29
【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
先看效果: https://pan.quark.cn/s/3756295eddc9 在C#软件开发过程中,DateTimePicker组件被视为一种常见且关键的构成部分,它为用户提供了图形化的途径来选取日期与时间。 此类控件多应用于需要用户输入日期或时间数据的场景,例如日程管理、订单管理或时间记录等情境。 针对这一主题,我们将细致研究DateTimePicker的操作方法、具备的功能以及相关的C#编程理念。 DateTimePicker控件是由.NET Framework所支持的一种界面组件,适用于在Windows Forms应用程序中部署。 在构建阶段,程序员能够通过调整属性来设定其视觉形态及运作模式,诸如设定日期的显示格式、是否展现时间选项、预设的初始值等。 在执行阶段,用户能够通过点击日历图标的下拉列表来选定日期,或是在文本区域直接键入日期信息,随后按下Tab键或回车键以确认所选定的内容。 在C#语言中,DateTime结构是处理日期与时间数据的核心,而DateTimePicker控件的值则表现为DateTime类型的实例。 用户能够借助`Value`属性来读取或设定用户所选择的日期与时间。 例如,以下代码片段展示了如何为DateTimePicker设定初始的日期值:```csharpDateTimePicker dateTimePicker = new DateTimePicker();dateTimePicker.Value = DateTime.Now;```再者,DateTimePicker控件还内置了事件响应机制,比如`ValueChanged`事件,当用户修改日期或时间时会自动激活。 开发者可以注册该事件以执行特定的功能,例如进行输入验证或更新关联的数据:``...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值