退役前的做题记录

2019.12.17

2019.12.18

codechef STICNOT

问题等价于给每条边和每个点分配一个权值,使得点权\(\geq\)相邻边权

考虑将边权从大到小插入,插入第一条边的时候,我们也就确定了其两端的点的点权的最小值。接下来放第二条边的时候,肯定将其放在与第一条边有公共点的位置是最优的,因为公共点的点权一定是大于等于该边边权的,也就是这条边只确定了一个点点权的最小值。

一直做下去,问题就变成了第一条边确定两个点的最小值,之后每条边确定一个点的最小值,求最小修改数使其合法。直接贪心即可,最后还可以发现这个问题和树的形态结构无关

luogu5242 [USACO19FEB]Cow Dating

暴力就是求\(\sum_{i=l}^rp_i\prod_{j=l,j\neq i}^r(1-p_j)\)的最大值。

记\(pro_i=\prod_{j=1}^i(1-p_j)\),则所求为\(\frac{pro_r}{pro_{l-1}}\sum_{i=l}^r\frac{p_i}{1-p_i}\);再记\(sum_i=\sum_{j=1}^i\frac{p_j}{1-p_j}\),则所求为\(\frac{pro_r(sum_r-sum_{l-1})}{pro_{l-1}}\).

假设当前最优解区间为\([l,r]\),固定左端点,将右端点向右移时若要使得答案更优,整理可以得到\(sum_r-sum_{l-1}<1\)。枚举\(l\)同时维护最右的指针即可。注意开long double

luogu5243 [USACO19FEB]Moorio Kart

对每棵树找出所有的路径长度方案数和该长度的所有方案的长度和。之后暴力dp合并,注意中间省去每棵树种不存在的长度貌似可以做到\(O(NY\sqrt Y)\).最后乘上圆排列的系数

CF1266D Decreasing Debts

要使\(\sum d\)最小每个人只能有一条出边或一条入边。同时再加上可以随便指,便可以预处理出每个人最终的收支情况,支出的向收入的连边即可

CF1266E Spaceship Solitaire

所有的优惠方案都是一定可以达成的,map维护\((s,t,u)\),每次修改的时候暴力\(+1\)或\(-1\)即可

luogu4377 [USACO18OPEN]Talent Show

首先01分数规划,之后记\(f_i\)表示\(\sum w=i\)时的最大权值和。注意到\(\sum w\)至多在\(W=1000\),大于的直接看做\(W\),于是直接01背包就完事了

luogu4376 [USACO18OPEN]Milking Order

二分答案+toposort判断是否合法,最后拿优先队列再跑一遍toposort求答案,注意二分答案的时候使用普通的queue使得复杂度是一个\(\log\)的

luogu4374 [USACO18OPEN]Disruption

将所有的新边按照边权从小到大排序,注意到对每条新边\((u,v,w)\),只有原树中删去在路径\((u,v)\)上的边的时候才能把这条边加入从而形成一棵新树。于是暴力并查集合并就可以了(类似于LOJ3040的合并方法)

原文地址:https://www.cnblogs.com/encodetalker/p/12064767.html

时间: 2024-10-08 14:24:33

退役前的做题记录的相关文章

退役前的做题记录5.0

退役前的做题记录5.0 出于某种原因新开了一篇. [CodeChef]Querying on a Grid 对序列建立分治结构,每次处理\((l,mid,r)\)时,以\(mid\)为源点建立最短路树,这样跨越\(mid\)的点对之间的最短路一定会经过\(mid\),因此两点之间的最短路径就可以描述成最短路树上的两段到根路径.对每棵最短路树处理\(dfs\)序,用树状数组维护权值修改即可. [Wannafly挑战赛4F]线路规划 类似SCOI2016萌萌哒一题,并查集\(f_{i,j}\)表示从

退役前的做题记录3

