关闭
当前搜索:

[基环外向树+树形DP]BZOJ 1040—— [ZJOI2008]骑士

题目描述有n个骑士,每个骑士有一个不想一起组队的人。每个骑士还有一个战斗力,求战斗力最大的队伍。解题思路把每个骑士和不想组队的骑士之间连边,会形成一堆基环外向树形成的森林。假设每个联通块是树,边数=n-1,显然不符合。假设每个联通块存在两个及以上的简单环,边数>n,也不符合。所以图必然是基环外向树形成的森林。先随意建树寻找返祖边,确定两个点和一条边。分别以这两个点为树根并砍掉这条边进行树形DP,f[...
阅读(23) 评论(0)

[二分+DFS序上DP]BZOJ 4753—— [Jsoi2016]最佳团体

题目梗概题目给定一棵树,选K个节点。任意节点满足如果它被选其父亲也必须被选。使得价值与花费之比最大。解题思路这类题目显然是要二分的。最初的想法,在树上进行左儿子右父亲DP合并,这样每次check的效率是O(n^2)。但是怎么卡就是不过(我下面给出的就是树上合并的代码)。我将其归结为常数过大,记住其效率是稳定的。因此引进DFS序上DP,可以想象常数极小。fi,jf_{i,j}表示DFS序的前i个选择j...
阅读(209) 评论(0)

[树形DP+贪心]BZOJ 1217—— [HNOI2003]消防局的设立 Plus?

题目描述给出一棵树。你可以设置一个特殊节点,距离这个节点小于等于2的节点被覆盖。求覆盖所有节点所需的最小特殊节点数。解题思路这题是51 Nod 夹克老爷的愤怒的弱化版。51Nod上的那题将范围推广至于n同阶的级别。主要就是利用贪心进行树形DP。#include using namespace std; const int maxn=100005,INF=2147483647; int...
阅读(21) 评论(0)

[数学杂题]BZOJ 2111—— [ZJOI2010]Perm 排列计数

题目梗概求[1,n]有多少个排列满足Pi>Pi/2P_i>P_{i/2}解题思路不难发现排列构成一个小根堆,因此树形可以确定。然后用f[i]f[i]表示以第i个节点为根的方案数。转移方程不难得出。最主要的是这题虽然P很大但是依然要用Lucas,为什么呢?因为处理n的阶乘时到后面%P会变成0,所以要限制阶乘的范围。WA了5发才反应过来。#include #include<algorit...
阅读(214) 评论(0)

[Lucas定理+中国剩余定理]1951—— [Sdoi2010]古代猪文

题目梗概求G∑d|n(nd)%PG^{\sum _{d|n} (^n_d)}\%P解题思路由欧拉定理可得原式=G∑d|n(nd)%ϕ(P)%P=G^{\sum _{d|n} (^n_d)\%\phi(P)}\%P(nd)(^n_d)由Lucas定理可得,然后ϕ(P)=999911658=2∗3∗4679∗35617\phi(P)=999911658=2 * 3 * 4679 * 35617可以用中国...
阅读(183) 评论(0)

[模拟退火]POJ 2420——A Star not a Tree

题目描述给定n个点,求关于这个n个点的广义费马点。题目梗概必须折服于先人的智慧。初值随便给个位置,每次随机一个角度走温度的距离。概率函数为eΔ/Te^{Δ/T}。过了之后感觉非常神奇。#include #include #include using namespace std; const int maxn=105; const double coe=...
阅读(280) 评论(0)

[Splay]BZOJ 1208——[HNOI2004]宠物收养所

题目描述最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a<2^31),而他也给每个处在收养所的宠物一个特点值。这样他就能够很方便的处理整个领养宠物的过程了,宠物收养所总是会有两种情况发生:被遗弃的宠物过多或者...
阅读(224) 评论(0)

[主席树]BZOJ 3524——[Poi2014]Couriers

