HDU oj
文章平均质量分 54
Rocky0429
我愿能朝着太阳生长,做一个温暖的人。
展开
-
HDU 2767-Proving Equivalences(强联通+缩点)
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-07-01 17:24:40 · 1951 阅读 · 0 评论 -
HDU 5326(2015多校3)-Work(dfs)
题目地址:HDU 5326 题意:给一张有向图n个点,n - 1(。。。。输入n-1)条边。 A指向B代表A管理B,然后可以间接管理,比如A管理B,B管理C,则A管理C。 现在问管理k个人的人有多少个。#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#i原创 2015-07-29 16:29:37 · 1315 阅读 · 0 评论 -
HDU 5323(2015多校3)-Solve this interesting problem(dfs+剪枝)
题目地址:HDU 5323 题意:给一个l,r,表示区间[l,r],问是否存在区间为[0,n]的线段树的节点区间为[l,r],如果有求最小的n,如果没有输出-1。 思路:因为L/(R-L+1)<=2015,按照线段树的性质每次分区间序号扩大两倍,所以可以得出差不多有22层,所以用爆搜就可以,由上把[l,r]区间不断扩张,直到满足l==0为止。顺便剪剪枝。#include <stdio.h>#i原创 2015-07-30 10:04:09 · 724 阅读 · 0 评论 -
HDU 5317(2015多校3)-RGCDQ(数论)
题目地址:HDU 5371 题意:每次T(1000000)次询问,每次询问有一个区间[L, R] (2 <= L < R <= 1000000 )。 f(i) 表示的是数i的素因子种类数。 然后求这个区间内GCD(f(i), f(j))的最大值,(L <= i < j <= R )。 思路:2*3*5*7*9*11*13=270270<1e6<2*3*5*7*9*11*13*17=4594590原创 2015-07-29 16:18:52 · 1451 阅读 · 0 评论 -
HDU 3939-Sticks and Right Triangle(毕达哥拉斯三元组+欧拉函数)
题目地址:HDU 3939 题意:给出勾股方程X^2+Y^2=Z^2,满足X,Y,Z不超过L,问存在多少个解满足X,Y,Z两两互素。 思路:其实就是求有多少个毕达哥拉斯本原三元组,因为数据很大,所以不能像上一道题一样,直接暴力枚举。那下面我们来分析一下: 由X^2+Y^2+Z^2我们可以知道,方程的解为X=m^2-n^2,Y=2*m*n,Z=m^2+n^2,其中m>n,m与n一奇一偶,且gcd原创 2015-08-26 14:51:42 · 1722 阅读 · 0 评论 -
HDU 5373(2015多校7)-The shortest problem(模拟%11)
题目地址:HDU 5373 题意:给你一个数n和操作次数t,每次操作将n的各位数之和求出来放在n的末尾形成新的n,问t次操作后得到的n是否可以被11整除。 思路:就是简单的模拟一下乱搞。额,对于%11有一个性质,当一个数的奇数位之和与偶数位之和的差的绝对值能被11整除,那么该数就可以被11整除。#include <stdio.h>#include <math.h>#include <stri原创 2015-08-12 11:21:37 · 1222 阅读 · 0 评论 -
HDU 5371(2015多校7)-Hotaru's problem(Manacher算法求回文串)
题目地址:HDU 5371 题意:给你一个具有n个元素的整数序列,问你是否存在这样一个子序列,该子序列分为三部分,第一部分与第三部分相同,第一部分与第二部分对称,如果存在求最长的符合这种条件的序列。 思路:用Manacher算法来处理回文串的长度,记录下以每一个-1(Manacher算法的插入)为中心的最大回文串的长度。然后从最大的开始穷举,只要p[i]-1即能得出以数字为中心的最大回文串的长度原创 2015-08-12 16:14:20 · 1227 阅读 · 0 评论 -
HDU 5375(2015多校7)-Gray code(dp)
题目地址:HDU 5375 题意:给你一个二进制串,带’?’的位置可以由你来决定填’1’还是’0’,补充完整之后转换成格雷码表示,每一个位置都有一个权值a[i],只有格雷码为’1’的位可以加上权值,问你最终权值之和最大为多少。 思路:首先要明白二进制码和格雷码是如何转换的: dp[i][0]表示第i位为0的时候的最大值,dp[i][1]表示第i位为1的时候的最大值。对于第i位的最大值由dp[i原创 2015-08-12 11:29:26 · 1228 阅读 · 0 评论 -
HDU 5336(2015多校4)-XYZ and Drops(bfs)
题目地址:HDU 5336 题意:有一个r 行 c 列的格子,给出n个格子里有水滴的大小。再给出时间限制T,使得水滴从(sx,sy)位置开始爆破,当飞渐的水遇到格子里的静态水时就会聚在一起,当聚集的水滴大小>4时就会爆破。问在T时给定的n个位置格子里的水滴情况,如果没有爆破就输出:1 格子里水滴大小。否则输出:0 爆破的时间。#include <stdio.h>#include <math.h>原创 2015-08-01 16:21:29 · 1416 阅读 · 0 评论 -
HDU 5387(2015多校8)-Clock(模拟)
题目地址:HDU 5387 题意:给你一个格式为hh:mm:ss的时间,问时针与分针、时针与秒针、分针与秒针之间夹角的度数是多少,若夹角度数不是整数,则输出A/B最简分数形式。 思路:每秒钟,分针走是0.1°,时针走(1/120)°;每分钟,时针走0.5°。所以对于时针的角度来说总共走动了h*30+m*0.5+s/120,对于分针的角度来说总共走掉了m*6+s*0.1,对于秒针来说,总共走动了s原创 2015-08-13 20:50:41 · 1296 阅读 · 0 评论 -
HDU 1695-GCD(容斥)
题目地址:HDU 1695 题意:在[1,b]和[1,d]中各选一个数x,y,使得GCD(x,y)=k,求满足的(x,y)对数,(x,y)和(y,x)算一种。 思路:GCD(x,y)=k 可以变换成GCD(x/k,y/k)=1。这也就变成了在[1,b/k]和[1,d/k]之间找到一个i,j,使得GCD[i,j]=1。因为(3,5)和(5,3)是同一种,所以我们让[1,b/k]为两个区间的小的区间原创 2015-08-25 08:39:20 · 1375 阅读 · 0 评论 -
HDU 2841-Visible Trees(容斥)
题目地址:HDU 2841 题意:给出一个m*n的矩阵,从(1,1)开始,一个人站在(0,0)位置,问人可以看到矩阵里的几棵树,要求两棵树和人在同一直线上的时候只能看到一棵。 思路:对于一个点(x,y)只要x与y存在最大公约数g,则可以知道在(x/g,y/g)有一棵树挡起了点(x,y),所以(x,y)是看不到的,因此我们要判断一个点是否能看到,就看它的(x,y)是否存在最大公约数不为1的数,若不原创 2015-08-24 20:59:01 · 729 阅读 · 0 评论 -
HDU 5319(2015多校3)-Painter(dfs)
题目地址:HDU 5319 题意:给一个图n*m,原来全是点(’.’)。 现在要把图染成已给出的样子。 要求当是’\’的情况只用红色,是’/’的情况只用蓝色,当一个格子同时被红色和蓝色染得时候变成绿色。(每个格子只画一次)。 思路:这题只要模拟一下刷的过程就行了,如果出现了R,就刷R刷到底,出现B就刷B,出现G就左右各刷一次。#include <stdio.h>#include <math.h原创 2015-07-29 16:23:59 · 1453 阅读 · 1 评论 -
HDU 1269-迷宫城堡(强连通分量)
题目地址:HDU 1269一道强连通分量的裸题,当只有一个强连通分量的时候输出Yes,否则输出No#include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long lon原创 2015-06-13 11:52:34 · 1194 阅读 · 0 评论 -
HDU 5312-Sequence(三角形数+推导)
题目地址:HDU 5312题意:Soda习得了一个数列, 数列的第nn (n \ge 1)(n≥1)项是3n(n-1)+13n(n−1)+1. 现在他想知道对于一个给定的整数mm, 是否可以表示成若干项上述数列的和. 如果可以, 那么需要的最小项数是多少?例如, 22可以表示为7+7+7+17+7+7+1, 也可以表示为19+1+1+119+1+1+1.思路:三角形数形如n*(n-1)原创 2015-07-27 16:03:07 · 1367 阅读 · 0 评论 -
HDU 5360(2015多校6)-Hiking(优先队列)
题目地址:HDU 5360 题意:给定n个人,现在要邀请这些人去远足,但每个人同意邀请的条件是当前已经同意去远足的人数c必须满足c>=l[i]&&c<=ri,问你邀请的顺序是什么才能使尽可能多的人去远足,若有多个最优解,输出任意的一个。 思路:先按照L从小到到排序,把当前符合的L放入优先队列中 ,然后对队列中的R从小到大排序,贪心的选择R小的,然后乱搞一番就可以了。#include <stdio原创 2015-08-07 15:08:27 · 1198 阅读 · 0 评论 -
HDU 5363(2015多校6)-Key Set(快速幂取模)
题目地址:HDU 5363 题意:给你一个具有n个元素的集合S{1,2,…,n},问集合S的非空子集中元素和为偶数的非空子集有多少个。 思路:解释转自[queuelovestack的专栏]因为集合S中的元素是从1开始的连续的自然数,所以所有元素中奇数个数与偶数个数相同,或比偶数多一个。另外我们要知道偶数+偶数=偶数,奇数+奇数=偶数,假设现在有a个偶数,b个奇数,则 根据二项式展开公式原创 2015-08-07 15:14:44 · 1221 阅读 · 0 评论 -
HDU 5417-Victor and Machine(水题)
题目地址:HDU 5417 题意:Victor有一个机器,这个机器每次开启的瞬间会弹出一个小球,之后每隔ww秒会弹出一个小球。因为机器不是很完善,该机器每开启xx秒就得关闭yy秒进行调整,在机器关闭的瞬间可能会有小球弹出,关闭之后一直到下一次开启之前都不会有小球弹出。00时刻,机器第一次开启,Victor想要知道第nn个小球弹出的时刻,你能够告诉他吗?#include <stdio.h>#inc原创 2015-08-23 13:04:43 · 687 阅读 · 0 评论 -
HDU 5364-Distribution money(水题)
题目地址:HDU 5364 中文题意: 问题描述 地主小花难得当一回好人,这次她准备给长工们发津贴。有些长工会偷偷地在领完津贴后又排回队伍里去领津贴。不过小花对此表示无所谓,因为她发的是固定数额的津贴。但是如果有人领到的津贴超过其他所有人的总和的话,小花为了显示自己的公正,会去惩罚他。现已知每个来领津贴的人会登记下自己的工号。 输入描述 输入有多组数据,每组第一行为一个n(1 < = n原创 2015-08-09 16:26:23 · 1339 阅读 · 0 评论 -
HDU 5365-Run(几何)
题目地址:HDU 5365 题意: 问题描述 小花是一个热爱健身的姑娘,这天她下载了一个跑步软件,这个软件可以记录下小花跑步的轨迹。小花决定去公园跑步。公园里有许许多多的座椅,小花希望在一些座椅休息一下,并且她在两条座椅之间只跑直线。小花是一个完美主义者,她希望自己最后的轨迹是一个正三边形或者正四边形或者正五边形或者正六边形。小花会从某条座椅开始打开跑步软件,并在回到这个座椅后关闭。 请问小原创 2015-08-09 16:31:53 · 1332 阅读 · 1 评论 -
HDU 5366-The mook jong(组合数学)
题目地址:HDU 5366 题意: 问题描述 ZJiaQ为了强身健体,决定通过木人桩练习武术。ZJiaQ希望把木人桩摆在自家的那个由1*1的地砖铺成的1*n的院子里。由于ZJiaQ是个强迫症,所以他要把一个木人桩正好摆在一个地砖上,由于木人桩手比较长,所以两个木人桩之间地砖必须大于等于两个,现在ZJiaQ想知道在至少摆放一个木人桩的情况下,有多少种摆法。 输入描述 输入有多组数据,每组数据原创 2015-08-09 16:39:39 · 1351 阅读 · 0 评论 -
HDU 4135-Co-prime(容斥求区间内与N互质的个数(队列||位运算))
题目地址:HDU 4135 题意:求[A,B]区间内与N互质的数的个数。 思路:我们可以用容斥计算出[1,B]之间和[1,A-1]之间的与N互质的数,然后相减即可。然后我们用一种快速的方法求出[1,X]之间的与N互质的数,首先我们求出N的质因子,[1,X]之间与N的质因子成倍数关系的数肯定与N不成互质关系。 Eg:X=12,N=30 ,N的质因子为2,3,5。 (2,4,6,8,10)->X原创 2015-08-24 18:25:55 · 1624 阅读 · 0 评论 -
HDU 5327(2015多校4)-Olympiad(水题)
题目地址:HDU 5327 题意:beautiful numbers的定义:就是一个数的每一位不能有相同的数字,现在给你一个区间,让你求这区间内有多少个这样的漂亮数。#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <sstream>#原创 2015-08-01 16:14:51 · 1173 阅读 · 0 评论 -
HDU 5328(2015多校4)-Problem Killer(水题)
题目地址:HDU 5328 题意:在一个长度为n的序列中取出连续的k个数,让这k个数组成等差数列或者等比数列,问这样的k最大可以是多少。 Ps:注意用double搞,因为等比数列求公比相除可能为小数。#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#原创 2015-08-01 16:17:43 · 1177 阅读 · 0 评论 -
HDU 3944-DP?(Lucas定理+预处理)
题目地址:HDU 3944 题意:告诉你在一个在杨辉三角中的点(第n行m列),问你从(0,0)点走到该点经过的点最少的权值和(只能向下走或斜着走)。同时对素数p取余 思路:根据已知的那个点(n,m),如果 n/2 >= m ,那么从已知点出发,可以一直往斜的方向走,直到边界,那么 权值和就为 C(n,m)+C(n-1,m-1)……. 然后由组合数的公式两两合并可以得到 C(n+1,m)+(n-m原创 2015-08-29 13:37:28 · 1607 阅读 · 0 评论 -
HDU 5410(2015多校10)-CRB and His Birthday(完全背包)
题目地址:HDU 5410 题意:有M元钱,N种礼物,若第i种礼物买x件的话,会有Ai*x+Bi颗糖果,现给出每种礼物的单价、Ai值与Bi值,问最多能拿到多少颗糖果。 思路:完全背包问题。 dp[j][1]在当前物品时花钱为j的并且买过当前物品的最大值。 dp[j][0]不买当前这件物品此前花钱为j的的最大值。 每种物品的价值随Ai线性变化,但是不随B[i]线性变化,B[i]仅是在第一次挑原创 2015-08-21 15:58:22 · 742 阅读 · 0 评论 -
HDU 5430-Reflect(欧拉函数求圆内反射方法数)
题目地址:HDU 5430 题意:在一个圆里选择一个点出发,求反射n次回到起始点的方法数 思路: #include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <sstream>#include <algorithm>#include <se原创 2015-09-06 19:24:46 · 1241 阅读 · 0 评论 -
HDU 5428-The Factor(分解质因子)
题目地址:HDU 5428 题意: 思路:分解每个数的质因子,将他们保存在sprime数组中(可重复),如果个数小于两个,输出-1,否则的话将sprime数组排序,输出最小的两个数的乘积#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#includ原创 2015-09-06 19:12:50 · 739 阅读 · 0 评论 -
HDU 5414(2015多校10)-CRB and String(字符串处理)
题目地址:HDU 5414 题意:要求判断字符串s能否通过添加若干个字符得到字符串t 思路:这个题看起来复杂,其实仔细一分析,成功转化只包含两种情况。第一种因为要求插入的新字符和它前面的字符c不同,如果t中有x个连续的c,那么在s中也必须有x个连续的c;第二种是s必须是t的一个不连续子串。#include <stdio.h>#include <math.h>#include <string.原创 2015-08-21 15:29:23 · 1453 阅读 · 0 评论 -
HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)
题目地址:HDU 5407 题意:CRB有n颗不同的糖果,现在他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少。 思路:首先做这道题我们需要必备的几个技能点。 1. LCM(C(n,0), C(n,1),…, C(n,n))=LCM(1,2,3,…n+1)/(n+1)。额,这个有一篇证明Kummer定理 2.(1) 乘法逆元定义: 满足a*k≡1 (mod p)的k值原创 2015-08-22 11:13:28 · 1686 阅读 · 0 评论 -
HDU 2582-f(n)(求n个组合数最大公约数的和)
题目地址:HDU 2582 题意:给出公式Gcd(n)=gcd(C[n][1],C[n][2],……,C[n][n-1]),让求f(n)= Gcd(3)+Gcd(4)+…+Gcd(i)+…+Gcd(n)。 思路:对于来说,有以下三种 (1),如果n为素数,那么G=n; (2),如果n有多个素因子,那么G=1; (3),如果n只有一个素因子,那么G=该素因子。#include <stdio.原创 2015-08-21 09:49:22 · 2472 阅读 · 0 评论 -
HDU 5427-A problem of sorting(字符串处理)
题目地址:HDU 5427 题意:把出生年份按照从小到大排序,输出名字。 思路:拍一下序就好。但是注意,名字里有空格的情况,所以要用getline先处理一下。#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <sstream>#inc原创 2015-09-06 19:05:37 · 1303 阅读 · 0 评论 -
HDU 5429-Geometric Progression(JAVA大数判断等比数列)
题目地址:HDU 5429 题意: 思路:注意一下当n=1或者当所有的数都为0时也是等比数列。import java.util.*;import java.math.*;public class Main { public static void main(String[] args) { BigDecimal[] x = new BigDecimal[原创 2015-09-06 19:16:37 · 1667 阅读 · 0 评论 -
HDU 5446-Unknown Treasure(Lucas+中国剩余定理)
题目地址:HDU 5446 题意:求C(N,M)%P的结果,P为k个素数的乘积。(1≤m≤n≤10^18,1≤k≤10) 思路:先用Lucas定理求出a[]数组,再用CRT求出最终的结果x。比赛时这道题坑了俩小时,还是用的不互质的板子过的,不知道为什么用互质的CRT板子一直Wa,sad。#include <stdio.h>#include <math.h>#include <string.h原创 2015-09-14 19:21:19 · 1279 阅读 · 0 评论 -
HDU 5339-Untitled(dfs)
题目地址:HDU 5339 题意:给出n个数和一个数a,问a对其中的一些数取余(可以为n个数),是否a能等于0 思路:遍历枚举,每次找<=a的数,然后取余,一直到最后看是否为0#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <sstr原创 2015-08-03 08:38:05 · 1348 阅读 · 3 评论 -
HDU 1792-A New Change Problem(互质数的最大不能表示数)
题目地址:HDU 1792 题意:两个互质的数A,B且A*x+B*y(x>=0,y>=0)求最大不能表示的数,和不能表示的数的个数。 思路:最大不能表示的数是A*B-A-B,个数是(A-1)*(B-1)/2。详细推导#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iost原创 2015-08-21 10:33:13 · 3020 阅读 · 0 评论 -
HDU 2685-I won't tell you this is about number theory(gcd(A^m-B^m,A^n-B^n)化简)
题目地址:HDU 2685 题意:求 gcd(a^m-1,a^n-1)%k的值。 思路:根据公式gcd(A^m-B^m,A^n-B^n)= A^gcd(m,n) - B^gcd(m,n)。在此处B^m和B^n值为1,所以就将原公式的B代换为1。#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>原创 2015-08-20 20:53:50 · 2017 阅读 · 0 评论 -
HDU 5340-Three Palindromes(Manacher算法)
题目地址:HDU 5340 题意:问是否能将字符串str分解为三段非空的回文串。 思路:我们根据Manacher算法对字符串进行处理,处理过程中产生的P数组,我们可以得到两个数组first和last。 first存储的是第一个回文串的半径可能值。 last存储的是第三个回文串的半径可能值。 根据first和last我们可以枚举第一个回文串和第三个回文串,然后根据半径找出第二个回文串的初始位原创 2015-08-03 15:39:55 · 1287 阅读 · 0 评论 -
HDU 3068-最长回文(Manacher算法O(n)求最长回文串)
题目地址:HDU 3068 关于算法的详解:Manacher算法#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <sstream>#include <algorithm>#include <set>#include <queue>原创 2015-08-03 11:36:01 · 1256 阅读 · 0 评论 -
HDU 5422-Rikka with Graph(规律题)
题目地址:HDU 5422 题意: 思路: 如果连上1-n的边,最短距离就是1。所以所有情况下最短距离都是1。考虑方案数,如果本来没有1-n的边,那么只能连1-n,方案数为1。否则怎么连都可以,方案数是n*(n-1)/2。int main(){ int n,m; int x,y; while(~scanf("%d %d",&n,&m)) { int原创 2015-08-30 17:58:50 · 1321 阅读 · 0 评论