关闭

[分块]51 Nod——1225 余数之和

题目梗概例如F(6) = 6 % 1 + 6 % 2 + 6 % 3 + 6 % 4 + 6 % 5 + 6 % 6 = 0 + 0 + 0 + 2 + 1 + 0 = 3。给出n,计算F(n), 由于结果很大,输出Mod 1000000007的结果即可。解题思路x%y运算其实可以看成x−x/y∗yx-x/y*y,这里的除是整除。那么对于整除x等于固定值的数我们可以一起统计,这些数显然是一个区间,我...
阅读(198) 评论(0)

[贪心+单调队列+ST算法]51 nod 1288 ——汽油补给

题目梗概有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2…… -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T。给出每个城市到下一个城市的距离D,以及当地的油价P,求走完整个旅途最少的花费。如果无法从起点到达终点输出-1。解题思路ZZK大佬说这是N年前做过的一道题目,但是我并没有看出来。贪心比较明显,对于一个点,我们可以知道它最远能到哪个点,这样形成一个区间。如果存...
阅读(155) 评论(0)

[最小割]BZOJ 1497——[NOI2006]最大获利

题目梗概有m个通讯,你可以获得一定的利润。但是通讯必须开通ai,biai,bi两个中转站,开通中转站需要额外的费用。问你能获得最大的利润是多少。解题思路你要换个角度思考这个问题,把边看成一个点。如果要获得这个点的值就必须开通另外两个点。这样显然会形成一张二分图,但是我们会在这张图上进行取舍。显然每种取舍方式都对应一种最小割。以上只是简略的概述了这个思想,详见胡伯涛的《最小割模型在信息学竞赛中的应用》...
阅读(298) 评论(0)

[树形DP]51 Nod 1500——苹果曼和树

题目梗概有一个n个节点的树,每个节点都有黑色或白色。问有多少种删边方式,使得删完后的每棵树有且仅有一个黑点。解题思路没什么好suo的,直接树形DP。#include #define LL long long using namespace std; char nc(){ static char buf[100000],*l=buf,*r=buf; if (l==r)...
阅读(313) 评论(0)

51 Nod 1616——最小集合

题目梗概现在有一个集合,对于任意的x,y,gcd(x,y)也在这个集合中。给出原集合中一部分的数,求原集合的最小大小。解题思路因为ai的范围感人,所以肯定能枚举原集合中元素然后判断是否存在。考虑如何判断。显然只要关于xx的倍数的gcd==xgcd==x那么xx肯定存在。所以暴力维护就可以了。#include #include using namespace std; c...
阅读(262) 评论(0)

[并查集]51 Nod 1525——重组公司

题目梗概普通的并查集问题?多了一种区间合并的操作。解题思路还是很水。维护每个点前面最近的没合并的节点是谁就可以了。#include using namespace std; char nc(){ static char buf[100000],*l=buf,*r=buf; if (l==r) r=(l=buf)+fread(buf,1,100000,stdin);...
阅读(247) 评论(0)

[数学杂题]51 Nod 1765——谷歌的恐龙

题目梗概给出一个数n,每次随机[0,n)[0,n)之间的一个数,如果随机到给出的mm个数之一就停止。求随机出来的数字的期望。解题思路真TM智障,我想了很久……能够继续下一次操作的概率为p=(n−m)/mp=(n-m)/m显然答案就是1∗1n∗S+p∗1n∗S+p2∗1n∗S……1*\frac{1}{n}*S+p*\frac{1}{n}*S+p^2*\frac{1}{n}*S……其中SS表示所有数的和...
阅读(210) 评论(0)

51 Nod 1563——坐标轴上的最大团

题目梗概坐标轴上有n个点,每个点有一个权值。如果两个点满足|xi−xj|>=wi+wj|xi-xj|>=wi+wj ,那么就在这两个点上建边。求图中最大团的大小。解题思路转换条件,如果两个点满足xj−wj>=xi+wi||xi−wi>=xj+wjxj-wj>=xi+wi||xi-wi>=xj+wj那么就有边。因为wi>0wi>0,所以必然有xi+wi>xi−wixi+wi>xi-wi,那么条件可以看...
阅读(164) 评论(0)

[乱搞]51 Nod 1859—Clarke and number

题目梗概给定一个数,可以对这个数做一下两种操作:x=x−kx=x-kx=⌊n√⌋2x=\lfloor \sqrt n \rfloor ^2用最小的步数使n->0。解题思路对于第二种操作,就是将x变为小于等于x的最大的平方数。显然两种操作需要交替操作。方法很简单,注意特殊情况就可以了。#include #define LL long long using namespace std;...
阅读(108) 评论(0)

[欧拉回路]51 Nod 1967——路径定向

题目梗概给出一张有向图,更改其中一些边的方向,最大化出度等于入度的点的个数。解题思路如果所有点出度等于入度,那么这张图构成欧拉回路。于是我们连接图中的奇点,使原图成为欧拉回路。然后遍历这个图,确定每条边的方向,奇点的边显然不对答案造成影响。Ps:这题出题人心态不对,时限卡的非常猥琐。#include using namespace std; const int maxn=100005...
阅读(255) 评论(0)

[最大生成树+LCA]NOIP 2013——货车运输

[最大生成树+LCA]NOIP 2013——货车运输题目梗概给出一张有权无向图。每次询问x->y的所有路径,最小值边权最大的路径。解题思路构造一棵最大生成树(可能是多棵)。每次在树上求一条路径的最小值就可以了。#include #include #include #include using namespace std; cons...
阅读(237) 评论(0)

[2-sat]codeforces 875 C——National Property

题目梗概给出一些小写字符串,要求把一些单词改成大写,使得这些字符串的字典序与输入给出顺序相同。解题思路对于一个字符只有改和不改两种状态,所以马上想到2-sat。考虑如何建边,对于相邻的两个字符串,假设找到最近的不相同的两个字符a.b。如果a>b,那么a必须改大写,且b必须改小写。如果a#include #include #include #inclu...
阅读(255) 评论(0)

[树链剖分]bzoj 4034—— [HAOI2015]树上操作

题目描述有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。解题思路树链剖分的裸题。更改一棵子树的值,就是在DFS序上更改一段区间。询问时,每条重链其实也可以看成一段区间,构造DFS先遍历重儿子就可以...
阅读(30) 评论(0)

[树hash]BZOJ 4337——BJOI2015 树的同构

题目梗概对于两个树T1和T2,如果能够把树T1的所有点重新标号,使得树T1和树T2完全相同,那么这两个树是同构的。有M个有根树,请你把它们按同构关系分成若干个等价类。解题思路第一次写树hash。对于一棵树,先把所有子树hash一下,然后在合并成当前树的hash值。考虑如何合并。因为我们不能受遍历顺序的影响,所以应该先排序。然后对于每个子树的hash值再分别乘p,显然这个p不能相同,所以提前构造素数表...
阅读(274) 评论(0)

[凸包]BZOJ 1670——[Usaco2006 Oct]Building the Moat护城河的挖掘

题目梗概给出一堆点,求把这些点包起来的最小边长。解题思路题目描述的就是凸包所解决的问题。因为NOIP要到了,所以复习一下凸包。#include #include #include using namespace std; const int maxn=5005; struct jz{ double x,y; jz(double x=...
阅读(36) 评论(0)
126条 共9页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:40274次
    • 积分:1733
    • 等级:
    • 排名:千里之外
    • 原创:125篇
    • 转载:1篇
    • 译文:0篇
    • 评论:46条
    我的日记
    博客专栏