[CERC2017]Gambling Guide 设 \(f_u\) 表示 \(u\) 到 \(n\) 的期望. \(f_n=0\) \[f_u=1+\sum_{v\in suf_v}\frac{min(f_u,f_v)}{d_u}\] \[\rightarrow f_u=1+\sum_{v\in suf_u,f_v<f_u}\frac{f_v}{d_u}+\sum_{v\in suf_u,f_v\ge f_u}\frac{f_u}{d_u}\] \[\rightarrow f_u=\sum_{

csp退役前的做题计划1(真)

csp退役前的做题计划1(真) 因为我太菜了,所以在第一次月考就会退役,还是记录一下每天做了什么题目吧. 任务计划 [ ] Z算法(Z Algorithm) 9.28 [x] ARC061C たくさんの数式 / Many Formulas [x] ARC061D すぬけ君の塗り絵 / Snuke's Coloring [x] ARC061E すぬけ君の地下鉄旅行 / Snuke's Subway Trip [x] ARC061F 3人でカードゲーム / Card Game for Three [

省选前的做题记录(Round2)

[CF1109B] Sasha and One More Name 先把无解情况aaabaaa.aaaaaa判掉,然后我们可以证明答案不会超过2. 对于一个回文串,两个指针从两端向内移动直到字符发生变化,在这里看一刀然后交换左右两端即为一种合法方案. 所以我们只需要判断答案是否能为\(1\),暴力判即可. [CF1109C] Sasha and a Patient Friend 假设我们有一个序列数据结构,那么先考虑每个结点需要维护哪些值才能支持合并左右儿子. 维护: 当前点时刻\(time\)

二轮前的做题记录

记录一下做过的题目和简要题解,复习的时候多看看 1.数对子 题意:定义一个数对$(x,y)$是好的,当且仅当$x\le y$且$x\;xor\;y$二进制下有奇数个$1$,现在给定$n$个区间$[l_i,r_i]$,对每个$i(1\le i\le n)$求出区间内好的数对的个数 题解:首先可以发现答案一定是由二进制下$1$的个数为奇数的数个数乘以偶数的个数,考虑怎么去统计 我们发现$(0,1)(2,3)(4,5)...(2k,2k+1)$每相邻两个数都是由一个二进制下$1$的个数为奇数的数和一个

【BZOJ做题记录】07.07~?

在NOI一周前重开一个坑 最后更新时间:7.07 11:26 7.06 下午做的几道CQOI题: BZOJ1257: [CQOI2007]余数之和sum:把k mod i写成k-k/i*i然后分段求后面的部分就好了 BZOJ1258: [CQOI2007]三角形tri:在草稿纸上按照位置和边找一下规律就好了 BZOJ1260: [CQOI2007]涂色paint:简单的区间DP BZOJ1303: [CQOI2009]中位数图:小于中位数的改为-1大于的改为1,算一算前缀和然后哈希一下乘一乘就好

project euler做题记录

ProjectEuler_做题记录 简单记录一下. problem 441 The inverse summation of coprime couples 神仙题.考虑答案为: \[\begin{array}{c} S(n) & = & \sum_{i = 1} ^ n \sum_{p = 1} ^ i \sum_{q = p + 1} ^ i \frac {1}{pq}[p + q \geq i][gcd(p, q) = 1] \& = & \sum_{i = 1} ^

后缀自动机做题记录

目录 后缀自动机做题记录 sp1811 sp1812 sp10570 luogu 2463 CF873F TJOI2015 弦论 AHOI2013 差异 HEOI2016/TJOI2016 字符串 HAOI2016 找相同字符 SDOI2016 生成魔咒 ZJOI2015 诸神眷顾的幻想乡 留坑待填 广义SAM 其他 NOI原题练习 后缀自动机做题记录 来填之前的坑了...考后大概会做做有字符串的综合题吧 sp1811 lcs板子,对于第一个串建出SAM,第二个串在上面跑,即可求出对于每一个位置

清华集训2014 做题记录

清华集训2014做题记录 已完成 [清华集训2014]玛里苟斯 [清华集训2014]主旋律 [清华集训2014]奇数国 [清华集训2014]矩阵变换 [清华集训2014]sum [清华集训2014]虫逢 [清华集训2014]玄学 [清华集训2014]文学 未完成 [清华集训2014]卡常数 [清华集训2014]简单回路 [清华集训2014]Router [清华集训2014] Breaking Bomber 写一题要膜一题题解,膜完题解膜代码,膜完代码膜指导,膜了好几天了还有四个题没做. [清华集