关闭
当前搜索:

[普通型母函数+容斥+FFT]BZOJ 3771:Triple

看到ZZK大佬的blog写的太好啦,所以就“转”来了。 题目概述 CHNJZ有nn把价值不一样的斧子,ZigZagK偷走了11把或22把或33把,对于每个可能的总损失,计算有几种可能的方案。 解题报告 emm……显然是母函数啊?但是有数量限制。由于最多偷走三把,所以我们可以直接三种情况都讨论过去。 11把:母函数:A(x)=xa1+xa2+xa3+...+xanA(x)=x^{a_1...
阅读(90) 评论(0)

[二进制分组维护凸包]BZOJ 4140—— 共点圆加强版

[二进制分组维护凸包]BZOJ 4140—— 共点圆加强版题目描述在平面直角坐标系中,Wayne需要你完成n次操作,操作只有两种:1.0 x y。表示在坐标系中加入一个以(x, y)为圆心且过原点的圆。2.1 x y。表示询问点(x, y)是否在所有已加入的圆的内部(含圆周),且至少在一个圆内部(含圆周)。为了减少你的工作量,题目保证圆心严格在x轴上方(纵坐标为正),且横坐标非零。解题思路如果不强制...
阅读(327) 评论(1)

[巴什博奕]HDU 2147——kiki's game

题目描述给你n*m表格,初始在右上角,每次在上个人移动后的基础上移动一步(向左or向下or向左下)先到左下角则获胜。解题思路先来说说巴什博奕。给出n个数,每次可以取x个(1<=x<=m)。显然可以按m+1分,每次操作看对手上次操作,保持和为m+1,如果n为m+1的倍数后手显然必胜。得到如果n不为m+1的倍数,先手必胜。回到这题,必胜策略为每次保持行数列数为奇数,如果n,m为奇数后手显然必胜,否则先手...
阅读(118) 评论(0)

[威佐夫博奕]POJ 1067——取石子游戏

题目描述有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。解题思路裸的威佐夫博奕。#include #include #inc...
阅读(967) 评论(0)

[Dsu on tree]CodeForces 600 E

题目描述给出一个树,树的每个节点有一个颜色。询问每个节点颜色最多的颜色编号和。解题思路树上启发式合并?考虑暴力,对于每个节点暴力遍历,之后删除该子树的贡献。不然发现有些删除没有必要,贪心的思想,对于每棵子树保留重儿子的贡献。所以操作为:遍历所有轻儿子不保留贡献,遍历重儿子保留贡献,遍历轻儿子增加贡献,得到该树答案。时间复杂度:考虑每个节点遍历的次数,显然是到根节点的轻边个数加重链个数+1,所以效率就...
阅读(78) 评论(0)

[最小割]BZOJ 3175—— [Tjoi2013]攻击装置

题目描述给定一个矩阵,这个矩阵上有一些位置可以放置装置。装置会日字形互相攻击,求最多可放置多少个装置。解题思路因为日字形相互攻击的两个点肯定满足一个坐标和是奇数,另一个是偶数。将矩阵看成零一奇偶矩阵,那么互相攻击的装置可以形成一个二分图。答案显然是总数-最小割。怎么思考?最小割不存在同时选择两个装置且互相攻击(因为不满足最大流)。#include #include...
阅读(280) 评论(1)

[点分治]BZOJ 2152——聪聪可可

题目描述给出一棵有边权的树。求边权和%3=0的路径数。解题思路累计以每个点为路径LCA的方案数,所以直接点分就好了。累计方法为分别找出距离某个点路径和为0,1,2的方案数,返回2∗t[1]∗t[2]+t[0]∗t[0]2*t[1]*t[2]+t[0]*t[0]然后减去所以子树方案就是当前方案。#include #include using namespace s...
阅读(264) 评论(0)

[虚树+树形DP]BZOJ 2286—— [Sdoi2011]消耗战

题目梗概给出一棵有比边权的树。每次给出K个点,询问使这K个点不与1联通所需要砍掉的边权总和最小值。解题思路假如只有一次询问,显然可以用树形DP解决,f[i]f[i]表示使i的子树下所有特殊点与1不连通的最小代价,转移状态显然。但是多次询问会超时,但是∑K\sum K与n同阶,所以就变成虚树的裸题。虚树的基本思想是,每次询问不需要遍历所有点,于是我们只存关于特殊点的图,边权显然是路径上的最小边权。关于...
阅读(172) 评论(0)

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

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

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

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

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

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

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

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

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

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

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

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

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

[单调队列]51 Nod 1952——栈题目梗概要维护一个栈。能够从栈顶和栈底加数,并能从栈顶取数。询问每次操作后栈里的最大元素。解题思路维护一个单调递减的单调队列就可以了。但是要注意统计每个元素前面有几个未删的比当前元素小的元素个数。#include using namespace std; const int maxn=10000005,MOD=1e9+7; int n,A,B,...
阅读(345) 评论(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...
阅读(758) 评论(0)
158条 共8页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:68015次
    • 积分:2327
    • 等级:
    • 排名:第18993名
    • 原创:157篇
    • 转载:1篇
    • 译文:0篇
    • 评论:48条
    我的日记
    博客专栏