自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

花月阁

如果你现在很累,那么说明你在走上坡路!

  • 博客(358)
  • 问答 (2)
  • 收藏
  • 关注

原创 【HDU 5402】Travelling Salesman Problem(构造)

被某题卡SB了,结果这题也没读好。。。以为每个格子可以有负数就当搜索做了,怎么想也搜不过去,后来发现每个格子是非负数,那么肯定就是构造题。题解如下:首先如果nn为奇数或者mm为奇数,那么显然可以遍历整个棋盘。如果n,mn,m都为偶数,那么讲棋盘黑白染色,假设(1,1)(1,1)和(n,m)(n,m)都为黑色,那么这条路径中黑格个数比白格个数多11,而棋盘中黑白格子个

2015-08-18 21:14:17 856

原创 HDU 1043 八数码(A*搜索)

在学习八数码A*搜索问题的时候需要知道以下几个点:Hash:利用康托展开进行hash康托展开主要就是根据一个序列求这个序列是第几大的序列。A*搜索:这里的启发函数就用两点之间的曼哈顿距离进行计算就可以。减枝:在八数码里,任意交换一个空行和一个位置的数字,这个八数码的逆序数是不变的,这样就可以根据目前状态判断是否可达终点状态了。第一次做这个题用的map进行哈希,结果果断超

2015-08-18 10:13:02 892 1

原创 【SPOJ QTREE】树链剖分模板

用线段树求解,这里注意由于求的是路径最大值,注意一下细节。#include#include#includeusing namespace std;const int MAXN = 10010;#define lson (pos<<1)#define rson (pos<<1|1)const int INF = (1 << 30);int n;//---------------

2015-08-16 21:53:46 689

原创 【POJ 3241】曼哈顿最小生成树(模板整理)

关于 曼哈顿最小生成树 的证明见:http://www.2cto.com/kf/201505/399861.html模板:#include#include#include#includeusing namespace std;const int MAXN = 100010;const int INF = 0x3f3f3f3f;struct Point{ int x,

2015-08-16 21:45:15 1397

原创 【HDU 5372】Segment Game(树状数组)

题解:对于新插入的线段,查询有多少个线段左端点大于等于该线段的左端点。 再查询有多少个线段的右端点大于该线段右端点, 两者之差就是答案。这里注意两个问题,一个是离散化,第二个这道题时间卡的可能比较严,线段树貌似会超时~好久没写离散化了。。。生疏了#include#include#includeusing namespace std;const int max

2015-08-13 23:22:01 789

原创 【HDU 5384】Danganronpa(AC自动机)

看官方题解貌似是个DP比赛的时候用kuangbin的AC自动机模板瞎搞的,竟然A了,而且跑的还不慢。。存下模板吧#include#include#include#include#include#include#includeusing namespace std;const int maxn = 500010;const int maxd = 26;struct T

2015-08-13 20:24:25 960

原创 【HDU5371】Hotaru's problem(Manacher + set)

利用Manacher求出每两个数字中间位置的回文长度之后利用set进行维护,大题思路如下:要满足题目所要求的内容,需要使得两个相邻的回文串,共享中间的一部分,比如上边的两个字符串,共享 8 9 10这一部分。 也就是说,左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也是一样。 因为我们已经记录下来以第i个点和第i+1个点为中心的回文串长度, 那么问题可以转化成,相距x

2015-08-11 20:40:13 799

原创 【HDU 4763】Theme Section(KMP)

这题数据水的一B,直接暴力都可以过。比赛的时候暴力过的,回头按照正法做了一发。匹配的时候 失配函数 其实就是前缀 后缀的匹配长度,之后就是乱搞了。KMP的题可能不会很直接的出,但是KMP的思想经常渗透在很多题目里面,最近需要多练习一下。#include#include#includeusing namespace std;const int maxn = 1000005;

2015-08-10 22:49:35 826

原创 【HDU 4760】Good Firewall(Trie水题)

计算机网络没学好,比赛的时候脑子一抽题意理解错了,赛后自己写了1A,内流满面。。。。和一般的trie不太一样,这里的trie每个节点开一个vector存网络的id恩,就这样,跑的挺快的 78ms#include#include#include#include#include#include#include#define LL long longusing namespa

2015-08-10 20:21:51 743

