首页 > 其他分享 >2023.12 杂题

2023.12 杂题

时间:2023-12-11 11:34:14浏览次数:40  
标签:Code min 2023.12 sum 建图 setminus subseteq 杂题

I found it hard, it's hard to find. Oh well whatever nevermind.

目录

CF1904E Tree Queries

Tag:T-欧拉序;S-线段树。

注意到 \(\sum k\) 和 \(n\) 同级,大抵是一个和 \(k\) 相关的做法,虚树大概是不可行的,所以考虑一些别的东西。

使用欧拉序描述整棵树,那么这个时候 \(x\) 所在的连通块可以划分成若干个欧拉序上面的区间,这个区间量级是 \(O(k)\) 的。

处理答案只需要离线询问后每次换根即可,这里的维护是容易的,Code,\(O(n\log n)\)。

CF1904F Beautiful Tree

Tag:G-优化建图;G-拓扑排序;A-倍增。

怎么感觉是简单题。

考虑 \(O(n^2)\) 怎么做,显然嗯建个图出来跑拓扑排序就秒杀了。

所以要做到 \(O(n\log n)\) 上我们的倍增优化建图就完事了哈哈,实在是有点难绷。

其实写起来有点像 ST 表优化建图?不管了反正就板子优化建图,Code

ABC332G Not Too Many Balls

Tag:G-网络流;D-背包。

hot tea!显然有网络流建模:

  • 建立二分图,左侧 \(n\) 个点,右侧 \(m\) 个点,以及源点 \(S\) 汇点 \(T\)。

  • 令 \(i\) 为第 \(i\) 个左部点,连边 \((S,i,A_i)\),令 \(j\) 为第 \(j\) 个右部点,连边 \((j,T,B_j)\)。

  • 连边 \((i,j,ij)\)。

直接求最大流肯定过不去,考虑有什么好的优化,直接在最大流角度有点 hard,考虑转最小割。

令左侧点集为 \(P\),右侧点集为 \(Q\),左侧和 \(S\) 连一起的点集为 \(X\),右侧和 \(S\) 连一起的点集为 \(Y\)。

那么最小割即:

\[\min_{X\subseteq P}\min_{Y\subseteq Q} (\sum_{i\in P\setminus X} A_i+ \sum_{j\in Y}B_j+ \sum_{i\in X}i\sum_{j\in Q\setminus Y}j) \]

直接做仍然很难做,考虑枚举 \(\sum_{i\in X}i\),则答案变为(令 \(L=\sum_{i\in X}i\)):

\[\begin{aligned} \min_{L=0}^{N(N+1)/2}\min_{X\subseteq P,\sum_{i\in X}i=L}\min_{Y\subseteq Q} (\sum_{i\in P\setminus X} A_i+ \sum_{j\in Y}B_j+ L\sum_{j\in Q\setminus Y}j)=\\ \min_{L=0}^{N(N+1)/2} (\min_{X\subseteq P,\sum_{i\in X}i=L}\sum_{i\in P\setminus X} A_i+ \sum_{j\in Q}\min(B_j,jL)) \end{aligned} \]

这个时候前后就拆成了两部分,第一部分可以背包解决,第二部分可以求出每个 \(j\) 在何时切换,然后扫一遍完事,总时间复杂度 \(O(N^3+M)\),Code

标签:Code,min,2023.12,sum,建图,setminus,subseteq,杂题
From: https://www.cnblogs.com/cnyzz/p/17893988.html

相关文章

  • 2023.12.10——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.c#明日计划:学习......
  • 「杂题乱刷」CF1904B
    题目链接CF1904BCollectingGame题意简述给你一个由\(n\)个正整数组成的序列\(a\)和一个分数。如果你的分数大于或等于\(a_i\),那么你可以将分数增加\(a_i\),并从序列中删除\(a_i\),你需要求出对于每一个\(a_i\)为你的分数时你可以从这个序列中删除数的最大数量。解题......
  • 2023.12.03
    压线圈到了MXOI的奖学金。最近whk太忙了,还得准备月考,没太多时间整理很多东西,但是这个还是得整理一下。感觉这场比赛还是挺赚的,见识了一下lxl最近的命题思路,只能说物超所值了。A.avatar先二分,转判断问题。然后发现转成wll就是所有\(|x_i-x_j|<v(t_i-t_j)\)的连边。想......
  • 2023.12.9——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.c#明日计划:学习......
  • 2023.12.9补题
    一.关于优先队列的题目atcoder周赛题目   总结:本题利用用优先队列自动排序,首先我们需要明确的是先去更新小的,小的如果有更新不了的那么一定不会有人再和他融合了这样我们选择开一个大根堆greater,从小到大排列,然后我们开一个pair记录数值和出现次数,然后每次操作先判断他周......
  • 2023.12
    启动。DEGwer'sDoctoralDissertationCheeringContest好魔怔的比赛。E.HalfPalindromes先考虑单个\(f(l,r)\)的计算,有结论:我们一定会不断删最小的长度为\(k\)的前缀,满足前\(2k+1\)个字符是回文的。直到没有这样的\(k\)为止。证明也很容易,假设我们某一步删了长度......
  • 「杂题乱刷」洛谷P1216
    题目链接一道dp的入门题。\(O(2^n)\):考虑直接爆搜,可以考虑到所有情况。\(O(n^2)\):考虑\(dp\),设\(dp_{i,j}\)代表到达第\(i\)层第\(j\)个数所能达到的最大值。状态转移方程为\(dp_{i,j}=a_{i,j}+\max(dp_{i-1,j-1},dp_{i-1,j})\)。最终答案就是\(\max(dp_{n,1},d......
  • 「杂题乱刷」洛谷P1544
    题目链接数字三角形的变形。直接在原来的基础上加个判断\(3\)倍的就行了。参考代码:点击查看代码#include<bits/stdc++.h>usingnamespacestd;longlongn,m,ans=-1e18,a[110][110],dp[110][110][5010];#definelc(x)x<<1#definerc(x)x<<1|1#definelowbit(x)x&-......
  • 2023.12.7 挑战杯题解
    选择题T1有序实数对即为数,坐标系中的点\(P\)即为形。故选择A。T2\(9.46\times10^{12}=9460000000000\)为\(13\)位数所以选D。T3如图所示,过点\(D\)作\(DE\botAB\),设\(AE=x\),在\(Rt\DeltaADE\)中利用勾股定理列方程为\((x-1)^2+10^2=x^2\),解得\(x=\frac{101}{2......
  • 「杂题乱刷」洛谷P2285
    题目传送门一道小清新动态规划题,直接设\(dp[i]\)表示前\(i\)个鼹鼠最多能打到几个,然后状态转移方程也很好想了。参考代码:点击查看代码#include<bits/stdc++.h>usingnamespacestd;longlongn,m,ans,dp[10010],x[10010],y[10010],times[10010];#definelowbit(x)x&-......