题目描述

给定一个循环流(每个点均满足流量平衡条件),这个循环流有$n$个点,且每条边的流量只有 $1$ 或$ 2$,其中$a$条边流量为$1$,$b$条边流量为$2$,判断是否存在一个流满足上述条件.

多组数据,其中$T\leq127749$,$2\leq n\leq50$,$a,b\leq50$.

比赛记录

比赛的时候一直在想这道题,想到了一个结论,就是一个这样的合法的流一定是由若干个简单环拼在一起,于是就写了一个暴力,但是由于对题目理解的不够深,导致我判断一个$(a,b)$状态是否可以构成一个简单环时出现了问题,于是暴力凉凉

题目解析

因为是循环流,所以显然一个合法的流网络是由若干个简单环拼接成的,这些简单环有点或边相交,我们可以构造一个简单dp,令$f[i][j][k]$表示$i$条流量为$1$的边,$j$条流量为$2$的边是否可以构成一个有$k$个节点的循环流,考虑转移

$$

f[i][j][k] = f[a][b][c] \& f[d][e][f] \ 其中a+b=i,b+e=j,c<=k,f<=k,c+f-1>=k

$$

这个dp复杂度是$O(n^7)$的.

考虑如下优化:

1.若$i+j <k$,$f[i][j][k]$显然不合法.

2.若$f[i][j][k]$合法,则$f[i+2*l][j-l][k]$也合法.

3.将$f$前缀和,可以少枚举一维.

经过如下玄学优化,可以通过本题.

另外讲一下如何判定$i$条流量为$1$,$j$条流量为$2$的边是否能构成一个长度为$k$的环的循环流.

因为我们知道假如我们固定了让每一条边都从$i$流向$i+1$,那么就很好判断这个状态是否合法,但我们其实可以将一条流量流量为$2$的边和一条流量为$1$的边捆绑变成一条流量为$1$的边,于是我们枚举有多少条边捆绑在一起,暴力判断即可.

更加高明的做法

首先$n=2$特判,对于$n \geq 3$时,我们可以直接判断出解的情况

1.若$i+j<k$,显然不合法.

2.若$i=1$,不合法,因为若流出一点的流量是奇数,那么流入这个点的流量也需要是奇数,所以至少需要$2$条.

3.若$i+j=k$,若$i=n$或$j=n$,则合法,否则不合法,因为只有$k$条边所以只能构成一个简单环,所以当$i \neq n$或$j \neq n$时,构成的环不合法.

4.若$i+j>k$,且$i\neq1$,那么一定合法

考虑证明第四条结论

首先,当$n=3$时,我们可以简单构造证明该结论成立.

对于$n\geq 3$,假设第四条结论对$k=n-1$成立,当$k=n$时,当$i=0$或$j=0$时显然成立,当$i,j>0$时,由第二条结论知道$i>1$,因此$(i-1,j)$对于$k=n-1$成立,因为$i-1>0$,所以我们有至少一条流量为$1$的边,假设这条边由$x$指向$y$,那么我们可以把这条边去掉,加上$(x,k)$,和$(k,y)$这两条边,显然这样依然满足条件,所以结论成立

jzoj6094的更多相关文章

随机推荐

  1. Spring表达式

    一.SpEL 其中,直接写也可以赋值,' ' 单引号引起来后成为一个字符串对象,可以调用String的方法: 二.引用另外一个bean 装配这个类的bean: 1.第一种方法,property标签中使 ...

  2. npm 设置同时从多个包源加载包的方法

    随着前后端分离技术的发展成熟,越来越来越多的后台系统甚至前端系统采用前后端分离方式,在大型前后端分离系统中,前端往往包含大量的第三方js 包的引用,各个第三方包又可能依赖另外一个第三方包,因此急需要一 ...

  3. JD 评论晒图爬虫

    JD 评论晒图爬虫 #coding=utf-8 import requests import re import os __author__ = 'depy' """ j ...

  4. 计算字符串的长度.len,RuneCountInString

    内置函数len(),可以返回字符串/数组/切片/map/channel的长度. unicode/utf8包 函数:RuneCountInString(输入一个字符串),返回int类型的字符串长度.由于 ...

  5. HiveServer2的负载均衡高可用与ActicePassive高可用浅析

    负载均衡的高可用 最近在工作中遇到了hiveserver2需要部署高可用的场景,去网上搜索了解过后,用了绝大多数人推荐的共同方法: Property_name Property_value Descr ...

  6. HTML+CSS设计个人主页

    在个人主页的设计中,我采用了圣代布局和div分块.效果图如下: <!DOCTYPE html> <html lang="en"> <head> ...

  7. Django学习day10随堂笔记

    每日测验 """ 今日考题 1.默写ajax基本语法,及提交json数据和文件都需要添加哪些额外参数 2.什么是序列化,截止目前为止你所接触过的序列化有哪些 3.批量插入 ...

  8. ESP8266- AP模式的使用

    打算通过该模式,利用手机APP完成配网 • AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点.一般家庭或办公室使用的无线路由器就是一个AP. • STA站点,每一个连接到无线网络中的终 ...

  9. HCNP Routing&Switching之路由控制-策略路由

    前文我们了解了路由策略工具Route-Policy相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15322135.html:今天我们来聊一聊策略路由相 ...

  10. SVN基本配置--创建版本库(图文并茂)

    SVN基本配置简 上一篇介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化.这篇介绍一下如何使用VisualSVN Server建立版本库,以及TortoiseSVN的使 ...