原创 【HDU 4819】Mosaic 二维线段树模板

二维线段树的模板题,和一维一样的思路,更新的时候注意一下细节。存模板:/* 二维线段树模板整理*/#include#includeusing namespace std;#define lson (pos<<1)#define rson (pos<<1|1)const int maxn = 805;const int INF = (1 << 30);int n;

2015-08-09 17:58:22 1129

原创 【HDU 4122】RMQ

这道题暴力竟然比标程跑的快!!!!在这里RMQ维护的是一段区间内最小代价的下标。另外就是注意一下 求某两天之间有多少天的函数怎么写。感觉这道题没做出来一个是题没读懂,第二个就是不敢去暴,第三个就是对一些问题的转化不够。#include#include#include#include#include#include#includeusing namespace std;

2015-08-07 21:15:59 684

原创 【ZOJ 3810】四色定理

不明觉厉,模板先存下来#include #include const int MAXN = 117;char mm[MAXN][MAXN];char col[2];int n;void debug(){ printf("-----------------------\n"); for(int i = 0; i < n; i++){ for(int

2015-08-07 09:15:59 717

原创 【CodeForces】Gargari and Bishops

根据贪心可以知道,放置的教主必须不能相互攻击到(也就是不在一条对角线上)才可以使得结果最大化。根据观察可以得到教主相互不攻击的条件是他的坐标和互为奇偶(x + y)之后直接暴力,处理每个坐标对角线的和就好时间复杂度 0(n ^ 2)#include#include#includeusing namespace std;typedef long long LL;const

2015-08-03 00:11:20 816

原创 【HDU 5335】Walk Out(BFS)

这道题卡时间卡的比较紧。一开始直接BFS 毫无疑问的超时,之后想到根据BFS的常规优化思想,去选择起始点进行遍历。这样我们一开始先BFS一次,这次的BFS是选择出这一点为1并且从起点到这一个点,中间路径的点全为0的点。这样选择出这个点之后,这个点到终点的路径长度就可以断定了。之后我们把所有到终点距离最小的点放在一个容器里进行BFS。这道题没有做出来的原因很大一部分就是对BFS的

2015-07-31 10:03:56 810

原创 【HDU 2586】LCA模板

在一棵树上 求2个点的最短距离,那么首先利用LCA找到2个点的最近公共祖先公式:ans = dis(x) + dis(y) - 2 * dis(lca(x,y))这里的dis(x)指的上x距离根节点的距离注意一些细节方面,比如数组的越界问题:#include#include#include#includeusing namespace std;typedef long l

2015-07-30 10:37:55 671

原创 【HDU 5316】Magician(线段树)

一开始度错题了,题意是求一段和最大的【子序列】,要求相邻两个元素的位置必须互为奇偶。这样我们可以使用线段树维护4个值:一段区间内开头结尾元素为:奇奇奇偶偶奇偶偶的最大值之后在pushup的的时候根据题目所给的意思进行合并。#include#include#includeusing namespace std;#define lson (pos<<1)#

2015-07-30 09:43:16 668

原创 【CodeForces】E. Xenia and Tree(分块 + LCA)

对于两个操作,对于操作1,每次储存要修改的点,直到存了sqrt(m)个点的时候进行更新,并将图重建一次(重新记录每个点到最近染色点的距离)对于操作2,利用LCA求现在存着的点(也就是还没有更新到图上的点)和这个点的距离的最小值以及这个点在当前图中和最近的染色的那个点的距离。话说LCA真是个好东西=  =!这几天补一补去题解在这里:http://codeforces.com/blog/e

2015-07-29 19:47:27 837

原创 【HDU 5294】Tricks Device(最短路+最大流)

题目大题:求最多拆几条边图的1 -> n的最小距离不会变求最少拆几条边图的1 -> n的最小距离会变最短路 + 网络流的问题求出最短路径图(包含所有最短路径的图) 之后用m - (拥有最少边数的最短路径) 得到一个解之后将最短路径图中的边重新建图(流量为1)求最大流感觉写的比较麻烦,时间也正好卡着过的。#include#include

2015-07-27 20:29:00 641

原创 【HDU 5312】Sequence(数学问题)

