5.30杂题选讲

前三题为水题,后面两题更有意思。

然而代码全都咕咕咕了,也许以后会补。

Hdu1520 Anniversary party

简单树形DP。

Hdu6386 Age of Moyu

简单最短路。

bzoj3679 数字之积

简单数位DP。

CF Gym 101482G Gathering

首先对于每个点,可行的区域显然是个矩形,那么可以先对这些矩形求交,得到合法区域。

如果不考虑限制,那么最优点显然是\(x,y\)的中位数。

考虑限制之后,只要定下\(x\),那么最优的\(y\)也是确定的。

而且,可以证明,这一定是一个凹函数,可以三分。

那么就做完了。

T5

链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4211

首先发现一件事:一个点的权值就是原点走到它的方案数。

换句话说,就是\(\frac{(\sum x)!}{\prod x!}\)。

考虑\(x!\)中\(p\)的个数,有一个这样的式子:
\[
ans=\sum_{i>0} \lfloor x/p^i\rfloor
\]
考虑把\(x\)在\(p\)进制下拆开为\(x=\sum_i w_i\times p^i\),那么有
\[
ans=\sum_{i>0} w_i\sum_{k=1}^i p^{k-1}=\sum_{i>0}w_i\frac{1-p^i}{1-p}=\frac{1}{p-1}(x-\sum_{i} w_i )
\]
也就是只与\(x\)和\(x\)的数位和有关(记数位和为\(f(x)\))。

那么一个点的权值不含有\(p\),当且仅当\(f(\sum x)=\sum f(x)\),也就是所有\(x\)加起来没有进位。

那么就可以数位DP了:把所有\(n\)维放在一起DP,记录当前到第几位、之前哪些维顶到了上界。

每次做一位时相当于做个背包,但似乎转移时需要差分以降低复杂度。

最后需要容斥一下搞掉下界,也许也可以把是否顶到下界压进状态里。

并不知道复杂度是多少qwq

原文地址:https://www.cnblogs.com/p-b-p-b/p/10963550.html

时间: 2024-08-26 07:36:59

5.30杂题选讲的相关文章

正睿OI DAY3 杂题选讲

正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n\leq k^2\) 暴力 \(n\geq k^2\),找点x,求直线l经过x,且点数最多,点数\(\geq k+1\),递归,否则再找一个 One Point Nine Nine 现在平面上有\(n\)个点,已知有一个常数\(D\). 任意两点的距离要么\(\leq D\),要么\(\geq 1.

洛谷 P1595 信封问题(周五杂题选讲)(错排公式)

题目描述 某人写了n封信和n个信封,如果所有的信都装错了信封.求所有信都装错信封共有多少种不同情况. 输入输出格式 输入格式: 一个信封数n(n<=20) 输出格式: 一个整数,代表有多少种情况. 题解 本题即为伯努利信封问题 360百科:错排公式 STD 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int b(int n) 5 { 6 if (n==1) return 0; 7 else if (n==2) r

「总结」杂题选讲

Bitwise Xor 我们可以发现一个序列中的最小的异或值是两个大小相邻的数的\(xor\)取\(min\). 那么我们对序列排序. 只需要计算相邻的\(xor\)是大于等于\(k\)的方案. \(dp[i]\)是以\(i\)结尾最小\(xor\)大于\(K\)的方案. 然后我们可以类似于用树状数组来搞最长升降转移. 这次用\(trie\)来转移. MOD Problem 大水题 \[\begin{aligned} ans&=\sum\limits_{i=1}^{n}n\ mod\ I\&

ZROI 19.08.02 杂题选讲

给出\(n\)个数,用最少的\(2^k\)或\(-2^{k}\),使得能拼出所有数,输出方案.\(n,|a_i|\leq 10^5\). 显然一个绝对值最多选一次.这个性质非常强. 如果所有都是偶数,可以直接除以\(2\). 否则\(1\)或\(-1\)必须选,暴力枚举选哪个然后递归,每层去重,发现最多只会递归\(\log a\)次.总复杂度\(O((n+a)\log n)\),等价于线段树上区间长度总和. \(n\)个数,每次可以花费\(1\)的代价给某个数\(+1\)或\(-1\),问变成不

20190915杂题选讲

T1 设\(b_1=p_1^{a_1}p_2^{a_2}-p_n^{a_n}\),显然答案最大为\(\sum a_i\) 考虑让\(\sum a_i\)最大,那\(b_1\)不能有有超过5的质因子,因为\(2^2<5\).3的个数最多也只有一个,因为\(2^3<3^2\) 于是就可以dp,设\(f[i][j][k]\)表示填到第i个数,gcd可以表示为\(2^j3^k\)的答案,分类讨论转移一下,最后答案为\(f[n][0][0]\) code: #include <bits/stdc+

【最小生成树杂题】

这里谈一下最小生成树 生成树的概念:连通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树.生成树是连通图的极小连通子图.所谓极小是指:若在树中任意增加一条边,则将出现一个回路:若去掉一条边,将会使之变成非连通图. 生成树各边的权值总和称为生成树的权.权最小的生成树称为最小生成树. 最小生成树一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.常用于求最小生成树得算法包括kruskal(克鲁斯卡尔)算法或Prim(

[杂题]URAL1822. Hugo II&#39;s War

看懂题意的请直接跳过下一坨! 本人有表达障碍! ========================================== 题意: (题意真的很难很难懂啊!!!  去他娘的**) 有一个王国,王国里有一个国王(编号为1),他有(编号为2~n) n-1个臣子(这些臣子并不全和他有直接关系) 然后呢 国王要去打架,但是只有当他的x%个及以上的直系下属(与他有直接关系的臣子)做好打架的准备了,他才能去打架 他的直系下属也有下属,也要其中x%及以上的下属做好打架准备了,那些直系下属才会开始准备

杂题选录

LuoguP3948数据结构 10-20 是比较裸的差分题目,但是要注意在线查询的时候开始傻了,每次都暴力地从1到n搞一遍,还存在数组中每次都要清空...结果T了很多点. 其实在线查询的时候直接用变量+扫到r就行了. 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 5 using namespace std; 6 typedef long long ll; 7 8 int n,opt,tot,

_杂题_

杂题集 是个放题的好地方! **** 5.28 **** - BZOJ [3052] 糖果公园 - 据说是一道区间操作的综合题,但现在貌似蹦了? 现在还是太水,之后再来写吧. *************