520B

给定初始n和目标m,存在两种操作\(-1\)和\(×2\),要求最少操作次数

无脑解法是BFS,不能解决稍大的规模

当n>m时,输出n-m

否则逆向处理,转换为m到n的最小操作次数,存在两种操作\(+1\)和\(/2\)(后者只能在偶数时操作)

由\((m+1+1)/2=m/2+1\)得尽量多的/2操作可以减少操作次数

因此若操作当前的\(m​\)是偶数时尽量/2,直到\(m≤n​\)时再多操作\((n-m)​\)次\(+1​\)是最优操作

Challenge: suppose we have a generalized problem: we want to get n starting from m using two operations "subtract a" and "multiply by b". Generalize the solution to find the minimal number of moves to get from n to m in time if a and b are coprime. Can you do it if a and b may have common divisors greater than 1?


339C

给出砝码,限定重量类型但个数无限,求能否在天平上按照规则操作\(m\)次并输出方案

规则1.每次使用的砝码不能与上一次的相同重量

规则2:每次放入砝码后该侧的重量比另一侧天平的重量大

我的想法:设\(dp[i][j][k]\):第\(i\)次放入重量为\(j\)的砝码使另一侧的天平为\(k\)

\(dp[i][j][k]=dp[i-1][x≠j][y<sum...]\)

但官方题解用到了平衡的想法来替代sum

那么\(dp[i][j][k]\):存在第\(i\)次放入重量为\(j\)的砝码使两侧平衡差为\(k\)的方案

\(dp[i][j][k]=dp[i-1][x≠j][y=j-k>0]\) ,只需存在一对\((x,y)\)该方程既为真

说明:记上一次平衡差为\(y\),假设砝码放在左边,则\(l-r=y\)

这次在右边平衡差为\(k\),则\(r'-l'=k,l'=l,r'=r+j\)

\(∴y=j-k\)


295B

给定一个图,顶点数\(n≤500\),图中每对顶点都有两条边分别指向从对中某一点指向另一点,且权值给出

再给定一个删除序列\(x[1...n]\),表示要按顺序删除某个点,求每次序列操作前剩余的所有点对的最短距离之和

逆向考虑,floyd三重循环最外层为加入顶点的顺序,那我们把删除序列翻转过来就变为添加序列,既是一个floyd的过程

实现细节上的注意,添加\(x[k]\)点后先把\(x[k]\)相关的所有边都优先松弛再进行内循环更新

PS.做完这道题后对floyd的细节有了船新的认识

https://paste.ubuntu.com/p/YVHzf8pk8R/


329B(水)

从起点走到终点,其中有些地方不能走,有些地方存在一些敌人(0~9),且能和我们一样正常移动或者是停留,每次动作都是一个单位的时间,而敌人总是尽量杀向你。求起点到终点能最少干掉敌人的数目。

要注意到的一点是必然能拦截自己的肯定是它们到终点的距离小于自己到终点的距离

然后从终点BFS就ok了


916C(水)

构造一个n个点m条边的图,使得其1到n最短路距离为素数,MST之和为素数,且没环和重边

很显然构造一条链凑数就好


472D(水)

构造一棵树,使得该树中各点对的距离与给出原矩阵的距离相等

不知道为什么,在纸上画了一下就觉得是MST,然后暴力dijkstra检查匹配与否

https://paste.ubuntu.com/p/Cp72FznfkG/


242C(疑)

想了一下没找到快速有效的表示方法,网上题解甚至敢1e9logn暴力
暂时搁置


954D

给了n个点和m条边,还给了起点s和终点t,问最多加多少条边,可以使得起点到终点的最短路不会变小。

分开两边求sssp,然后枚举不存在的边的两个dis的可能性
\(dis1[i]+1+dis2[j]≥dis1[ed] \ \& \ dis2[i]+1+dis1[j]≥dis2[st]\)


543B

给定一个无向边无权图,给出两个起点\(s_i\)终点\(t_i\)和约束条件\(l_i\)
求最多删除的边数使得\(dis[s_1][t_1]≤l_1 \ \& \ dis[s_2][t_2]≤l_2\)
首先无相关的边(不在最短路径上的边)肯定是要被叉的
其次最短路径上的边也是可能被叉的,但这时候叉的某一路径可能会影响到两条最短路径
因此暴力枚举共享的端点,计算出当前最短路径下的总边数更新答案(注意枚举是有向的)
也可以想象成不断添加边构成新的符合约束的最短路
https://paste.ubuntu.com/p/PHrBpfXp9y/


25C(水)

给定一个图,每次添加一条边,对所有最短点对距离和

改动floyd,每次只\(O(n^2)\)更新相关的点

https://paste.ubuntu.com/p/spnMWJSKf3/


229B(水)

普通sssp,存在限制:某时刻某些节点不可经过

每次访问节点时先计算出连续被屏蔽的时间长即可

https://paste.ubuntu.com/p/MS5j4jjbWV/


61D

给定一棵树,求从点1到各点的边权和最小

贪心的做法,找出起点为1的最长的路径,剩下的边都遍历2遍

https://paste.ubuntu.com/p/hdTdHxdgQx/


877D(水)

从起点开始可往四个方向跑,每个方向可走1-k步(障碍物除外),问到达终点的最小时间

预判要走的方向,如果该方向上存在比当前时间还短的状态就无需往后(i-k)搜索

实现上可能有坑,不敲了


14D

给出一棵树,找出两条不相交即没有公共点的路径,使得两个路径的长度的乘积最大。

枚举树中的边,将该边去掉,分成两棵树,分别求出这两棵树的直径,乘起来维护一个最大值即可。


938D

给定一个图,图的自定义终点有点权,求每一个起点到某一个终点的最小点权边权和(其中边要往返,既乘2)