学了下三角形数的性质:1.任意一个数都可以由三个三角形术表示2.任何三角形数 * 8  + 1得到一个平方数3.验证三角形数的公式:n = (sqrt ( 8  *  X  +  1 ) - 1) / 2如果为三角形数那么n为整数切为第n个三角数具体连接:http://baike.baidu.com/view/1047488.htm#include#include#

2015-07-27 16:55:25 779

原创 【HDU 5305】Friends 多校第二场(双向DFS)

根据题意的话最多32条边,直接暴力的话 2 ^ 32肯定超时了,我们可以分两次搜索时间复杂度减少为 2 * 2  ^ 16唯一需要注意的就是对目前状态的哈希处理,我采用的是 十进制表示法跑的还是比较快的,可能是用STL函数的原因增加了一些常数复杂度。#include#include#include#include#includeusing namespace std;t

2015-07-27 10:08:04 692

原创 Linux远程登陆以及免密码登陆

最近学了一下linux 的东西,其中有一个是关于ssh(linux远程登陆的)在这里总结一下:首先关于ssh的安装假设我们需要登陆的主机位B,在B主机的终端输入: ssh localhost如果出现:就说明还没有安装ssh,所以需要安装ssh输入  sudo apt-get install openssh-server进行安装ps:如果这里安装失败,可能是你的一

2015-06-25 20:39:12 840

原创 关于ping以及TTL的分析

首先介绍一下ping这个工具ping [目标]的意思就是向目标发送几个数据包,之后如果目标接受到一个数据包,那么目标就会向发送ping的主机返回一个数据包比如上图,我ping了百度的服务器(windows下默认ping 4次)字节代表数据包的大小,时间顾名思义就是返回时间,TTL这里稍微说一下:TTL的意思就是数据包的生存时间,当然你得到的这个就是剩余的生存时间。T

2015-06-23 18:53:28 26123 1

原创 【HDU】2818-Building Block(并查集)

坑死了,这道题QAQ。。。说好的没有0,但是后台数据有0,WA了一下午= =利用num[i]代表i下面有几个格子,Size[i]代表i做底的时候这一堆有几个箱子#include#includeusing namespace std;const int maxn = 30005;int n,fa[maxn];int num[maxn],Size[maxn];char op[5];

2015-06-04 16:22:12 522

原创 【HDU】2817-A sequence of numbers(快速幂)

对于两种序列一种等比,一种等差如果是等比 ak = a1 + (k - 1) * d 直接用((a1 * mod) + ((k - 1) % mod) * (d % mod)) % mod求就可以了如果是等差 ak = a1 * q ^(k - 1) 利用快速幂求出q ^(k - 1)可以得到结果#include#include#include#includeusing nam

2015-06-04 13:55:07 662

原创 【HDU】5254 棋盘占领(BFS)

这题给的不明不白的,一开始不清楚有公共点是几个意思10 1101   可以变成 11直接BFS就可以了#include#include#include#includeusing namespace std;const int maxn = 555;int n,m,ans;int vis[maxn][maxn];int mat[maxn][maxn];int sta

2015-06-04 00:25:18 718

原创 【HDU】5256 序列变换(最长上升子序列变形)

如果a[i]和a[j]想不变,需要满足的条件就是a[j] - a[i] > j - i也就是a[i] - i 比如1 4 2 就不满足,所以1和2之间一定有一个需要改变所以我们对所有a[i] - i求其最长上升子序列就可以了#include#include#includeusing namespace std;const int maxn = 100005;con

2015-06-03 22:29:02 817

原创 【HDU】5253-连接的管道(并查集)

十分简单的并查集问题,注意建图的方式#include#include#include#includeusing namespace std;const int maxn = 1005;const int maxd = 5000005;const int dir[2][2] = {{0,1},{1,0}};int n,m,mat[maxn][maxn],cnt,fa[maxd];

2015-06-03 20:12:49 1150

原创 【HDU】5249-KPI(线段树+离散化)

好久没写线段树都不知道怎么写了。。。非常简单的线段树二分问题#include#include#include#include#includeusing namespace std;typedef long long LL;#define lson (pos<<1)#define rson (pos<<1|1)const int maxn = 10005;int n,Case

2015-06-03 17:01:08 801

原创 【HDU】5247-找连续数(直接暴力)

