HDU水题
MatrixYg
暂无
展开
-
HDU1241—简单的dfs
题目链接。题目大意:给一张图,带有@的区域是一块油田,只要是在@上下左右以及对角线八个方向的被视为一块油田,寻找图中有多少块油田。这个是一个简单的dfs,对于当前点进行八个方向搜索,一直达到不可搜索的位置退出,应该是挺简单的,注意一下递归的出口就行。附上AC代码:#include<bits/stdc++.h>const int maxn = 110;using namespa...原创 2018-12-05 20:12:39 · 237 阅读 · 0 评论 -
HDU1028_整数的划分
1.题目链接。题意十分的简洁,就是给你一个数,找出把它划分成几个小的数加起来的方法。当然了,这里的小是不允许出现负数的。(当然了,一定范围内出现负数还是可以的,这个以后我们再讨论)。这里还有另外一个很重要的条件就是允许划分数来的小的数字可以相同的。这也是一个很重要的特点。满足上边的两个特点的,我们就可以使用五边形定理。至于什么是五边形定理,先留个坑。我先给个板子来解决了这道题。#includ...原创 2019-01-01 18:18:47 · 238 阅读 · 0 评论 -
HDU1196_bitset的使用
1.看了网上的题解大多都是模拟做的,其实这个题是没有什么意思的,之所以写这篇博客是因为想说明一下平时取一个数据的二进制数时,我们可以很简单的使用bitset这个类。至于这个类到底是怎么用的,大家可以自己去看一下C++的文档。我这里给出AC的代码,是十分简洁的。#include<bits/stdc++.h>using namespace std;int main(){ in...原创 2019-01-02 13:49:44 · 192 阅读 · 0 评论 -
HDU5752
1.题目链接。题目大意:给定一个数据,判断是否可以在五次内开方把它变成1,开方的时候取下整。倒着推回去,取下整开方是1的数据是1-3,再开方是4-7.。。其实这个规律十分的明显,倒着推回去就是2的k次方到pow(2,k+1)-1这个区间的数据开方取下整都是一个数,推回去之后,临界数据就是pow(2,32)-1。大于它的都是不行的,小于它的都是可以的。输入采用字符串,然后就OK。下面是AC代码:...原创 2019-01-19 19:07:07 · 200 阅读 · 0 评论 -
【HDU5461】维护最大值和次大值
1.题目链接。题目大意:给定一个数组t,和a,b.求表达式a*t[i]*t[i]+b*t[j]的最大值,其中i!=j。2.这个题之前区域赛模拟的时候写了一下,代码写的很乱,其实我们分析一下就知道,我们对数组排序,那么对于所有的a,b,不管是正数还是负数,它的最大值都一定是在特定的几个位置取到的。这几个位置就是排序之后的开始两个数,结尾的两个数和中间的四个数,注意这里中间的四个数有时候存在有时候...原创 2019-03-04 19:37:54 · 443 阅读 · 0 评论 -
【HDU6168】简单的模拟一下
1.题目链接。题目大意:题目中本来有n个数据,但是任意选两个数据相加得到新的数据,现在把产生的数据和原来的数据混合在一起,让你找出来原来的n个数据。2.分析一下,由于这些数据都是整数,所以我们首先对数据排序,那么前边两个最小的一定是原来数组中的数据,那么我们就可以通过这两个数据找出全部的数据,本来是自己模拟一下就知道了,我们可以用一个vis数组来标记数据,比如说,我们首先发现的是a[0],a[...原创 2019-03-16 22:53:47 · 253 阅读 · 0 评论 -
【HDU4666】最远曼哈顿距离+multiset
1.题目链接。题目大意:其实和之前写过的一个最远曼哈顿距离十分的类似,但是这里多了一个操作:就是删除操作。输入 q,k.q代表有q个操作,k代表有坐标是k维的。对于每个操作,如果od=0,那么就是加点,如果是1,就是删除点。注意,这里的删除指的是删除第x个操作加进来的点,不是删除第x个点。每次操作之后,输出曼哈顿距离最大值。2.之前poj上的那个题,直接就是求五维坐标下的最大曼哈顿距离,我们在...原创 2019-04-11 16:01:46 · 249 阅读 · 0 评论 -
【HDU3006】集合求并集
1.题目链接。给定n个集合,使用这些集合组成新的集合,问可以组成多少种新集合。2.之前做过一个类似的问题,使用的是bitset状压集合。其实这个题目意思也差不多。可以看出来,m<=14.也就是说数其实很小,最多:1<<14位。然后我们用一个数就可以状压这个集合,并集其实就是两个数求或。对于每加入一个新的集合,我们把它状压乘一个数,然后和之前得到的集合取个或生成新的集合,这样最...原创 2019-04-23 15:42:46 · 227 阅读 · 0 评论 -
【HDU 5922】Minimum’s Revenge
1.题目链接。这个题让我对一个短语加深了认识:spanning Tree。生成树,一直看成了Splay Tree。。。。。百思不得其解,为什么一个lcm还搞出来伸展树。。最后仔细读才看出来不是Splay这个词。那就比较简单了,每条边选最小即可,最小一定是和1的lcm了。答案就是从2加到n。#include<bits/stdc++.h>using namespace std;#...原创 2019-05-25 23:36:53 · 137 阅读 · 0 评论 -
【HDU 5908】Abelian Period
1.题目链接。暴力可做,但是有一点技巧。利用了素数筛的思想,首先我们知道,k一定是n的因子,在这种情况下,如果我们找到了一个k,那么可以把他的倍数并且是n的因子同时筛掉。这是显然的。#include<bits/stdc++.h>using namespace std;const int maxn = 100010;bool vis[maxn];int a[maxn];i...原创 2019-05-22 19:45:24 · 191 阅读 · 0 评论 -
【HDU 5925】Coconuts
1.题目链接。题目大意就是给了一个图,图上有一些障碍,这些障碍把图分成了几个块,求每一个块中点的数量。因为这个图很大,达到了1e9,但是点很少,只有200个左右,所以需要压缩这个图。也就是离散化,然后dfs即可。离散化操作其实就是一个二维的离散化,对x,y分别做一下一维离散化就行了。#include<bits/stdc++.h>using namespace std;#def...原创 2019-05-27 16:27:12 · 239 阅读 · 0 评论 -
【HDU 4386】Quadrilateral
1.题目链接。题目大意:给四条边,求这四条边能够组成的最大的四边形的面积。2.首先,能不能组成四边形?其实只需前三小的边加起来大于最大的边即可组成四边形。然后什么四边形的面积最大?当且仅当这个四边形在圆上的时候,也就是这个四边形是具有外接圆的时候面积最大。证明很简单,就是一些高中数学里面的知识。不再详述。最大面积是多少?类比海伦公式:p=(a+b+c+d)/2.S=sqrt((p-a)*(p-...原创 2019-06-04 16:51:28 · 381 阅读 · 0 评论 -
【HDU 5933】ArcSoft's Office Rearrangement
1.题目链接。原来n个物品采用题目给的分割方式分割成k种,输出最小的分割步数。2.直接模拟就好了,对于每个数字,显然只有两种做法,分割,合并。直接模拟完事。#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 10;#define ll long longll a[N];int main(){...原创 2019-06-22 15:50:00 · 312 阅读 · 0 评论 -
【HDU 5938】Four Operations
1.题目链接。题目里面有一个in order。就是按照顺序的意思,要不然这个问题就是NP的了。既然是有序的加减乘除,那么这道题就是一道水题了。2.显然,我们需要把减的数尽量的小,也就是乘和除出来的数据尽量的小,前边两个加起来尽量大,尽量大其实很简单,位数越多越大,所以前边两个数肯定是一个一位数加上一个n位数,然后有两种情况,第一种是留出来三位数,前两个乘,除后边一个。但是我们知道,这种出来的最...原创 2019-06-23 12:38:39 · 257 阅读 · 0 评论 -
【HDU 5936】Difference
1.题目链接。题目定义了一个f(y,k)函数,f(y,k)就是y每个数位的k次方求和。x=f(y,k)-y.现在已经知道了x.k.问有多少种y满足条件。首先x<1e9,说明y不是很大,int范围内的数据。最多时10位数据。现在我们假设y是10位数,然后分别考虑高五位和低五位。那么y一定可以被写成:a+b*(1e5).带入原方程:...原创 2019-06-23 15:28:36 · 286 阅读 · 1 评论 -
【HDU 5944】Fxx and string
1.题目链接。题意比较简单,想表达的意思就是(i,j,k)是等比数列的相邻的三项,Si='y',Sj='r',Sk='x'.满足这些条件。而且第三点还强调了,j必须是中间项。2.直接枚举一下公比完事了。#include<bits/stdc++.h>using namespace std;const int maxn = 10010;char s1[maxn],s[max...原创 2019-07-14 10:33:05 · 161 阅读 · 0 评论 -
HDU1214_逆序数的性质
1.题目链接。其实这个题就是考察一个逆序数的性质,并且推广了。首先逆序数就是这样的数:i>j但是ai<aj.这样的一对i,j叫做一对逆序数。逆序数有很多应用,其实很重要的一个应用就是用来定义行列式的值。这个暂时先不说,其实两个相对序列的逆序数的总数是一定的。比如12345与54321他们的逆序数之和是C(5,2)。这里考的就是这样的问题,所以把12345转换成54321需要C(5,2)...原创 2019-01-05 22:12:55 · 2272 阅读 · 0 评论 -
HDU1025-二分求LIS。
1.题目链接。说了很多,但是一句话可以概括。在平行线的之间有一些线段,取一组线段使得任意两条不相交,求最多有多少条这样的线段。2.分析:为什么就是转化成了LIS了呢?其实这个很简单,我们只需要考虑一条边,从1到n,然后把另一条边上的数字映射上来,并且是一一对应的,所以就是个数组了。a[i]=j;代表i和j之间有一条线段,做完这个映射之后,我们可以观察到,如果在poor cities中,i<...原创 2019-01-01 16:41:19 · 370 阅读 · 0 评论 -
HDU1024-最大子段和
1.题目链接。题意大概就是,把一个数组划分成不相交的m段,使得这m段之和加起来最大。输出最大值。这一看肯定是个DP了,我么稍微的分析一下其实就可以写出DP式子。2.dp[i][j]表示前j个数划分成i段的最大值,显然我们这里的决策取决于j是否属于第i段。那么就会有两种情况(1)第j个元素被划分在了第i段,这个转移就很简单了dp[i][j]=d[i][j-1]+a[j].这个转移应该是很显而易见...原创 2019-01-01 15:25:12 · 2907 阅读 · 7 评论 -
HDU-1045
题目链接。题目大意:其实就是一个有限制的在方格上东西,规则是这样的:首先两个圆圈不能再同一行或者同一列,但是如果中间有墙挡着了,就可以在同一行或者同一列。墙所在的位置显然是不能放东西的,给你地图求出最多能在图上放置多少个圈圈。这个显然也是个dfs了,分析一下dfs的规则,首先图很小,那么不用管太多的减支,只需要考察递归的出口就行。然后我们需要考虑的是要搜索谁?如果是搜索整张图,那么有点复杂的,不如...原创 2018-12-05 20:22:58 · 924 阅读 · 2 评论 -
HDU1166_最简单易学的线段树
题目链接题目大意:有N个工兵的营地,对于这些营地有三种操作。(1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30)(2)Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30);(3)Query i j ,i和j为正整数,i<=j,表示询问第i到第j个营地的总人数;(4)End 表示结束,这条命令在每组数据最后出现;要求快速的实现这三...原创 2018-10-21 21:05:29 · 269 阅读 · 0 评论 -
前缀和与后缀和(HDU6186)
题目链接。题目的大意是:给一个数组,和一个数组的下标·,然后在数组中去掉这个下标对应的元素,把剩下的元素全部做&/|/^这三种位运算,输出位运算之后的结果。数据范围1e5.当然暴力是不可行的。首先需要知道的是:一个数&自己不变,|自己也是不变,^自己是0。这样我们对于每一种运算维护两个数组,一个前缀数组,一个后缀数组。这样两个结合起来可以达到去除任意一个中间元素的效果。/...原创 2018-10-20 11:51:52 · 3826 阅读 · 1 评论 -
HDU2084_DP初步
题目链接。题目的意思就是给一个数塔,从顶部开始走到最后一层使得走过的节点数据加起来尽可能的大,求这个最大的数据。这是一个DP的经典题目。我们通过两种思路来分析。1:我为人人DP。我们按照题目的意思来,从塔尖开始,对于第二层来说,这一层最大的数据只能是第一层加上自己当前节点的数据。那么处理好第二层我们来到第三层,第三层的每一个节点都有两种选择我们当然是选择两个中间较大的那个加到自己的节点上,这样...原创 2018-10-19 21:06:18 · 136 阅读 · 0 评论 -
树形DP(HDU1520)
一般的DP都是在线性结构上的DP,对于树形结构也是可以进行DP的。在树上的DP叫做树形DP,树形DP其实可以类比一般的DP,一般的线性DP的其实也有两种:人人为我的DP与我为人人的DP。这个具体的含义我们接下来再说,其实无非就是DP的两种方向,一种是从起点到终点开始DP,一种是从终点向起点DP。在树形结构中其实也有这种关系,树形结构相连的节点的关系是一种父子关系,所以DP的也会分为两种,从父节点转...原创 2018-10-19 16:59:39 · 164 阅读 · 0 评论 -
二分法求最值(HDU2899)
题目链接。题目就是给出一个关于x的多项式,其中y是参数,给定任意的y求出这个多项式的最小值。我们首先观察y的范围就可以知道,x一定是在[0,100]之间的数字,求这个多项式的最小值,当然是当这个多项式对应的函数的导函数的等于零的时候最可以取得最值(当然这句话是很不严谨的,导函数等于零只是函数取最值的必要条件,但是在这个题中可以这么说)。我们可以首先对这个函数求导,求导之后二分出零点,带入原方程就可...原创 2018-10-17 19:45:18 · 793 阅读 · 0 评论 -
ACM_贪心(HDU2037&HDU1789)
1.贪心算法是ACM十分常用的手法,这是一种求最优解的策略。通过将求解一个整体最优解的问题分割求解一些局部最优解的问题。这种思想被用在接下来很多的算法中,比如最小生成树的普里姆算法其中就有贪心的思想。我们通过实际的例子来感受这种算法。2.今年暑假不AC。拿到这个题目我们按照很常规的思想来思考:我们肯定是想要选取那些结束的早,持续的时间短的节目来观看,这样才能达到观看的节目最多。那么我们的思想其...原创 2018-10-16 22:03:47 · 431 阅读 · 0 评论 -
奇偶减支的使用
题目链接。题目大意:给定迷宫的地图,起点S终点D和限制,D是一扇门,会在T时刻内打开,只有当D打开并且dog到达该点才能成功的逃脱,否则无法逃脱。给出相关的参数,判断dog是否可以逃脱。看完之后发现这显然是一个dfs搜索的题目,我们当前点进行四个方向的搜索,判断步数和时间的关系即可。但是会发现程序超时,那么说明一个问题,我们的减支的力度不够,要从别的方面思考该如何进行减支。看到这个题和一般的题...原创 2018-12-03 17:37:52 · 187 阅读 · 0 评论 -
平面最近的点对求解-HDU1007
1.题目链接。题目大意:给平面上的一堆点,求解最近的两个。这个问题最简单的写法肯定是对于每一个点暴力的扫一遍,然后记录最小的距离。这个复杂度是n^2的。稍微思考一下我们可能有这样的感觉,如果我把这些点按照x或者y排个序,那么最近的点是不是就是在该点的附近呢?甚至是相邻?这样我们只需要nlogn就可以解决这个问题。如果想到这里不进行深入的思考就去写代码,一测样例,还过了,交上去就wa了。为什么会wa...原创 2018-12-03 07:51:47 · 350 阅读 · 0 评论 -
HDU1009—贪心
题目的链接吃的有点饱,不是太想读题,大概的意思就是:一只fatmouse和一些cat交易bulabula的一堆1,其实就是买东西怎么买划算,这很显然啊,当然是单价越低的越划算喽,所以排序的规则就出来了。然后贪心的选取就好了。比较水就不再继续继续分析了,直接写代码。#include"pch.h"#include<iostream>#include<algorithm>...原创 2018-12-03 20:50:51 · 170 阅读 · 0 评论 -
HDU1856_并查集
1.题目链接。题目的大意:和畅通工程的意思是一个意思,也是n个人,其中每两个人是朋友,给出这些朋友的关系,其中朋友可以使直接的朋友,也可以是间接朋友,所谓的间接的朋友就是朋友的朋友也是朋友。然后给出这些人朋友的信息,找一个朋友圈,是的其中的人数最多。哈哈,个人的理解哈,我形象的把它定义成朋友圈。2.读完题之后就知道这是一个并查集的使用,但是有一个问题,我们平时使用的并查集一般都是确定两个类是否...原创 2019-01-04 19:52:58 · 208 阅读 · 0 评论 -
并查集
1.先放一个很有意思的大神的博客,关于并查集的解释。并查集。2.并查集看名字就知道是干嘛的了。并和查,合并等价类,查询当前元素属于哪个等价类。(什么叫等价类?就是具有相同特性的一组个体,狭义一点,就在在一个连通分量的数据)。这里我就不再废话了,直接给出HDU1232的代码喽。#include<iostream>using namespace std;#pragma war...原创 2018-12-21 21:34:45 · 125 阅读 · 0 评论 -
HDU1272_无向图的判环
1.题目链接。题目大意其实很清楚了,就是给你一些点对,这些点对之间有边相连。这些边连起来组成了一个迷宫,现在的问题是从迷宫上的任意一个点到另外一个点要求只能有一条路径。判断给出的图是否是满足条件的。看到这个要求其实很简单了,就是图的生成树嘛,n个顶点需要n-1条边,至于无向图的联通判断我们采用并查集,因为如果一条边上的两个点具有相同的祖先,那么一定是有环存在的,所以我们对输入的每一条边进行并查操作...原创 2019-01-04 20:35:31 · 395 阅读 · 0 评论 -
HDU2044_斐波那契
1.题目链接。题意其实十分的明显,只能向右走,所以就是只能是由两个方向转移,n-1和n-2.这是明显的斐波那契的特征。知道这些其实还是不够的,为什么?因为输入的是两位数啊,不是仅仅从起点走到当前点,其实这等价于二者之差的斐波那契数(为什么?可以自己证明一下,应该还是很简单的)。分析好了这写,这题已经解决了。#include<iostream>using namespace st...原创 2018-12-31 16:10:54 · 181 阅读 · 0 评论 -
HDU1023-卡特兰数
1.题目链接。题意十分的简单,一组数据经过一个栈的转换到底有多少种出栈的序列。这个我们根据前边的结论就可以知道这个就是卡特兰数简单的使用。但是由于数据量比较大,使用JAVA即可。代码如下:import java.math.BigInteger;import java.util.*;import java.math.*;public class Main{ static ...原创 2019-01-01 13:21:50 · 368 阅读 · 0 评论 -
【HDU 6660】Acesrc and Hunting
1.题目链接。在网格图中找一条哈密顿路径。每一步的距离(1,3).2.一个论文的简化版吧,上一张图: 是不是构造完了?贼有趣。代码也好好写,直接dfs,或者简单点两个while。嘻嘻,我没写。就补贴代码了。...原创 2019-08-14 20:04:25 · 391 阅读 · 0 评论