多个源点不定终点看着有点难办,要尝试倒着求,给每个点的连接到汇点\(S\),边权为该点的点权,然后剩余的边权全部乘2

那么从S出发的SSSP就是对应的原题过程的逆过程,由此解得

PS.本题存在代码歧视,差不多一样的写法愣是MLE个10倍艹,不提供代码了


SP Last UPD:7.3

Codeforces - tag::graphs 大合集 [占坑]的更多相关文章

  1. Codeforces - tag::dp 大合集 [占坑 6 / inf]

    Gym - 100753J 某国家仅有金币和银币两种货币,起汇率为g,纪念品市场有n个商人和商品,商人结帐只用银币,并且把一堆银币装在袋子里,分为三种类型,分别按向下/向上/四舍五入取整(其中向上的优 ...

  2. Codeforces - tag::flows 大合集 [完坑 x14]

    589F 题意:给出n个时间区间,每个区间挑定长的非连续区间,求不同个区间不存在时间冲突的最大定长,输出乘上n 二分图模型+二分长度,左顶点集为区间编号,右顶点集为时间编号(1...10000),汇点 ...

  3. Codeforces - tag::data structures 大合集 [占坑 25 / 0x3f3f3f3f]

    371D 小盘子不断嵌套与大盘子,最后与地面相连,往里面灌水,溢出部分会往下面流,求每次操作时当前的盘子的容量 其实这道题是期末考前就做好了的.. 链式结构考虑并查集,然后没了(求大佬解释第一个T的点 ...

  4. HDU - tag :: Multi-University 大合集

    说明:按无序更新,只更(会)水题 4632 题意:求字符串的回文子[序列]个数 区间DP,设\(dp[i][j]\)为\([i,j]\)范围内的回文子序列个数, 由容斥定理可得\(dp[i][j]=d ...

  5. ubuntu 18.04 搭建flask服务器(大合集,个人实操)

    ubuntu 18.04 搭建flask服务器(大合集) Ubuntu python flask 服务器 本次使用的Ubuntu版本为:Ubuntu 18.04.5 LTS (GNU/Linux 4. ...

  6. Lucene搜索方式大合集

    package junit; import java.io.File; import java.io.IOException; import java.text.ParseException; imp ...

  7. 【收藏】Java多线程/并发编程大合集

    (一).[Java并发编程]并发编程大合集-兰亭风雨    [Java并发编程]实现多线程的两种方法    [Java并发编程]线程的中断    [Java并发编程]正确挂起.恢复.终止线程    [ ...

  8. [题解+总结]动态规划大合集II

    1.前言 大合集总共14道题,出自江哥之手(这就没什么好戏了),做得让人花枝乱颤.虽说大部分是NOIP难度,也有简单的几道题目,但是还是做的很辛苦,有几道题几乎没思路,下面一道道边看边分析一下. 2. ...

  9. [题解+总结]NOIP动态规划大合集

    1.前言 NOIP2003-2014动态规划题目大合集,有简单的也有难的(对于我这种动态规划盲当然存在难的),今天就把这些东西归纳一下,做一个比较全面的总结,方便对动态规划有一个更深的理解. 2.NO ...

随机推荐

  1. Java 读取jar内的文件的超简便方法

    坑爹的java课程设计,偏要用jar来运行 读取.存储jar内文件的支持也好低 存储方法: 进入jar文件其实没有说的那么困难,jar文件本质是一个zip格式的压缩文件,只是把文件后缀名改了,要用Ja ...

  2. maven 执行本地、服务器 jar包安装

    开发时遇到过第三方jar包依赖不了时的尴尬 因为遇到过几次所以记录一下,POM文件引入的个推jar包无效,就必须本地安装了,服务器上的也是一样,执行相同的maven命令就行,注意修改路径!和将jar包 ...

  3. 【转】ACM各种WA的说明及可能的原因

    转载地址:http://blog.csdn.net/qq_15015129/article/details/52738184 1.答案错误 —— wrong answer 就是最常见的.这个没办法,基 ...

  4. 【转】Java多线程编程(十)-并发编程原理(分布式环境中并发问题)

    转载地址:http://blog.csdn.net/leicool_518/article/details/42268947 在分布式环境中,处理并发问题就没办法通过操作系统和JVM的工具来解决,那么 ...

  5. gogland golang 颜色&字体 colors&font 配置文件

    <scheme name="Ya" version="142" parent_scheme="Darcula"> <opt ...

  6. php中this、self、parent解析

    概述: this:指向类当前对象的指针:self:指向类本身,一般指向类中的静态变量:parent:指向父类的指针,一般使用parent来调用父类的构造函数. 下面通过程序详细介绍: 1.this & ...

  7. linux 磁盘 分区 MBR GPT

    磁盘:由许多盘片,机械手臂,磁头和主轴马达所构成的,实际的数据都是写入盘片上面,而读写主要是通过机械手臂可伸展让磁头在盘片(在主轴马达的转动左右下,盘片跟着转动)上面进行读写操作.由于单一盘片写入数据 ...

  8. 彻底的卸载SQL Server2005

    昨天不小心把SQL Server 2005弄坏了.所以,对彻底卸载他进行了研究.在这里记录一下,嘿嘿~ 1.首先在控制面板中卸载所有与SQL Server 2005相关的程序,要记得最后一个卸载Mic ...

  9. [修正] Firemonkey 中英文混排折行,省略字符,首字避开标点

    问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题. 修正: ...

  10. C# 二维码生成——QRCode

    C#二维码生成,这里使用开源的ThoughtWorks.QRCode.dll库. 步骤: 1.下载ThoughtWorks.QRCode.dll库文件,并引用到项目中. 2.创建QRCodeHandl ...