uoj386 【UNR #3】鸽子固定器】的更多相关文章

题目链接 \(Description\) 选最多\(m\)个物品,使得它们的\((\sum vi)^{dv}-(s_{max}-s_{min})^{du}\)最大. \(Solution\) 先把物品按s排序就可以直接判断后一项. 我们发现当要判断的区间的长度\(\leq m\)时,区间内的所有数都要选(后一项都确定了). 当区间长度\(>m\)时,自然是选\(v\)最大的\(m\)个.可以用链表把\(v\)最小的逐个删去. 发现删掉\(x\)的话我们只需要用\(x\)附近\(m\)个数更新答案…
#386. [UNR #3]鸽子固定器 题目链接 官方题解 分析: 神奇的做法+链表. 首先按照大小排序. 对于小于选择小于m个物品的时候,这个m个物品一定是一段连续的区间.因为,如果中间空着一个物品没选,而有没选到m个,还可以再选,于是选上空着的,不会增加花费,还增加了价值,所以可以直接枚举一个左端点,一个右端点,确定所有长度小于等于m个区间,然后计算即可. 如果等于m个物品,在上面的区间上可能不是连续的了.于是我们考虑选的这m个物品中的牢固度最小的x,然后再选m-1的物品(牢固度)比它大的.…
[UOJ#386][UNR#3]鸽子固定器(贪心) 题面 UOJ 题解 一个不难想到的暴力做法是把东西按照\(s\)排序,这样子我们枚举极大值和极小值,那么我们选择的一定是这一段之间\(v\)最大的那\(m\)个东西. 考虑优化这个过程,我们枚举右端点,左端点向左移动,每次插入一个元素,用堆来维护选择的过程.这样子复杂度可以做到\(O(n^2logn)\). 考虑继续优化这个过程,首先如果右端点一旦被弹出堆这个过程就可以终止了,这个很显然. 通过这个过程,我们也可以明白如果选择的个数不超过\(m…
题意 题目链接 为了固定S**p*鸽鸽,whx和zzt来到鸽具商店选购鸽子固定器. 鸽具商店有 nn 个不同大小的固定器,现在可以选择至多 mm 个来固定S**p*鸽鸽.每个固定器有大小 sisi 和牢固程度 vivi. 如果他们选购的固定器大小不一或是不牢固,固定S**p*鸽鸽的时候肯定会很头疼,所以定义选择的物品总牢固程度和的 dvdv 次方减大小极差的 dsds 次方为这个方案的价值,求不同选购方案中,价值的最大值. Sol 非常好的一道猜结论题 如果我们按$s$排序后,我们就可以枚举$m…
题目描述 有 \(n\) 个物品,每个物品有两个属性:权值 \(v\) 和大小 \(s\). 你要选出 \(m\) 个物品,使得你选出的物品的权值的和的 \(d_v\) 次方减掉大小的极差的 \(d_s\) 次方最大. \(n\leq 200000,m\leq 50,1\leq d_v,d_s\leq 2\) 题解 1. 如果选的物品的数量不到 \(m\) 个,且大小不是连续的,那么一定不是最优的. 因为如果不是连续的,那么可以多选一个大小在这些物品之间的物品,使答案更优. 2. 如果选了 \(…
link (似乎很久没写题解了) 题意: n个物品,每个物品有a,b两个值,给定A,B,现在最多选其中m个,要求最大化选出的物品中[b权值和的B次方-a极差的A次方]. $n\leq 2\times 10^5,m\leq 50.$ 花絮: 大概全场最早ac的两人是miaom&wzf2000,用了非标算的“神奇的做法”,太强辣. 题解: 按照a排序以后转化为选定一个区间以后最大化区间内部的b权值和. 然后考虑两种情况: 如果区间长度小于等于m,那么一定是选择连续一段. 否则,区间内部剩余没有选择的…
传送门 题解 //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i) #define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v) temp…
题解 堆+贪心 题意就是给你\(n\)个物品,让你最多选\(m\)个 每个物品有两个属性\(a_i,b_i\) 最大化\((\sum_{a_i})^{dv}+(max(b_i)-min(b_i))^{ds}\) 首先后面的那个东西看着不是很舒服 但是按照\(b\)为关键字排个序就可以消除\(b\)的影响了 那么我们只考虑\(a\)即可 以后我们可以发现答案所选择的物品一定是一个区间内最大的\(k\)个物品 所以我们可以固定一个右端点 然后不断向左扫去找前\(k\)大的值 这个东西可以用一个小根堆…
地址:http://uoj.ac/contest/45 第一题是鸽子固定器. 只会10分.按 s 从小到大排序,然后 dp[ i ][ j ][ k ] 表示前 i 个元素.已经选了 j 个.最小值所在位置是 k 的最大代价. #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; int rdn() { ;;char ch=getc…
方法1路由配置 在路由器配置 进入虚拟服务器 填入ip 端口 就可以了方法2内网域名解析想以前的花生客 科迈都有这项免费业务但现在基本不提供了如果那个网站还有内网解析的功能 大家一定要发上来哦方法3portmap先增加一个配置 填入输入的ip和端口.输出ip和端口然后点远程作为公网映射的ip与系统用户名和密码即可方法49999断口用s扫描器扫到9999端口 然后结合下面的方法7将扫到的机器用灰鸽子内网映射器进行映射方法5用lcx.exe进行映射将lcx.exe上传到公网机器上在公网机器的cmd下…
·从前有一个鸽子Lence,它吃了一个炸弹,然后有人出了这道题. ·英文题,述大意:        给出一张连通无向图,求出:对于每个点,删去这个点(以及它相连的边以后)时,当前图中的连通块数量,这个值作为该点的Lence值.输出根据Lence值从大到小(相同时标号从小到大)的前m个点和它的Lence值. ·分析:       关于连通块问题,可以寻得三种方法:       ①嘎嘣脆算法(Gabow)②塔尔杨算法(Tarjan)③Kosaraju算法.        此处大米饼采用Tarjan算…
UOJ #449. [集训队作业2018]喂鸽子 小Z是养鸽子的人.一天,小Z给鸽子们喂玉米吃.一共有n只鸽子,小Z每秒会等概率选择一只鸽子并给他一粒玉米.一只鸽子饱了当且仅当它吃了的玉米粒数量\(≥k\). 小Z想要你告诉他,期望多少秒之后所有的鸽子都饱了. 假设答案的最简分数形式为\(\frac{a}{b}\),你需要求出\(w\),满足\(a≡b⋅w \pmod{998244353}(0≤w<998244353).\) \(n\leq 50,k\leq 1000\) Orz 首先可以用\(…
题意 有 \(n\) 只鸽子,每只鸽子需要 \(k\) 粒玉米才能喂饱.问每次随意喂给 \(n\) 个鸽子中的一个,期望多久所有鸽子都被喂饱. 对于 \(998244353\) 取模. 数据范围 \(n \le 50, k \le 1000\) 题解 \(\mathcal O(n^2k \log k)\) 题目问的是最晚喂饱的鸽子,我们用 \(\min - \max\) 反演变成对于每个集合问最早被喂饱的鸽子. 不难发现只有集合大小是有用的,我们等价于算: \[ ans = \sum_{c =…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ449.html 题解 设 f(i) 表示给 i 只鸽子喂食使得至少一只鸽子被喂饱的期望次数,先 min-max容斥 一下.($\frac ni$ 表示期望每 $\frac ni$ 步喂这 i 只鸽子一次) $$ans = \sum_{i=1}^n (-1)^{i+1}\binom ni \frac ni \cdot f(i)$$ 考虑如何求 f(i) .假设我们喂饱的是第一只鸽子,那么假设我们喂了其他鸽子 j 次,那么…
[UOJ#311][UNR #2]积劳成疾(动态规划) UOJ Solution 考虑最大值分治解决问题.每次枚举最大值所在的位置,强制不能跨过最大值,左右此时不会影响,可以分开考虑. 那么设\(f[i][j]\)表示长度为\(i\),且最大值不超过\(j\)的所有方案之和. 因为最大值有多个,所以我们钦定每次选择最靠右的那个,所以转移就是: \[f[i][j]=f[i][j-1]+\sum_{k=1}^if[k-1][j]*f[i-k][j-1]*w[j]^{c}\] 即钦定为最靠右的那个最大…
[uoj#310][UNR #2]黎明前的巧克力 FWT - GXZlegend - 博客园 f[i][xor],考虑优化暴力,暴力就是FWT xor一个多项式 整体处理 (以下FWT代表第一步) FWT之后,一定只有-1,3 而FWT的和等于和的FWT 所以做和,然后FWT一下 列方程就可以得到每一位的-1和3的个数了 而对于一些多项式,分别FWT.IFWT和FWT后乘起来再IFWT是一样的 我们已经快速幂得到n个多项式FWT的乘积了 再做一次IFWT即可 还是想到FWT集体处理,必然要注意顺…
[UNR #1]火车管理(主席树) 好好的代码被 \(extra\ test\) 卡常了...我就放一个目前最快的版本吧... 题意简化: 有 \(n\) 个栈,\(m\) 次操作. 将 \(x\) 压入 \([l,r]\) 的栈中 将 \(l\) 的栈顶弹出 询问 \([l,r]\) 栈顶的和 \(n,m\leq 5\times 10^5\) 虽然最优解是神仙二叉树,我只会主席树的解法... 显然 \(1,3\) 操作用一棵线段树就够了,\(2\) 操作需要另外一棵主席树,并且在历史版本上修改…
UOJ #390. [UNR #3]百鸽笼 题目链接 看这道题之前先看一道相似的题目 [PKUWC2018]猎人杀. 考虑类似的容斥: 我们不妨设处理\(1\)的概率. 我们令集合\(T\)中的所有鸽笼都在\(1\)变空之前不为空的,其它的鸽笼随便.要做到这一点,我们只需要令每个\(T\)集合中的鸽笼容量\(--\)就行了.然后我们用背包背出所有序列的方案数(不包括\(1\)),然后在将\(1\)插入序列中.插入时,将\(w_i-1\)个随便插入,然后再将一个放在序列末尾. 具体实现时,我们可以…
题面 传送门 思路 首先,这道题是可以暴力min-max反演+NTT做出来的......但是这个不美观,我来讲一个做起来舒服一点的做法 一个非常basic的idea:我们发现在一只鸽子吃饱以后再喂给它的玉米都是"无效"的,并且我们如此认为,那么有效的玉米数量是确定的:$nk$ 吃饱序列和投喂序列 那么,我们考虑一个序列$r_i$,表示第$i$次喂完玉米之前,有多少只鸽子是吃饱的,我们称之为吃饱序列 注意到本题中每只鸽子互不相同,因此我们再确定一个"有效喂鸽子操作"的…
[UOJ#310][UNR#2]黎明前的巧克力(FWT) 题面 UOJ 题解 把问题转化一下,变成有多少个异或和为\(0\)的集合,然后这个集合任意拆分就是答案,所以对于一个大小为\(s\)的集合,其贡献是\(2^s\). 于是我们可以弄出若干个\((1+2x^{a_i})\)这样子的多项式,然后异或卷积把它们卷起来就是答案. 根据\(FWT\)异或卷积的理论,如果\(i\)位置有一个\(1\),那么\(FWT\)之后对于\(j\)位置的贡献是\(-1^{pop\_count(i\&j)}\).…
[UOJ#308][UNR#2]UOJ拯救计划 题面 UOJ 题解 如果模数很奇怪,我们可以插值一下,设\(f[i]\)表示用了\(i\)种颜色的方案数. 然而模\(6\)这个东西很有意思,\(6=2*3\),所以我们只需要考虑其模\(2\)和模\(3\)的结果了. 而最终答案的贡献是\(\sum_{i=1}^k A_{k}^i f[i]\),当\(i\ge 3\)的时候\(6|A_k^i\),所以我们只需要知道\(f[0],f[1],f[2]\)的值. \(f[0]\)的值?当然是\(0\)啊…
[UOJ#390][UNR#3]百鸽笼(动态规划,容斥) 题面 UOJ 题解 发现这就是题解里说的:"火山喷发概率问题"(大雾 考虑如果是暴力的话,你需要记录下当前每一个位置的鸽笼数量,因为概率会随着你空的鸽笼的数量而变化. 我们可以把这个问题转变为给一个长度为\(N\)的序列填数的问题. 直接算似乎不是很好算(因为直接算是要钦定在最后,那么其他的东西放满之后每个位置被选择的概率会被改变),我们把最后一个被填满的恰好是\(i\),变成至少有一个集合\(S\)在\(i\)后面被填满. 因…
[UOJ#389][UNR#3]白鸽(欧拉回路,费用流) 题面 UOJ 题解 首先第一问就是判断是否存在一条合法的欧拉回路,这个拿度数和连通性判断一下就行了. 第二问判断转的圈数,显然我们只需要考虑顺时针过一条从源点出发的射线的次数减去逆时针过的次数就好了. 于是我们就要在欧拉回路合法的基础上算第二问. 首先如果欧拉回路合法,那么每个点的入度要等于出度,这个东西有点类似上下界网络流,即强制了每个点的度数的上下界.我们可以类似上下界网络流,先给每条边强行定向,对于入度出度差不为令的点,分别和源点和…
[UOJ#388][UNR#3]配对树(线段树,dsu on tree) 题面 UOJ 题解 考虑一个固定区间怎么计算答案,把这些点搞下来建树,然后\(dp\),不难发现一个点如果子树内能够匹配的话就一定会匹配完,所以\(dp\)可以做到线性. 那么根据上面的\(dp\)方式,一条边会被匹配到,当且仅当把这条边删掉之后,两个连通块内分别有奇数个目标点.那么如果我们考虑枚举每一条边,然后把子树内的点给标记一下,于是变成了在原序列上求有多少个偶数区间满足有偶数个点被标记,这个问题可以做一个前缀和,把…
「UNR#2」黎明前的巧克力 解题思路 考虑一个子集 \(S\) 的异或和如果为 \(0\) 那么贡献为 \(2^{|S|}\) ,不难列出生产函数的式子,这里的卷积是异或卷积. \[ [x^0]\prod_{i=1}^{n} (2x^{a_i}+1) \] 因为每一项只有两项 \(x^0,x^{a_i}\) 有值,记 \(f_i(x) =2x^{a_i}+1\), \(f'_i(x)=\text{Fwt}f(x)\) ,有 \[ f_i'(x)=\sum_{S} (1+2\times(-1)^…
「UNR#1」奇怪的线段树 一道好题,感觉解法非常自然. 首先我们只需要考虑一次染色最下面被包含的那些区间,因为把无解判掉以后只要染了一个节点,它的祖先也一定被染了.然后发现一次染色最下面的那些区间一定是一段连续的左儿子+一段连续的右儿子. 证明的话可以看官方题解,感性理解的话不难,同时,任意一段连续的左儿子+右儿子也对应一个区间.定义一个左儿子区间 \([l_i,r_i]\) 的后继是所有 \(r_i=l_i+1\) 的左儿子和右儿子,一个右儿子区间 \([l_i,r_i]\) 的后继是所有…
UOJ 思路 由于最近养成的不写代码的习惯(其实就是懒),以下式子不保证正确性. 上来我们先甩一个min-max容斥.由于每只鸽子是一样的,这只贡献了\(O(n)\)的复杂度. 现在的问题转化为对于\(n\)只鸽子里面的\(c\)只鸽子,求喂饱其中一只鸽子的期望时间. 我们对期望的式子差分一下,变成统计经过\(i\)秒之后\(c\)只鸽子仍然一只都没有被喂饱的概率. 枚举这\(i\)秒里面有\(s\)秒喂到了,设\(f_{c,s}\)表示给\(c\)只鸽子喂了\(s\)粒玉米,一只都没有饱的概率…
[UNR #2]黎明前的巧克力 首先可以发现,等价于求 xor 和为 \(0\) 的集合个数,每个集合的划分方案数为 \(2^{|S|}\) ,其中 \(|S|\) 为集合的大小 然后可以得到一个朴素 dp ,令 \(dp_{i,j}\) 代表前 \(i\) 个数字 xor 和为 \(j\) 的集合个数 显然转移为 \[ dp_{i,j}=dp_{i-1,j}+2dp_{i-1,j \ xor \ a_i} \] 从 FWT 的角度考虑,转移其实就是每次卷上 b \[ b_{0}=1,b_{a[…
题意:有n个鸽子,你每秒随机喂一只鸽子,每只鸽子吃k次就饱了.求期望多少秒之后全饱了.n <= 50, k <= 1000. 解:有两种做法.一种直接DP的n2k做法在这.我用的是Min-Max容斥 + NTT优化DP. 先Min-Max容斥,由于鸽子是等价的,所以相当于求m只鸽子期望多少秒之后有一只饱了. 讲不清楚...看题解吧. 注意题解中m个盒子的答案为什么放了i + 1个球,这是因为我们把最后一个球拿出来考虑了.所以唯一放满k个球的盒子的贡献是1 / (k - 1)! #include…
题面 养鸽人要监视他的鸽子,有n只鸽子站在平面上,他可以在m个给定的点上设置监视器,如果一只鸽子在某个监视器上或者在两个监视器所连直线上或者在三个监视器所连直线的三角形内则其就咕咕咕了,现在养鸽人要让所有鸽子咕咕咕,请问他最少需要设置多少监视器. 对于100%的数据n≤100000,m≤500,坐标绝对值不超过10的9次方. 100 首先转化一下题意,就是选取尽量少的点,然后生成一个凸包,包住给定的一个凸包. 显然在给定凸包内的点是没有用处的. 对于不在给定凸包内的点,我们枚举它们: 对于一个点…