自定义博客皮肤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

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

  • 博客(294)

转载 dig参数解释

转自http://luodw.cc/2015/12/27/dns03/:charles@charles-Lenovo:~/mydir/Hexo/source/_posts$ dig baidu.com; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> baidu.com dig这个程序的版本号和要查询的域名 ;; global options: +cmd 表示可以在命令后

2017-07-14 10:00:12 808

转载 mac 安装MySQL-python

https://www.zhihu.com/question/30963225 搬一下知乎大佬的答案,因为百度出来的实在坑。。。 两行命令 brew install mysql-connector-c pip install MySQL-python

2017-04-14 10:56:31 1318

原创 CF 707C 公式

题意: 给出直角三角形的一条边,求另外两条边。无解输出-1. 思路: 1、2无解。 n为偶数,(n * n / 4 - 1) ^ 2 + n * n = (n * n / 4 + 1) ^2 n为奇数,((n * n - 1) / 2) ^ 2 + n * n = ((n * n + 1) / 2) ^ 2题解说他上网查出来的2333 代码: #

2016-08-31 21:42:22 916

原创 SRM 697 div2 550 推公式

题意: 给50个数ai,这些数都是2幂次数,且这些数都大于1。现在对于P = mul(ai), 是否存在bi,对于每个bi有ai*bi整除P。 思路: 化简之后就变成了S = sum(ai的幂次),是否存在bi使得(bi*ai的幂次)被S整除。 赛中的时候想了高斯消元,发现并不能做,因为系数比较多而且无法控制ai的幂次必须大于等于1。 实际上这是一道公式题。

2016-08-29 10:54:49 412

原创 Codeforces 706E 十字链表(dancing link)

Codeforces 706E题意: 给一个1000*1000的矩阵,有1000次操作,每次可以交换矩阵的两个子矩阵,保证子矩阵不重叠。输出最后的矩阵。 思路: 十字链表的版题,可以用dancing link的类似数组实现。 具体方法为,先把所有二维坐标转化为一维坐标。开两个数组ri[i],down[i]。分别表示对于某一维下标为i的矩阵单元格,它右边和下边的格子下标

2016-08-13 21:36:19 665

原创 Codeforces 703D 树状数组

Codeforces 703D 题意: 给1e6长度的区间,每个单位代表一个数。 给1e6个询问,每次问区间内出现次数为偶数次的数异或和。 思路: 赛中的时候想莫队水过去,结果pretest都没过233 正解是树状数组。首先假设是奇数次的话,就是一个简单前缀和。现在偶数次,有一个处理技巧就是记录这个区间出现过的数字的异或和。然后就是明显的树状数组统计题。

2016-08-06 21:24:24 402

原创 Codeforces 703C 思维or计算几何

Codeforces 703C题意: 给一个凸包,凸包有向x轴负向的恒定速度v。 现在某人从(0,0)出发,以最大速度不超过u的变速运动运动到(0,w) 问最少用时到达,且不碰到凸包 思路: 如果会直线与凸包相交的判定的话,就可以直接二分了。 赛中使用了分类讨论,挂了。以相对运动来说,相当于人从x轴上某一点出发。想复杂,错误的认为人先到凸包上某一点

2016-08-06 09:51:47 319

原创 HDU 3652 数位DP

HDU 3652 数位DP。dp[i][j][k][l],表示第i位,之前讨论数位j,有多少余数为k,是否已经遇到13为l 一种更优的设计方法为dp[i][j][k]。i为数位,j为余数,k表示三种状态,分别是前一个数不是1、前一个数是1、已经遇到13.#include <cstdio> #include <cstring> #include <cstdlib> #include <cmath>

2016-08-03 21:14:11 182

原创 HDU 3555 数位DP

HDU 3555 又是一道数位DP的题。dp[i][j]表示当前为i位,前一位为j的值。 与HDU 2089类似,发现只要修改转移方程,实现起来是有规律可循的。#include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <string> #include <algorithm> #includ

2016-08-03 20:42:46 151

原创 HDU 2089 数位DP

HDU 2089 数字中不能出现’4’和’62’,问在某个区间中这样的数字有多少个。 学下数位DP,抄了一个大哥的代码。 dp[i][j]表示当前讨论的是数字十进制表示的第i位,并且i+1位为j的总答案数。 网上还有一种表示方法是dp[i][j],j为0、1,表示前一位是否为6.#include <cstdio> #include <cstring> #include <cstdlib> #

2016-08-03 20:09:36 174

原创 2016多校第五场 1001 HDU 5781 DP

HDU 5781 DP题意: 从银行取钱,钱数为随机数[0,w]。如果当前取钱数大于真实的钱数,就会报错。报错次数有限制,求取钱次数的期望值。 思路: 首先用二分试,发现第三个样例过不了。 赛中的时候不是主要负责的题,给了一个dp[i][j]的公式后就没管了。 然而这样的dp过程是10^9的。 实际上,本题是有trick的。假设每次都按二分取,发现最多15次不合法的取法,就可以把

2016-08-03 11:22:02 634

原创 2016多校第三场 1004 HDU 5755 高斯消元

HDU 5744题目大致意思: 每个格子有一个数值,数值范围[0,2]。现在有一种操作,使得这个格子值变成(v+2)%3,周围四个格子值变为(v+1)%3。要求给出一种合法的操作方案。题解: 列出方程,发现是带模的n*m个变元的n*m个方程,于是用高斯消元求解(赛中感觉状态十分之多就想网络流去了233)关于高斯消元的步骤: 1.通过初等行变换变为阶梯矩阵 变量设

