首页 > 其他分享 >Code as you want, fail as you expect.

Code as you want, fail as you expect.

时间:2023-08-10 14:11:06浏览次数:41  
标签:infty Code 可以 集合 Link expect 异色 fail dp

想学习罗阿姨的 style,但是……

蚌埠住了。总结写了一坨没了。现在是速通版。废话没了。

差分约束

注意 queue 换 stack、SLF、判断出队次数等优化。

以及 SPFA 最短路跑出来答案最大,反之亦然。

换根 dp

可以根据定义去换。此外因为 \(f_v\) 是从 \(f_u\) 过来的,换根可以对 \(f_v\) 减去 \(f_u\) 的贡献,再进行操作。

Nearby Cows G

原题目链接:Link

定义 \(f_{i, j}\) 表示以 \(i\) 为根节点距离为 \(j\) 的节点权值和。\(f_{i, 0} = c_i\)。

首先只考虑「下面」的部分(就是从 \(1\) 开始 dp 顺着的方向),那么就可以简单地 \(f_{u, j} = \sum_{v \in son_u} f_{v, j - 1}\)。

然后考虑「上面」的部分。因为是「上面」,是从 \(u\) 推到 \(v\),和「下面」的 dp 顺序相反。这里直接在原 dp 数组上操作,完了就是上 + 下 = 总和。假设 \(f_u\) 已经处理好,那么我们可以发现,统计 \(f_v\) 的时候,是会有重复的(「下面」的部分)。

graph -1-

比如这里 \(f_{v, 2}\),统计「上面」需要的是 \(f_{u, 1}\) 的「上面」,但是会多统计 \(f_{u, 1}\) 的「下面」,也就是 \(v\) 节点(本质是 \(f_{v, 0}\))那么容斥一下。\(f_{v, j} = f_{u, j - 1} - f_{v, j - 2}\)。

具体可以这样:

for (int i = k; i >= 2; i--)
    f[v][i] -= f[v][i - 2];

写到这里问题已经迎刃而解了。所以我之前为什么会看这个题半天啊???

Kamp

原题目链接:Link

为什么和考试题一毛一样???周考是翻译赛是吧???

因为每一条边都有去有回,所以都会经过两遍。除了最后去的点不用回,于是可以减掉。然后答案就变成了 \(f_i = 2 \sum_{j = 1} ^ k dis_{i, p_j} - \max_{j = 1} ^ k dis_{i, p_j}\)。

这里求距离之和可以很简单地换根,跟求 size 差不多。然后后面不会了。。。果然还是不会这种减掉贡献的吗。。。先 to be continued。

网络流

蚌埠。做了这么多网络流的题,一夜回到解放前。

主要是一些 tricks。

  1. 拆点。比如点有权、删除点等操作,把点 \(x\) 拆成 \(x \to x'\),然后对于原先的 \(u \to x \to v\) 变成 \(u \to x \to x' \to v\),在边上控制啥的就行。

    比如电视网络,有删除点,就拆点,然后边可以删可以不删,转化为最小割,拆出来的边容量是 \(1\),对应过去是真正的边容量就是 \(+ \infty\)。

    还有蜥蜴。要拆成入点和出点。中间的边代表跳跃,就可以通过边来限制了。

  2. 好像相应的还有拆边,原理类似。

  3. 最小割判定。这个真的很难蚌。我会感性理解为边可以选和不选,对应到与 \(S\) 或是 \(T\) 在一起。

    典型的比如 OI wiki 中的例子。有 \(n\) 个物品和两个集合 \(A,B\),如果一个物品没有放入 \(A\) 集合会花费 \(a_i\),没有放入 \(B\) 集合会花费 \(b_i\);还有若干个形如 \(u_i,v_i,w_i\) 限制条件,表示如果 \(u_i\) 和 \(v_i\) 同时不在一个集合会花费 \(w_i\)。每个物品必须且只能属于一个集合,求最小的代价。与 \(S\) 在一起的和与 \(T\) 在一起的就是两个不同的集合。割掉连 \(S\) 的就属于 \(T\) 集合,反之。然后两点之间的连边如果割掉了就代表不属于同一个集合($S $ 连「左边的」,\(T\) 连「右边的」)。

    方格取数问题中,异色的连边为什么是 \(+ \infty\) 呢。因为这里是直接染出两个颜色,\(S\) 和 \(T\) 都表示不选,只是一个是黑色连一个是白色连。那么 \(S \to u \to v \to T\)(\(u, v\) 异色)是不能联通的,这样就保证会从 \(S\) 或者 \(T\) 割开。如果异色的连边不是 \(+ \infty\),直接从中间割开美滋滋,这样就不对了。

