自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

beihai2013

生命是一个巨大的游乐场,或者空虚无比。

  • 博客(14)
  • 收藏
  • 关注

原创 12年成都 E 贪心+KMP HDU 4468

12年成都 E 贪心+KMP HDU 4468赛中的时候过的人不多,也没有什么具体的思路。发现问题可以转化为最短后缀,使得前面的字符串都是它的子串。甚至想着能不能枚举后缀,O(1)或者log的查询。然后就走入死角了。实际上还是字符串的题目做的不够多。如果是倒序遍历的话,那查询的字符串操作也应该是倒序的,不存在一个倒序一个正序之说。再者,要检测之前是否为其子串,最坏情况下需要把整个字符串都遍历一遍,

2016-06-22 10:56:05 450

原创 12年杭州 D 二维树状数组+离散化 HDU 4456

12年杭州 D赛中的时候感觉数组开不下,并没有什么很好的思路 实际上,离散化每个需要操作的点之后,这就变成了一个简单的二维树状数组题目。 关于离散化的操作,由于服务器内存卡的比较死,试了几种姿势后都不行,还是采用网上的线性膜的方法。按理说这种方法可以构造出极端数据卡掉的,但是过了失分点: 1. 没有想到二维线树状数组离散化 2. 离散化的离散方法,离散化的数组大小。 学习点

2016-06-18 18:09:43 874

原创 Codeforces Round 355 div2 (E abandoned)677ABCD

Codeforces Round 355 div2 (E abandoned) 通过数: 3 前三题比较正常,D用了很奇怪的算法强行符合的复杂度,E是十分恶心的模拟由于用了比较笨拙的办法,实在是不想改了…… 关于D,赛中的时候考虑可能出现边过多的情况,这时候没法处理。所以,标程算法给出了这样的答案:边过多时,用bfs搜索全图;边少时,用两两之间求曼哈顿距离更新。可以证明这样的复杂度是O(n*m

2016-06-15 15:08:20 530

原创 11年成都 A 博弈论+记忆化搜索 HDU 4111

博弈 赛中的时候第一反应是结论题,但是跑了几个样例没跑出来 于是试着从算法方面入手。 大概猜测和堆数与石子数的总和有关,但是第一个和第三个样例告诉我应该不是简单的求和关系。 可能是记忆化搜索,但是状态过多实在不知道如何存储,然后就弃疗了……题解是这样的 发现如果当前没有石子是一个,且(石子堆数 + 石子总数 - 1)为偶数,则是必胜状态。 这是整个算法的基础。 但是现在有一些石子堆只有

2016-06-14 18:54:20 306

原创 11年福州 G 迭代加深+强剪枝 HDU 4127

刚开始想了一种奇怪的方法去贪心,因为不是正确的就不贴了,然后T了……题解写的是IDA*,其实是迭代加深和剪枝。剪枝的地方有几处:1.估价函数剪枝,还剩几种颜色估计几步2.无效剪枝,如果当前这个颜色已经没有就不用走这一步了整体的思路是这样的把原图按照颜色做一个连通块,然后原图可以分为三个部分:和(1,1)连通的点、和(1,1)连通的点相邻的点、其他点那么,每次只在这些和(1,1)连通点相邻

2016-06-13 15:32:02 285

原创 11年福州 F 次小生成树变形 树形DP

单独练习的时候,做到最小生成树处理出来后,就不知道怎么处理了。关键是两个子树间的距离,不能在有效的时间复杂度内解决。实际上,对于一个最小生成树,两个子树间距离可以用dp来做。假设从root开始向下搜索,那么dp[root][u]表示root到u和以u为根节点的子树的最小距离,此处距离即是取的不在最小生成树中的原图的边。那么很容易发现是一个简单的树形DP过程。然后,如果对于两个子树呢?两个子树是

2016-06-13 09:04:11 242

原创 11年福州 B 单调栈 HDU 4122

/* 除去数组开小RE了一发,基本1A了 眼泪都流出来了首先转换一下日期成小时,然后用单调栈做找到T时间内合法的最小代价做月饼时间有人说,这个每次往后走一个日期,价值都会变啊所以稍微做这么一个处理,就是单调栈里存的是(cost[i] - 当前小时数 * S)这样就保证了单调栈里的大小不变且可以还原还原的方法取出来的时候,加上(当前小时数*S)失分点: 无学习地方

2016-06-12 10:05:52 263

原创 11年福州 E

/* 这题卡内存实在是太狗了…… 思路很明确,就是几个算法杂糅在一起刚开始粗糙的思路是建一个二叉搜索树,再按照中序遍历把树的点存一遍,最后跑一遍KMP然而 二叉搜索树用的set和数组revg,revg[i]存储对于值为i的节点下标 中序遍历用dfs做本题卡内存,正确的做法应该是 二叉搜索树用的map,因为map是有序且按照第一维升序排列,故可以直接替换

2016-06-12 09:02:11 264

原创 POJ 2499 第k小最短路

/* 简单A*一直搜就可以 坑点是s=t时,假设k=1,不能直接返回0,因为要求必须走过路程 */#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <string>#include <algorithm>#include <iostream>#include

2016-06-09 17:47:19 362

原创 Codeforces Round356 div2 680AB 679ABC

Codeforces Round356 div2 通过数: 3 线上的时候卡在第四题,由于答案的大小没有估计好(猜测最坏情况10^5个),所以没有猜测出相应算法。 返回去看第三题,发现十分简单WA了一发,格式错误一发过了。 看到第五题的时候大概还剩20分钟,代码能力欠缺没调出来。 a:#include <bits/stdc++.h>using namespace std;int a[1

2016-06-09 12:54:20 458

原创 USACO Section 2.4

USACO Section 2.4 The Tamworth Two/* ID: beihai2013 TASK: ttwo LANG: C++*//* 刚开始想复杂了,想通过记录数组然后求牛或者人经过此点的时间戳来求周期,然后求一个通项 后面发现这样的讨论不仅复杂,而且容易出现十分多的情况 然后仔细一想,假设是有人和牛周期的话,他们分别得周期不

2016-06-08 20:16:09 229

原创 USACO Section 2.3

USACO Section 2.3 The Longest Prefix/* ID: beihai2013 TASK: prefix LANG: C++*//* 考虑到需要匹配前缀的长度和字符串的总长度,我们对需要匹配的前缀进行HASH 然后就O(n*10)的简单判断,如果当前hash值在匹配前缀的字符串中HASH值存在的话,说明匹配成功*/#inc

2016-06-07 20:37:58 267

原创 USACO Section 2.2

USACO Section 2.2 Preface Numbering/* ID: beihai2013 TASK: preface LANG: C++*//*每次取最大的合法数的组合删去,类似于二进制表示*/#include <bits/stdc++.h>using namespace std;#define LL long longconst int MAX

2016-06-07 08:03:24 241

原创 USACO Section 2.1

Section 2.1 The Castle:/* ID: beihai2013 TASK: castle LANG: C++*//*简单搜索凑出所有连通快,四进制表示四个方向也是写的很熟练的那种了值得注意的是farthest是最靠近的意思*/#include <bits/stdc++.h>using namespace std;const int MAXN

2016-06-03 10:52:21 244

空空如也

空空如也

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

TA关注的人

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