题目描述给一个长度为n的序列a。1≤a[i]≤n。 m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。解题思路直接上主席树。构造权值线段树,询问时不停遍历节点数最多的一边就可以了。但是要注意:最后停下的节点并不是出现次数最多的节点但对于这道题,如果有解这种方法一定正确。#include using...
阅读(212) 评论(0)

[左偏树]BZOJ 2809——[Apio2012]dispatching

题目描述在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿。在这个帮派里,有一名忍者被称之为 Master。除了 Master以外,每名忍者都有且仅有一个上级。为保密,同时增强忍者们的领导力,所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其他的方式发送。现在你要招募一批忍者,并把它们派遣给顾客。你需要为每个被派遣的忍者 支付一定的薪水,同时使得支付的薪水总...
阅读(214) 评论(0)

[树状数组]51 Nod 1463——找朋友

题目描述给定:两个长度为n的数列A 、B一个有m个元素的集合K询问Q次每次询问[l,r],输出区间内满足|Bi-Bj|∈K 的最大Ai+Aj解题思路注意这题M的范围是10离线一下,对于每个新加的元素用树状数组暴力维护就可以了。#include #include using namespace std; const int maxn=100005; struct...
阅读(298) 评论(0)

[单调队列]51 Nod 1952——栈

[单调队列]51 Nod 1952——栈题目梗概要维护一个栈。能够从栈顶和栈底加数,并能从栈顶取数。询问每次操作后栈里的最大元素。解题思路维护一个单调递减的单调队列就可以了。但是要注意统计每个元素前面有几个未删的比当前元素小的元素个数。#include using namespace std; const int maxn=10000005,MOD=1e9+7; int n,A,B,...
阅读(276) 评论(0)

[容斥原理+组合数学]51 Nod 1829——函数

题目描述想知道f:A->B这个函数(其中|A|=n, |B|=m)的所有映射关系要使B的每个元素都要被A的一个元素覆盖到。数字可能很大你只要输出方案数模1,000,000,007即可。解题思路一看就是要用到容斥原理。有ii个B元素没被覆盖的方案数为Cim∗(m−i)NC^{i}_{m}*{(m-i)}^{N}容斥一下答案就出来了。#include #define LL long lo...
阅读(561) 评论(0)

[边双]hihocoder 1184——边的双连通分量

题目梗概裸的边双。解题思路没有桥的极大图就是边双。考虑怎么求桥。Tanjan的时候回不去的就是桥,即low[son[j]]>dfn[x]low[son[j]]>dfn[x]#include #include #include using namespace std; const int maxn=20005,maxm=200005; int t...
阅读(230) 评论(0)

[堆]51 Nod 1461——稳定桌

题目描述有一张桌子,有n个腿。第i根腿的长度是li。现在要拿掉一些腿,使得桌子稳定,拿掉第i根腿需要di的能量。稳定的条件是,假如拿掉若干条腿之后,桌子还有k个腿,那么长度最长的腿的数目要超过一半。比如桌子有5根腿,那么至少要有三根腿是最长的。另外,只有一根腿的桌子是稳定的,两个腿的桌子想要稳定,必需长度是一样的。你的任务是拿掉若干腿,使得桌子稳定,并且所消耗的能量要最少。解题思路考虑枚举长度,每个...
阅读(258) 评论(0)

[树状数组]51 Nod 1711——平均数

题目描述LYK有一个长度为n的序列a。你只要告诉他所有区间(n*(n+1)/2个区间)中第k大的平均数就行了。解题思路显然要二分,考虑如何验证。sum[R]−sum[L−1]>=x∗(R−L+1)——>sum[R]−x∗R>=sum[L−1]−x∗(L−1)sum[R]-sum[L-1]>=x*(R-L+1)——>sum[R]-x*R>=sum[L-1]-x*(L-1)那么就是求sum[i]−x∗i...
阅读(184) 评论(0)
150条 共10页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:54640次
    • 积分:2110
    • 等级:
    • 排名:千里之外
    • 原创:149篇
    • 转载:1篇
    • 译文:0篇
    • 评论:45条
    我的日记
    博客专栏