ORZ,这道题想复杂了,原来直接暴力就可以了复杂度为 n * n * logn#include#include#includeusing namespace std;typedef long long LL;const int maxn = 10005;sets;set::iterator it1,it2;int n,m;int num[maxn] = {0};LL arr

2015-06-03 15:21:08 1146

原创 【HDU】5248-序列变换(贪心+二分)

二分枚举长度改变的长度就行了#include#include#includeusing namespace std;const int INF = 3000000;const int maxn = 100005;int n,arr[maxn],arr2[maxn];bool solve(int x){ memcpy(arr2,arr,sizeof(arr));

2015-06-03 13:21:53 711

原创 【HDU-5246】超级赛亚ACMer(贪心)

之前用了个nlogn的算法超时了,只能改成n的算法了大题贪心思路就是 对每个人的能力值从小到大进行排序,当前能力值为now,那么我们找到一个人的能力使得这个能力值 这样都跑了600+MS,看来之前nlogn的TLE的不冤枉。。#include#include#includeusing namespace std;typedef long long LL;const int m

2015-06-02 23:33:30 950

原创 【第七届山东省ACM竞赛】Square Number

思路比较明确,就是一个数,如果和另外一个数乘起来是个平方数的话,那么满足一个条件数A可以分解成为n1 个 a1,n2 个 a2 ……数B可以分解成为m1个 a1,m2 个 a2……这满足的条件是(ni + mi) % 2 == 0一个数的分解出来奇个数的因子乘起来得到的值为v,找之前有几个数他的奇个数因子成积为v代码如下:#include#include#include

2015-05-27 22:35:27 1581

原创 【CodeForces】A. Mike and Frog

A. Mike and Frogtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputMike has a frog and a flower. His frog is n

2015-05-27 21:58:00 1449

原创 【ZOJ】Nice Patterns Strike Back(矩阵快速乘法)

dp[[i][j] = sum(dp[i - 1][k]) (k -> j)状态方程,因为N很大而M很小,所以第一时间可以想到矩阵优化可能之前没做过类似的题被卡的很厉害。另外用C++写大数真心麻烦。。#include#include#includeusing namespace std;const int maxn = 45;const int maxd = 30005;

2015-05-26 22:53:28 968

原创 806 - Spatial Structures(DFS)

没什么思路,难就难在麻烦,各种DFS,挺练基本功的...  Problem  VerdictLangTimeBestRankSubmit Time | discuss806 - Spatial Structures AcceptedC++0.2720.045902 mins ago

2015-05-19 19:21:46 826

原创 804 - Petri Net Simulation(简单魔模拟)

比较简单的,注意的问题是一个输入库可能话费多个货物进行转化,需要对输入进行特殊处理  Problem  VerdictLangTimeBestRankSubmit Time | discuss804 - Petri Net Simulation AcceptedC++0.0990.02814

2015-05-19 10:28:56 1306

原创 12166 - Equilibrium Mobile(DFS)

枚举每个点,判断其余深度是否存在点的权值为(1 deep1,deep2为2点的深度写的比较麻烦#include#include#include#includeusing namespace std;typedef long long LL;const int maxn = 1000005;char str[maxn];vectorG[20];LL base[20];

2015-05-19 08:55:20 721

原创 【HDU】 1160 FatMouse's Speed (DP)

一开始写的dfs进行记忆化结果不知道怎么进行路径的记录。。。改成循环就好了dp[i] = max(dp[j]) + 1 , weight[j] speed[i]一开始进行一次排序使得重量递增,这样只需要考虑速度就好了#include#includeusing namespace std;const int maxn = 10005;struct Mouse{ int

2015-05-17 11:05:45 587

原创 【FZU】Problem 2059 MM(离线处理并查集)

离线处理,并查集 #include#include#includeusing namespace std;const int maxn = 100005;struct Node{ int id,value;}node[maxn],input[maxn];bool cmp(Node p,Node q){ return p.value > q.value;

2015-05-15 22:10:35 856

原创 【FZU】Problem 2056 最大正方形

这题的关键就是预处理矩阵利用dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i-1][j-1]递推出矩阵,使得我们以后每次已经利用O(1)的复杂度计算任意一块矩阵之后枚举正方形左上角的坐标二分边长,时间复杂度为n^2 log(n)#include#include#includeusing namespace std;const int

2015-05-15 22:06:53 717

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除