为了加强我的自尊心(以及摸鱼),拿最近的题验证一下效果。

深海机器人问题

原题目链接:Link

类似方格取数加强版。因为每条边只有第一次有价值,有一条容量为 \(1\),费用为边的价值的边,然后剩下的都没用了,容量为 \(+ \infty\),费用为 \(0\)。就这样,但是我之前不会。

标签:infty,Code,可以,集合,Link,expect,异色,fail,dp
From: https://www.cnblogs.com/liuzimingc/p/fail.html

相关文章

  • Codes 研发管理平台开源版 3.5 发布
    一:codes 简介Codes是一个高效、简洁、轻量的一站式研发管理平台。包含需求管理,任务管理,测试管理,缺陷管理,自动化测试,cicd等功能;常态下刀耕火种的test环节给自动化的DevOps踩下了刹车。Codes以技术最薄弱,最不被重视的测试为发力点,通过落地敏捷测试打通了研发与运维中间的枢钮润滑环......
  • #yyds干货盘点# LeetCode程序员面试金典:添加与搜索单词 - 数据结构设计
    题目:请你设计一个数据结构,支持添加新单词和查找字符串是否与任何先前添加的字符串匹配。实现词典类WordDictionary:WordDictionary()初始化词典对象voidaddWord(word)将word添加到数据结构中,之后可以对它进行匹配boolsearch(word)如果数据结构中存在字符串与 word匹......
  • Codeforces 1857E:Power of Points 区间?
    1857E.PowerofPointsDescription:\(n\)个数:\(x_1,···,x_n\),从左向右扫,当\(s=x_i\)时,可以将这\(n\)个数分为若干个闭区间\([s,x_1],[s,x_2],···,[s,x_n]\)(当然如果\(x_i<s\),则区间形如\([x_i,s]\))对于每一个\(s\in(x_1,···,x_n),\)有一个整数\(p\),记\(f_......
  • SyntaxError: Error parsing JavaScript expression: Unexpected token, expected ","
    项目环境C:\Users\19139>node-vv18.16.0C:\Users\19139>pnpm-v8.2.0vue3+vite4打包报错"vue":"3.3.4","vite":"4.0.4","rollup":"^3.27.2",报错D:\work\demo>npmrunbuild>base-m......
  • 痞子衡嵌入式:AppCodeHub - 一站网罗恩智浦MCU应用程序
    近日,恩智浦官方隆重上线了应用程序代码中心(ApplicationCodeHub,简称ACH),这是恩智浦MCUXpresso软件生态的一个重要组成部分。痞子衡之所以要如此激动地告诉大家这个好消息,是因为ACH并不是又一个恩智浦官方githubprojectsite那么简单而已,且听痞子衡细细道来:ACHgithub......
  • Oracle 安装 Failed to Create oracle Oracle Home User 解决方案
    WindowsServer2016安装Oracle12报错:FailedtoCreateoracleOracleHomeUser的解决方案:1、打开域安全策略(secpol.msc)-安全设置-账户策略-密码策略-密码必须符合复杂性要求。定义这个策略设置为:已禁用。 2、最后cmd运行刷新组策略命令为:gpupdate/force 3、重新......
  • internal error, unexpected bytes at end of flate stream
     [query]Whatdoestheerrormean"websocket:internalerror,unexpectedbytesatendofflatestream"·Issue#643·gorilla/websockethttps://github.com/gorilla/websocket/issues/643[query]Whatdoestheerrormean"websocket:internaler......
  • dimp V8:[WARNING]login fail, check your username and password, and check the serv
    在进行某个项目的性能测试时,我们选择了达梦8作为使用的数据库。前期是在一台功能测试环境的达梦数据库服务上创建用于压力测试的业务数据。后续将数据库导出,并导入一台专门做性能测试的高性能服务器(部署同样版本的达梦8),执行数据库文件导入操作时遇到了问题。以下是出现的错误......
  • LeetCode从算法到算命—1749.任意子数组和的绝对值的最大值
    1749.任意子数组和的绝对值的最大值题目信息给你一个整数数组nums。一个子数组[numsl,numsl+1,...,numsr-1,numsr]的和的绝对值为abs(numsl+numsl+1+...+numsr-1+numsr)。请你找出nums中和的绝对值最大的任意子数组(可能为空),并返回该最大值。abs(x)......
  • 使用golang解决LeetCode热题Hot100(1-10)
    使用golang解决LeetCode热题Hot1001.两数之和https://leetcode.cn/problems/two-sum/题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个......