2016-07-27 20:26:34 460

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

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

2016-06-22 10:56:05 363

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

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

2016-06-18 18:09:43 733

原创 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 290

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

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

2016-06-14 18:54:20 217

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

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

2016-06-13 15:32:02 181

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

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

2016-06-13 09:04:11 146

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

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

2016-06-12 10:05:52 186

原创 11年福州 E

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

2016-06-12 09:02:11 204

原创 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 253

原创 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 306

原创 USACO Section 2.4

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

2016-06-08 20:16:09 158

原创 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 174

原创 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 long const int MAX

2016-06-07 08:03:24 166

原创 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 169

原创 USACO Section 1.5

USACO Section 1.5 Number Triangles/* ID: beihai2013 TASK: numtri LANG: C++ */ /*简单DP*/ #include <bits/stdc++.h> using namespace std; const int MAXN = 1000 + 5; int g[MAXN][MAXN], n; int ma

2016-05-31 17:32:15 151

原创 USACO Section 1.4

USACO Section 1.4 Arithmetric Progression/* ID: beihai2013 TASK: ariprog LANG: C++ */ /* 找出满足(a+i*b)(i<n,i>=0)的所有a,b,其中a+i*b的值在集合S{P^2 + Q^2}中 暴力循环做就可以了,主要是题意比较难理解 */ #include <bit

2016-05-31 12:08:24 202

原创 USACO Section 1.3

USACO Section 1.3Mixing Milk /* ID: beihai2013 TASK:milk LANG: C++ */ /*贪心选择消费最少的农人*/ #include <bits/stdc++.h> using namespace std; const int MAXN = 5000 + 5; struct Node { int u, v; }n

2016-05-31 08:45:22 222

原创 Codeforces Round 354 div2 676ABCDE

Codeforces Round 354 div2 通过数: 4 A:#include <bits/stdc++.h> using namespace std; const int MAXN = 100 + 5; int a[MAXN], n; int main() { while(scanf("%d", &n) != EOF) { for(int i = 1 ; i <

2016-05-26 16:58:02 208

原创 Codeforces Round 353 div2 675ABCDE

Codeforces Round 353 div2 通过数: 2 A:#include <bits/stdc++.h> using namespace std; int main() { int a, b, c; while(scanf("%d%d%d", &a, &c, &b) != EOF) { if((c - a) < 0 && b > 0) printf(

2016-05-26 10:59:25 195

原创 Topcoder SRM 687 div2

Topcoder SRM 687 div2 通过数:2 250:#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include

2016-05-11 09:37:26 577

原创 Topcoder SRM 688 div2

Topcoder SRM 688 div2 250:#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numer

2016-05-10 11:38:23 761

原创 Codeforces Round 350 div2 670ABCDEF

Codeforces Round 350 div2 通过数:5 都是简单题,最后一题由于中间有点事空了一段时间,赛后没看题解只看数据过了。 A: 简单题。刚开始想用暴力写的,尽量避免分类讨论。 然后发现暴力还不如分类讨论#include <bits/stdc++.h> using namespace std; int main() { int n; while(scanf(

2016-05-06 18:28:32 501

原创 Codeforces Educational Round 12 655ABCDE

Codeforces Educational Round 12 通过数: 3 A: 刚开始用公式分类讨论,后面发现暴力才是一种更优美的解法#include <bits/stdc++.h> using namespace std; const int MAXN = 10 + 5; char str[MAXN]; int main() { int x1, y1, x2, y2; w

2016-04-21 22:32:29 292

原创 Codeforces Round 347 div1 abc 662BD 663A

Codeforces Round 347 div1 通过数: 0 A: /* 就是整数划分之类问题 注意几个坑点 负数不是都取-1,可能取n来满足过多正数的条件自己的解法是在选取正数都取1(负数都取-1),负数(正数)需要满足等式的最大值。 这样正数(负数类似)可以分成三个部分 一是值为n的部分,一是中间值部分,一是值为1的部分 遗憾的是赛中中间值部分值大于n时未

2016-04-19 21:07:24 489

原创 武大打铁之后

如何保持高效放弃一切幻想和欲望,专心当前的事情,然而不管其他。da

2016-04-17 22:41:48 193

原创 Codeforces India Hack2016 653ABCED

Codeforces India Hack2016 653ABCED 通过数:2 Rating:1288 倒数第二题是后缀数组,倒数第一题没看,哪一天再厉害一点再做吧。A: 简单题#include <bits/stdc++.h> using namespace std; #define pb push_back const int MAXN = 1000 + 5; int a[MAXN],

2016-04-13 19:15:21 221

原创 HDU 3001 状压(三进制)

/* 状压DP。 三进制表示访问几次 */#include <bits/stdc++.h> using namespace std; #define inf ((long long)1000000007 * 1000000007) #define LL long long const int MAXN = 10 + 2; const int MAXM = 120000; LL

2016-04-12 19:37:30 244

原创 HDU 2102 BFS

/* 坑点有: 两层相对位置都是#的情况不可取 T时刻到达公主处可取 */#include <bits/stdc++.h> using namespace std; const int MAXN = 10 + 5; char g[MAXN][MAXN][MAXN]; int dp[MAXN][MAXN][MAXN]; int n, m, T; struct Node

2016-04-12 17:59:35 223

空空如也

空空如也

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