![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HDOJ
Nemaleswang
ACM退役狗一只
展开
-
hdoj 1533 && poj 2195 Going Home
题目连接:Going Home题目大意:现在有一张图,有n个房间和n个人,现在每个人移动的代价是1,只能上下左右移动,不能有相同的人在一个房间,问所有的人都进入房间的最小花费是多少题目思路:这种有限制而且还有花费的,我们不妨转化为最小费用最大流,我们用一个超级源点连接所有的人,容量为1,单位花费为0,然后用一个超级汇点被所有的房间连接,容量为1,单位花费为0,然后每个人和所有房间相连,容量为1,单位原创 2017-09-06 17:31:50 · 279 阅读 · 0 评论 -
hdoj 5883 The Best Path
题目链接:The Best Path题目大意:给你n个点,m条边,然后每条边连接某两个点,可以自环,每个点有一个权值,问能不能有路径经过所有的边且只经过一次,路径的路径权值为经过的所有的点的权值依次异或起来,问最大的路径权值为多少题目思路:首先我们找的路径是一个欧拉路径,而且所有的边得都在一个集合里面,也就是给的边得两个点一定在一个集合里面,如果有不在集合的边,直接输出Im原创 2017-05-06 22:02:11 · 446 阅读 · 0 评论 -
hdoj 6058(2017 Multi-University Training Contest - Team 3) Kanade's sum
题目链接:Kanade’s sum题目大意:给你一个n个数的数列,数列是n个数的某一个排列,枚举l,r,每个[l,r]区间里面第k大的数作为这个贡献,也就是算∑nl=1∑nr=lf(l,r,k)\sum_{l=1}^{n}\sum_{r=l}^{n}f(l,r,k)这个玩意,n的范围是5e5题目思路:暴力肯定T,没得说,因为是一个全排列,我们可以想到去算每个数是第k大的时候有多少次,然后这个东西怎么原创 2017-09-09 20:53:08 · 296 阅读 · 0 评论 -
hdoj 6060(2017 Multi-University Training Contest - Team 3) RXD and dividing
题目链接:RXD and dividing题目大意:有n-1个数2到n,现在需要你去切分这n-1个数为k个区间,区间可以为空,给出n-1条边,有边权,使得这些点组成一棵树,现在要你去算你分的每个区间的贡献,res res=∑ki=1f({1}⋃Si)res = \sum_{i = 1}^{k}{f(\{1\}\bigcup S_i)} f代表要使得所有的点都能直接或者间接相连,问需要那些边的边权原创 2017-09-09 21:06:02 · 218 阅读 · 0 评论 -
hdoj 6063(2017 Multi-University Training Contest - Team 3) RXD and math
题目链接:RXD and math题目大意:给你一个式子,∑nki=1μ2(i)×⌊nki−−√⌋\sum_{i = 1}^{n^k}{\mu^2(i) \times \lfloor \sqrt{\frac{n^k}{i}} \rfloor}(mu(i)是莫比乌斯函数),给出n和k,算出这个数%1e9+7题目思路:注意到一个数字xx必然会被唯一表示成a2×ba^2 ×b的形式.其中|μ(b)原创 2017-09-09 21:11:43 · 287 阅读 · 0 评论 -
hdoj 6066(2017 Multi-University Training Contest - Team 3) RXD's date
题目链接:RXD’s date题目大意:算大于等于35的有多少个数题目思路:RT#include <bits/stdc++.h>using namespace std;int main(){ int n,x; while(cin>>n){ int cot = 0; while(n--){ cin>>x;原创 2017-09-09 21:13:15 · 325 阅读 · 0 评论 -
hdoj 3836 Equivalent Sets
题目链接:Equivalent Sets题目大意:要证明两个集合A、B等价,需要得到X是Y的子集并且Y也是X的子集,现在有N个集合,M个条件,代表a是b的子集,问最少需要再添加多少条件使得所有N个集合都是等价的题目思路:X是Y的子集,也就是Y到X有一条有向边,那么题目就转换为了给你一个有向图,问最少添加多少条边使得所有的点都能到达任何另外的点,tarjan缩点,找出度为0和入度为0的最小值就可以了#原创 2017-09-18 20:28:03 · 518 阅读 · 0 评论 -
hdoj 5934 Bomb
题目链接:Bomb题目大意:现在有一些炸弹,有他的坐标,爆炸半径范围以及爆炸缩需要的价值,问要引爆所有的炸弹最少需要多少花费题目思路:因为A能引爆B导致B引爆C,所以A能引爆C,但是A引爆B不代表B能引爆A,因为爆炸半径不一样嘛,所以建有向边,强连通分量缩点,然后找入度为零的联通快,必须引爆,不然没办法全部炸掉,引爆的花费是这个联通块的里面所有点的最小价值,然后加起来就好了#include <map原创 2017-09-18 22:03:52 · 510 阅读 · 0 评论 -
hdoj 3549 Flow Problem
题目链接:Flow Problem题目大意:给你一张有向图,问你这张图从1到N的最大流题目思路:直接套板子写最大流就好了#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstdio>#include <cstring>#incl原创 2017-09-01 19:33:35 · 267 阅读 · 0 评论 -
hdoj 3572 Task Schedule
题目链接:Task Schedule题目大意:有n个任务和m个机器,一个任务需要ti的时间,只能从第s天开始,必须在第e天之前结束,问能不能把所有的任务都做完题目思路:我们可以想到去建网络流,建一个超级源点0,然后第i个任务为点i,连接他和源点,容量为任务需要的天数(流出去的量嘛),然后每个任务和他的天数集合(从起点到终点)相连,容量为1,然后所有的天数和总计汇点连接,容量是m(最多只有m个机器嘛,原创 2017-09-01 20:00:47 · 311 阅读 · 0 评论 -
hdoj 5980 Find Small A
题目链接:Find Small A题目大意:有n个数,问里面有多少个字节的97,转化成二进制然后8个字节算一次就好了题目思路:直接暴力算,比较每八个位和97的八位是不是相同就好了#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#include <cstring>#include <原创 2017-09-15 21:43:54 · 254 阅读 · 0 评论 -
hdoj 5979 Convex
题目链接:Convex题目大意:有一些围绕原点的距离为d的n个点,他们之间有n-1个度数给出来,现在求这个多边形的面积题目思路:当n-1三角形来算面积,加起来就好,三角形套正弦公式就好了#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#include <cstring>#inclu原创 2017-09-15 21:42:08 · 310 阅读 · 0 评论 -
hdoj 5978 To begin or not to begin
题目链接:To begin or not to begin题目大意:有1个红球和k个黑球,问先手的优势大还是后手优势大或者两个相同题目思路:多模拟几组情况就可以推出来情况了,奇数概率相同,否则概率相同#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#include <cstring>原创 2017-09-15 21:38:57 · 307 阅读 · 0 评论 -
hdoj 5988 Coding Contest
题目链接:Coding Contest题目大意:有n个区域和m条路,每个区域有a[i]个人和b[i]个食物,然后是m条路连接两个区域,这条路容量为cap,这条路断掉的概率为p,第一个经过的时候一定不会断,后面的人有概率p会断,现在需要所有人都吃上饭并且破坏网络的概率最小题目思路:我们是不能直接算破坏网络的,破坏了会对网络流产生影响,所以我们需要去算不能破坏的概率,我们知道一条路里面都不被破坏的概率是原创 2017-09-06 20:22:00 · 622 阅读 · 0 评论 -
hdoj 6045(2017 Multi-University Training Contest - Team 2) Is Derek lying?
题目链接:Is Derek lying?题目大意:两个人做选择题,只有ABC三种选项,然后现在有A和B两个人手上做的选择题的答案,即是两个字符串,然后给你A和B做对的选择题数量,A的数量一定正确,现在需要你去判断B的数量是否正确,那些题目做对不一定题目数量:我们可以很容易的想到因为A对的题目一定正确,所以我们可以比较这两个字符串,得到相同的和不同的题数,然后算上界和下界就好了,具体看代码就能懂了#i原创 2017-08-29 20:15:55 · 282 阅读 · 0 评论 -
hdoj 6047( 2017 Multi-University Training Contest - Team 2) Maximum Sequence
题目链接:Maximum Sequence题目大意:给定一个长度为n的a数组和b数组,要求a[n+1]…a[2*n]的最大总和。 限制条件为ai≤max{aj-j│bk≤j < i}题目思路:a[j](j>n)a[j](j>n)是从当前选择的a数组的b[k]个数开始,到最后一个数中选。由于每个b[k]都只能使用一次,我们要可能地把b[k]较大的数留在后面用,因为刚开始a数组只有n个,只有随着每次操作原创 2017-08-29 20:22:48 · 306 阅读 · 0 评论 -
hdoj 6050(2017 Multi-University Training Contest - Team 2) Funny Function
题目链接:Funny Function题目大意:给定一个公式,算某项题目思路:暴力打表,然后找规律 然后直接快速幂套板子就好了,记得算逆元(不过这规律一点也不好找。。。。)#include <map>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstdio>#include原创 2017-08-29 20:27:00 · 317 阅读 · 0 评论 -
hdoj 6053(2017 Multi-University Training Contest - Team 2) TrickGCD
题目链接:TrickGCD题目大意:给出一个长度为n的数组,让你构造出一个长度也为n的B数组,且B数组需要满足对于所有的1<=i<=n,A[i]<=B[i],且对于B数组,任意一个区间的gcd>=2,求满足的方案数题目思路:转化一下就变成了B数组整个区间的gcd>=2,然后直接枚举这个gcd从2到min(a[i]),然后容斥算一下贡献:当x为奇数个不同素数的积时,ans+=1*它对答案的贡献当x为偶原创 2017-08-29 20:34:26 · 550 阅读 · 0 评论 -
hdoj 6055(2017 Multi-University Training Contest - Team 2)Regular polygon
题目链接:Regular polygon题目大意:给你一堆点,然后问能够用里面组成多少个正多边形题目思路:因为是整数点,只能形成正四边形,所以枚举两个点,套公式找出另外两个点,然后直接判断就好,当然因为点很小,可以直接判断,用pair很轻松,当然如果是poj 2002,就需要用hash去判断 ps:正方形已知两个点,算另外两个点的公式: 已知: (x1,y1) (x2,y2) 则: x3原创 2017-08-29 20:49:46 · 334 阅读 · 0 评论 -
hdoj 5971 Wrestling Match
题目链接:Wrestling Match题目大意:现在有N个人,M个对立的关系,有X个已知的好人,Y个已知的坏人,问能不能把所有的人都分成两堆某一堆里面,并且所有的限制条件都成立题目思路:题意真傻逼,完全是猜题意,先把所有跟好人对立和坏人对立的关系全部扔出来,然后对还没有分到某一个阵营的枚举好人或者坏人两种情况,最后看有没有都对立或者还没有分到某一个阵营的人就好了#include <map>#i原创 2017-09-15 20:57:30 · 284 阅读 · 0 评论 -
hdoj 5974 A Simple Math Problem
题目链接:A Simple Math Problem题目大意:给你一个a和b,现在要求x+y = a,lcm(x,y) = b,输出x,y题目思路:数据范围太大,暴力不可解,我们假设s=gcd(x,y)s = gcd(x,y) 则 i∗s+j∗s=a,(i∗s∗j∗s)/s=bi*s+j *s = a,(i*s*j*s)/s = b即(i+j)∗s=a,(i∗j)∗s=b(i+j )*s = a,(原创 2017-09-15 21:10:54 · 286 阅读 · 0 评论 -
hdoj 5976 Detachment
题目链接:Detachment题目大意:给你一个n,拆分成不等的一些数,要求乘积最大,算最大乘积题目思路:我们可以先手动拆一下,发现,不管我们怎么拆,我们是在2,3,4,5…这样的顺序上去拆,然后在上面的数进行操作,比如我们假设这个数拆成了2,3,4,然后剩下3个数,那么我们想的是把3全部加到2上面,这样一定最优,但是要求不能重复,如果剩下的数加到2上会有重复,所以我们要不能重复且要贡献最大,不能加原创 2017-09-15 21:25:19 · 276 阅读 · 0 评论 -
hdoj 6208 The Dominator of Strings
题目链接:The Dominator of Strings题目大意:有一些字符串,问存不存在一个字符串使得其他所有字符都是这个串的子串题目思路:可以AC自动机直接扔,也可以用string的find函数找#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#原创 2017-10-07 20:08:17 · 226 阅读 · 0 评论 -
hdoj 6213 Chinese Zodiac
题目链接:Chinese Zodiac题目大意:有一男一女,女的年龄比男的严格大,给出他们的生肖,问年龄差题目思路:直接减就好了,为负加十二就好了#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstdio>#include <c原创 2017-10-07 20:10:48 · 13318 阅读 · 0 评论 -
hdoj 5521 Meeting
题目链接:Meeting题目大意:给你一个有n个点的图,然后m个关系,每个关系有一些点和一个时间,这些同一个关系里面的点之间互相到达的时间为时间t,现在有两个人同时从1和n点出发没问他们同时到达某个点的最短时间为多少,有多个点全部输出,不能相遇就输出Evil John题目思路:我们考虑从1和n两个点跑最短路,他们到达某个点的时间就是他们之间的最大时间,然后考虑建边的时候,我们对每一层拆一个点,这个拆原创 2017-10-18 19:54:25 · 273 阅读 · 0 评论 -
hdoj 2236 无题II
题目链接:无题II题目大意:有一个n*n的矩阵,问能不能选n个数,这n个数行和列都不同,而且最大值和最小值之间的差尽可能需要小,问这个最小差值题目思路:我们去二分这个这个差值,然后枚举下界,判断符合条件的数,然后行和列连接一条边,然后跑一个二分图最大匹配看是不是n就好了#include <map>#include <set>#include <stack>#include <queue>#i原创 2017-10-27 17:43:59 · 538 阅读 · 2 评论 -
hdoj 5573 Binary Tree
题目链接:Binary Tree题目大意:给你一个二叉树,编号就是二叉树的编号,然后从根节点到第k层的某一个结点,你可以以一些途径到达,然后经过的根节点编号需要加加减减,问你怎么凑出来这个n,特判数据题目思路:我们注意到N<2kN < 2^k,所以我们可以想到,一定是能用1,2,4′′′2k1,2,4 ''' 2^k去凑出来这个N,但是转化成二进制我们注意到,本来为0的数我们是需要减掉而不是不需要,原创 2017-10-12 22:24:37 · 227 阅读 · 0 评论 -
hdoj 5578 Friendship of Frog
题目链接:Friendship of Frog题目大意:给你一个字符串,问所有的同一个字符两两最近之间距离的最近距离题目思路:开个map记录以下就好了#include <map>#include <set>#include <queue>#include <stack>#include <cmath>#include <cstdio>#include <vector>#include原创 2017-10-12 22:31:45 · 263 阅读 · 0 评论 -
hdoj 5583 Kingdom of Black and White
题目链接:Kingdom of Black and White题目大意:给你一些由0和1组成的字符串,现在你可以变换至多一个字符变成另一个,求最大贡献,贡献的计算方式是连续相同的字符的和的平方之和题目思路:我们可以把一块当成一个整体来看,我们可以知道的是,在长度不为1的块中,变中间的数字一定不会导致贡献的增加,只有头尾是可以的,然后对于长度为1的块需要特判,我们在判断块的时候枚举每一块的头尾就好了,原创 2017-10-15 17:10:44 · 286 阅读 · 0 评论 -
hdoj 5584 LCM Walk
题目链接:LCM Walk题目大意:给你一个终点,现在问有多少种可能的起点可以到达,每一个步骤到下一步的方法是(x,y)到(x,y+lcm(x,y))或者(x+lcm(x,y),y)题目思路:我们可以知道的是我们去推所有的步骤时我们可以发现所有的步骤点gcd是相同的,而且我们可以知道上一步增加的x还是y一定是后续步骤的最大值所在的位置,因为我们所加的是lcm(x,y),所以我们现在可以枚举逆推回去,原创 2017-10-15 17:23:19 · 396 阅读 · 0 评论 -
hdoj 2063 过山车
题目链接:过山车题目大意:有m个女生和n个男生,每个女生有一些喜欢的男生,问最多能匹配多少对情侣出去做过山车题目思路:匈牙利算法算一个二分图最大匹配就好了#include <map>#include <stack>#include <queue>#include <cmath>#include <vector>#include <cstdio>#include <cstring>#in原创 2017-10-25 22:31:58 · 316 阅读 · 0 评论 -
hdoj 6231 K-th Number
题目链接:K-th Number题目大意:给你一个长度为n的数字,然后需要你找出这个序列里面长度大于等于k的所有子序列里第k小的数,然后扔到另一个数组里面去,然后寻找另一个数组里面第m大的数,问这个数题目思路:我们可以将问题转化一下:我们需要去二分一个最大的x,且这个x满足有大于等于m个区间的第k小大于等于x(这样的话就满足了这个枚举的数要比我们最后要得到的数要大)。所以关键在于,如何求有多少个区间原创 2017-12-01 15:32:15 · 334 阅读 · 0 评论 -
hdoj 6235 Permutation
题目链接:Permutation题目大意:要求你构造一个长度为n的1到n的排列使得pip_i%pi+2p_{i+2}-pip_i == 0题目思路:直接构造相间隔的相差1的数组就好了#include <map>#include <set>#include <cmath>#include <vector>#include <cstdio>#include <cstring>#include原创 2017-12-01 15:43:12 · 320 阅读 · 0 评论 -
hdoj 5514 Frogs
题目链接:Frogs题目大意:有一个n个洞的圈,编号从0到m-1,然后有n只青蛙,起始为编号0,每次的步数是k步,问无限的时间后所有可以被青蛙访问的洞的编号题目思路:我们可以很轻易的想到用gcd(k,m)判断这只青蛙能访问的哪些洞,然后我们发现如果有一只青蛙的gcd是3,而另一只是6,这只青蛙根本做不了贡献,所以我们考虑我们先筛出来m的因子,然后判断贡献,如果有6有3,那么3的贡献算一次后6的贡献得原创 2017-10-18 19:49:29 · 324 阅读 · 0 评论 -
hdoj 5512 Pagodas
题目链接:Pagodas题目大意:有n个寺庙,最开始的时候有两个a,b寺庙编号是被标记了的,下一次的标记可以是已经存在的两个不同的被标记了的编号相加或者相减,问到什么时候就不能标记到未标记的寺庙了,不能标记的那个人算输,问赢的是谁题目思路:题目给了很多的样例,大概的意思就是叫你去找规律,然后我们可以知道在最开始的时候间距就确定了,就是gcd(a,b),所以,我们需要算一下有多少能被标记,然后判断奇偶原创 2017-10-18 19:44:36 · 343 阅读 · 0 评论 -
hdoj 5510 Bazinga
题目链接:Bazinga题目大意:给你一些字符串,问你从上到下最大的条件字符串,这个字符串需要满足在它上面的字符串不能全部都是它的子串,问最大的标记是多少题目思路:我们可以考虑这样一个问题,如果前面的字符串全部都是这个这个字符串的子串的话,那么我们是不是只考虑这样一个字符串而不需要考虑前面的字符串,如果不是的话我们就可以标记一下记录最大值,然后这样用vector扫一下,剪下枝,扫下去就好了,时间卡的原创 2017-10-18 19:39:29 · 587 阅读 · 0 评论 -
hdoj 6214 Smallest Minimum Cut
题目链接:Smallest Minimum Cut题目大意:给你一张图,问最小边数的最小割是多少题目思路:跑网络流,最小流可能会有很多歌,所以我们需要做的是扩大每条边的容量,我们把容量扩大m+1倍,因为我们扩展后会把每条边的容量再加一,最多m条边,所以扩大m+1是没有问题的,这样扩展后边容量其实没变化,但是最后加的1对边的个数形成了冲击,最后我们找出加了多少个一的最小割就好了,也就是对(m+1)取余原创 2017-10-07 20:34:00 · 250 阅读 · 0 评论 -
hdoj 6215 Brute Force Sorting
题目链接:Brute Force Sorting题目大意:给你一个序列,要求a[i] <= a[i+1],不满足这个情况的数就得删掉,问最后的序列是什么题目思路:因为如果两个数不满足的话,不光后面那个,前面那个也得删掉,所以我们考虑用双向链表维护,用一个队列去维护这个双向链表的前继,普通链表维护后继,然后就可以做了#include <map>#include <set>#include <cm原创 2017-10-07 20:50:24 · 272 阅读 · 0 评论 -
hdoj 6216 A Cubic number and A Cubic Number
题目链接:A Cubic number and A Cubic Number题目大意:给你一个素数,问能不能由两个立方数相减得到题目思路:打表可知只有相邻的两个立方数之间才可能产生素数,然后预处理所有的情况就好了#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vect原创 2017-10-07 20:57:20 · 295 阅读 · 0 评论 -
hdoj 5532 Almost Sorted Array
题目链接:Almost Sorted Array题目大意:给你一个序列,问你能不能刚好去掉一个数使得整个序列不上升或者不下降题目思路:我们找到这个序列的最长不上升和最长不下降,然后看这个长度是不是>=len-1就好了#include <map>#include <stack>#include <queue>#include <cmath>#include <vector>#include原创 2017-10-17 22:17:50 · 242 阅读 · 0 评论