02 2017 档案
摘要:题目链接:hdu 4705 Y 题意: 给你一棵n个节点的树,问你不在同一条路径上的三点对的对数。 题解: n个节点任选三个点Cn3 ,然后我们可以dp出在同一条路径上的三点对,然后减一减 1 #include<cstdio> 2 #pragma comment(linker, "/STACK:16
阅读全文
摘要:题目链接:hdu 4123 Bob’s Race 题意: 给你n个节点,n-1条边的树,每条边有一个边权,定义dis[i]为距离i这个点最远的距离。 现在有m个询问,每个询问给一个q,然后找一段节点标号连续的点,使得max(dis[j])-min(dis[i])<=q; 问最长的一段区间。 题解:
阅读全文
摘要:题目链接:hdu 2196 Computer 题意: 给你一棵n个节点,n-1条边的树,每条边有一个长度,求没,每个点到最远距离的点的长度。 题解: 紫书上也有讲: 求一棵树最长的边的方法:随便找个点,dfs一遍求到长度最长的点s。 然后以s点为根dfs一遍,同样找到长度最长的点t。 然后在以t点为
阅读全文
摘要:题目链接:hdu 3534 Tree 题意: 给你一棵n个节点,n-1条边的树,每条边有一个长度,现在问你最长的边的长度为多少,有多少条。 题解: 其实这种题不用记录最长和次长,我们开两个数组,len[i],num[i]。 表示以i为根结点出发的最长的长度以及最长的边的条数。 然后我们只需要一个df
阅读全文
摘要:题目链接:hdu 6017 Girls Love 233 题意: 给你一串含2,3的串,现在最多交换m/2次,问最多能形成多少个233 题解:bc官方题解: 大家要学会分析状态啊喂!多思考多开脑洞,分析出状态之后,就是一个DP或者记忆化搜索,自然就可以写出来啦! 首先,因为字符不是'2'就是'3',
阅读全文
摘要:题目链接:Codeforces Round #402 (Div. 2) C. Dishonest Sellers 题意: 有n个商品,每个商品这一周为ai的价格,下一周为bi的价格。 现在那个人要将这n个商品全部买掉,这一周最少要买k个商品, 为最小的花费是多少。 题解: xjb贪心一下。 按ai-
阅读全文
摘要:题目链接:Codeforces Round #402 (Div. 2) D. String Game 题意: 给你两个字符串a,b,然后给你n=strlen(a)个数字n1,n2,...,nn,表示依次删a[ni-1]个字符。 当a串删到有k(k任意)个子串组合起来(顺序不变)刚好等于b串时,就不能
阅读全文
摘要:题目链接:Codeforces Round #401 (Div. 2) E. Hanoi Factory 题意: 给你n个环,每个环有内径a,外径b,高度v,现在让你将这n个环重起来,问你能重的最大高度。 满足条件:bi>=bj,bj>ai。(i<j) 题解: 首先将所以数据离散化,然后我们先按b从
阅读全文
摘要:题目链接:D. Cloud of Hashtags 题意: 给你n个字符串,让你删后缀,使得这些字符串按字典序排列,要求是删除的后缀最少 题解: 由于n比较大,我们可以将全部的字符串存在一个数组里面,然后记录一下每个字符串的开始位置和长度,然后从下面往上对比。 如果str[i][j]<str[i+1
阅读全文
摘要:题目链接:hdu 6016 Count the Sheep 题意: 给你一个二分图,和一些边,问连接4个点的路线有多少条 题解:bc官方题解: 在此非常感谢验题组elfness对出题想法的帮助! 就是这题,为了保证本次BC难度足够友好,而换掉了另外一个质量还可以,不过大概难一些的题,让更多人2题保本
阅读全文
摘要:题目链接:Codeforces Round #400 E. The Holmes Children 题意: 定义f(1)=1,f(n),n>1的值为满足x+y=n且gcd(x,y)=1的(x,y)个数;定义g(n)=Σd|n f(n/d);定义Fk(n)满足k=1时Fk(n)=f(g(n)),k>1
阅读全文
摘要:题目链接:Codeforces Round #400 D. The Door Problem 题意: 有n扇门,每扇门有个初始状态,并且受两个开关控制。 现在给你m个开关控制门的信息,每个开关能将它所控制的门的状态翻转。 问能不能通过一定操作,将所以的门的状态都处于开的情况。 题解: 这题用2sat
阅读全文
摘要:题目链接:Codeforces Round #400 C. Molly's Chemicals 题意: 给你n个数,和一个数k,现在问你有多少个区间和等于k的r次方,r从0到无穷。 题解: 由于有负数的存在,不能用双指针,我们先把前缀和sum求出来。 现在就转换为要求有多少个sum[r]-sum[l
阅读全文
摘要:题目链接:C. Alyona and Spreadsheet 题意: 给你一个n*m的矩阵,现在有k个询问,每次给你一个l,r,问你在[l,r]这行中能否有一列数十非递减的顺序 题解: 用vector来保存矩阵。 对于每一行n*m dp一下最远能达到的范围,然后询问的时候就判断l,r是否在这个范围内
阅读全文
摘要:题目链接:hdu 4679 Terrorist’s destroy 题意: 给一棵树,每条边上都有一个权值,去掉树上任意一条边之后,分成两个子树,两个子树的最长路与这条边上的权值相乘,的到一个乘积。问去掉那一条边可以使这个乘积最小。 题解: 首先我们先找到整棵树的直径(即最长的那条路)。 那么删边的
阅读全文
摘要:题目链接:hdu 5396 Expression 题目大意: 给你一个n然后是n个数。 然后是n-1个操作符,操作符是插入在两个数字之间的。 由于你不同的运算顺序,会产生不同的结果。 比如: 1 + 1 * 2 有两种 (1+1)*2 或者 1+(1*2) 1 * 2 * 3 也是两种即使结果是一样
阅读全文
摘要:题目链接:hdu 5693 D Game 题意: 首先度度熊拥有一个公差集合{D},然后它依次写下N个数字排成一行。游戏规则很简单:1. 在当前剩下的有序数组中选择X(X≥2) 个连续数字;2. 检查1选择的X个数字是否构成等差数列,且公差 d∈{D};3. 如果2满足,可以在数组中删除这X个数字;
阅读全文
摘要:题目链接:hdu 5151 Sit sit sit 题意: 一共有并排N个椅子, N个学生依次去坐,同时满足3个条件就不能坐下去: 1,该椅子不在最左,不在最右。 2,该椅子左右都有人坐了。 3,左右的椅子不同颜色。求最后N个人都能坐下去,有多少不同的情况. 题解: 考虑区间dp,dp[i][j]
阅读全文
摘要:题目链接:hdu 4570 Multi-bit Trie 题意: 这题的题意要看半天,其实就是让你求∑ai*(2^bi),一个长度为n的数列,将其分成若干段(每一段的长度要<=20), 要求∑ai*(2^bi)最小,其中ai是每一段数列的第一项,bi是每一段的长度。 比如样例:1 2 4 4 5 4
阅读全文
摘要:题目链接:hdu 2855 Fibonacci Check-up 题意&题解: 1 #include<bits/stdc++.h> 2 #define mst(a,b) memset(a,b,sizeof(a)) 3 #define F(i,a,b) for(int i=a;i<=b;i++) 4
阅读全文
摘要:题目链接:hdu 2807 The Shortest Path 题意: 如果矩阵A*B=C,那么就表示A-->B有一条单向路径,距离为1. 给一些矩阵,然后问任意两个矩阵直接的距离。 题解: 把矩阵读进来后处理一下邻接矩阵,然后Folyd一下。 1 #include<cstdio> 2 #inclu
阅读全文
摘要:题目链接:hdu 2158 最短区间版大家来找碴 题意: 给你n个数,现在有m个询问,每个询问有q个数,让你从那n个数中选一个最小的区间,使得这个区间内包含有这q个数 题解: 双指针滚一下,具体细节看代码 1 #include<bits/stdc++.h> 2 #define F(i,a,b) fo
阅读全文
摘要:题目链接:hdu 2157 How many ways?? 题意: 给你一个邻接矩阵,问你从a到b点,可走重复路径,恰好经过k个节点的路径数。 题解: 其实就是一个裸的矩阵快速幂,每走一次,相当于一次乘法。 1 #include<bits/stdc++.h> 2 #define mst(a,b) m
阅读全文
摘要:题目链接:hdu 1588 Gauss Fibonacci 题意: g(i)=k*i+b; f(0)=0f(1)=1f(n)=f(n-1)+f(n-2) (n>=2) 让你求:sum(f(g(i)))for 0<=i<n 题解: 这里用到二分等比求和 1 #include<bits/stdc++.h
阅读全文
摘要:题目链接:hdu 4576 Robot 题意: 给你一个环,最开始机器人站在1的位置,现在有m条指令,每次顺时针或者逆时针的走x步,现在问你停留在l到r区间的概率。 题解: 考虑dp[i][j],表示前i个操作停留在j这个位置的概率,那么转移方程就为dp[i][j]=0.5*(dp[i-1][j-x
阅读全文
摘要:题目链接:hdu 4405 Aeroplane chess 题意: 一个0到n的数轴上掷色子前进,中间有直达部分,问到终点需要掷色子的期望。 题解: 无环的期望DP,直接递推就行。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<
阅读全文
摘要:题目链接:hdu 2459 Maximum repetition substring 题意: 让你找一个重复最多的子串,并且输出。 题解: 这个是论文题,看的cxlove的题解,不是很理解为什么这样就能完全找完,当作结论使吧。 1 #include<bits/stdc++.h> 2 #define
阅读全文
摘要:题目链接:hdu 1880 魔咒词典 题意: 给你一个10w的词典,让你输出对应的字段。 题解: map暴力存字符串肯定会卡内存,这里用BKDR字符串hash一下,用map映射一下。 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i
阅读全文
摘要:题目链接:hdu 4821 String 题意: 给你一个字符串,问你有多少子串,满足长度为m*len,并且这个子串能分成m个len长度的不同串。 题解: BKDRhash+map来判重。注意的是要以len长分类来扫,这样才不会超时。 1 #include<bits/stdc++.h> 2 #def
阅读全文
摘要:题目链接:hdu 4125 Moles 题意: 给你n个数,让你按键值建一个平衡二叉树,然后奇数为0,偶数为1,然后可以遍历这颗树得到一个欧拉序列,现在给你一个串,问你出现了几次。 题解: 建树的时候要引用一个结论:就是新插入的数的父亲,要么是比它大的最小的那个元素,要么是比它小的最大的那个元素。
阅读全文
摘要:题目链接:hdu 4735 Little Wish~ lyrical step~ 题意: 有n个节点的树,每个节点可能是男孩,可能是女孩,节点之间有距离,现在要让所有的女孩周围距离D之内有男孩,问最小需要交换多少次男孩和女孩的位置。 题解: 把每个节点对小于D距离的全部link起来,然后DLX爆艹,
阅读全文
摘要:题目链接:hdu 2295 Radar 题意: 给你n个城市,m个雷达,现在最多用K个雷达,求最小半径覆盖全部的城市。 题解: 二分半径套一个DLX就行。网上随便找的一个板子 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;
阅读全文

浙公网安备 33010602011771号