自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (8)
  • 收藏
  • 关注

原创 HDU 6181 Two Paths 次短路

题目      HDU 6181 分析      裸的次短路,直接套k短路模板就行了。有兴趣的读者可以看我讲k短路的博客,是利用spfaspfa和A∗A^*算法实现的。链接:POJ 2449 A* + spfa求第k短路 。代码#include <cstring>#include <cstdio>#include <queue>using namespace std;typedef lon

2017-08-24 23:58:47 485

原创 HDU 6168 Numbers 思维

题目HDU 6168 分析官方题解 和HDU 6092很类似,不过区别在于6092那道题目可以取多个不同的数字组成一个新的数,所以要用0-1背包。这道题目只能取两个数字组成一个新的数,所以用一个mapmap维护能够组成的数字就行了,每找到一个新的数字,就遍历之前所有的数来更新mapmap。虽然代码看起来是三重循环,但是复杂度是O(M+N2)O(M+N^2)。代码#include <cstrin

2017-08-24 23:01:26 420

原创 HDU 6172 Array Challenge 找规律+矩阵快速幂

题目      HDU 6172 分析      这道题目一看就想到矩阵快速幂。可以先把hnh_{n}算出来,进而把bnb_{n},ana_{n}都算出来。但是发现一个问题,题目中是要求⌊an−−√⌋\lfloor\sqrt{a_{n}}\rfloor对1e9+71e^9+7取模之后的值。但是开根号没法取模啊,所以就要换个思路了。       把⌊an−−√⌋\lfloor\sqrt{a_{n}

2017-08-24 21:41:12 1311

原创 POJ - 2762 && HDU 6165 Tarjan缩点+dp最长路

题目      POJ 2762       HDU 6165 分析      最开始想的是拓扑排序,因为拓扑序列满足如果一个点u可以到v,那么u一定在v的前面。如果求出了拓扑序列,发现序列中u在v的前面,那么就可以认为u可以到达v了。      但是随后想到两个问题如果有环的怎么办呢,就不能求拓扑序列了。虽然这个图存在拓扑序列1-2-3,但是我们能仅仅因为1在2的前面就认为1可以到2吗?显然

2017-08-24 11:32:09 574

原创 HDU - 6170 Two strings dp

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-08-23 13:37:42 405 2

原创 HDU - 6153 A Secret KMP或拓展KMP

传送门:点击打开链接题意就是求一个串T的所有后缀在串S中出现的次数。将S,T都翻转之后就是求T的所有前缀在S中出现的次数。拓展KMP:可以利用拓展KMP求出S的每一个后缀和T的最长公共前缀。假如当前最长公共前缀为k,就说明长度为k的前缀在S中出现了一次,并且这个k前缀不能构成k+1前缀。用一个cnt数组将各种长度前缀出现的次数记录下来。来看一下第二个样例。abababababa

2017-08-22 11:01:00 488

原创 HDU - 4333 Revolving Digits 拓展KMP

传送门:点击打开链接一个长度为lent的串T最多可以构造出lent个数字,所以这道题目的难点在于如何快速的将构造出的数字和原数字进行比较。将两个T串合并成一个大的S串,构造出的数字实际上就是S的每一个后缀的前lent个字符。如何比较呢?如果S中从第i个位置开始的一个后缀和T的最长公共前缀k >= lent,那么这两个数字相等,如果k 通过叙述,很容易就知道要用到拓展KMP算法啦。此

2017-08-21 23:48:23 354

原创 POJ - 1961 Period KMP

传送门:点击打开链接题意就是寻找一个字符串前缀的最短循环节,从而求出最大循环数。利用KMP算法可以求出Next数组,然后根据Next数组的定义,我们可以知道对于一个前缀S1.如果i % (i - Next[i]) == 0,则S是有循环节的,循环节长度为i - Next[i]。2.因为Next[i]表示最长前后缀,所以i - Next[i]是最短循环节。3.Next[i]不能为0,

2017-08-21 16:27:31 502 1

原创 HDU - 1711 Number Sequence KMP

利用KMP算法匹配一个串T在另一个串S中首次出现的位置,套模板即可。代码如下:#include using namespace std;const int N = 1000005;int S[N], T[N]; // 下标从0开始int lens, lent;int Next[N]; // 下标从1开始void getNext(){ int i = 0;

2017-08-21 11:20:15 384

原创 POJ - 3461 Oulipo 初见KMP

【经典算法】——KMP,深入讲解next数组的求解前言    之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到<span style="line-height: 1.5;">了对前后缀计算的正确性,但

2017-08-21 11:03:37 440

原创 (2017多校训练第六场)HDU - 6103 Kirinriki 尺取法

官方题解:代码如下:#include using namespace std;const int N = 5005;char str[N];int len;int ans;int m;void solve(int x, int y){ int l = 0, r = 0, sum = 0; while (x - r >= 1 && y + r <=

2017-08-16 18:52:26 401

原创 (2017多校训练第七场)HDU - 6127 Hard challenge 极角排序+尺取法

首先如果我们知道了一条直线左边和右边的点,只需要将左边点的value值的求和乘以右边点的value的值的求和即可。对于每个元素极角排序是显然的事情。排完序之后,我们获得一圈点,很容易发现一条直线会把这个圆圈切割成两半,所以只需要枚举两个切割点即可。枚举切割点的方法是尺取法。假设所有点的value值的求和是tot对于区间的左端点L,我们不断的增加R,直到R和L的极角差刚刚小于18

2017-08-16 14:54:07 362

原创 (2017多校训练第七场)HDU - 6129 Just do it 找规律

借用别人博客的一张图。只需要计算出每个元素对应贡献的奇偶即可,然后对于这个元素影响到的所有列进行计算。此外C(n, m)为奇数等价于n & m == m。代码如下:#include using namespace std;const int N = 2e5 + 5;int a[N];int b[N];int n, m;int main(){ //f

2017-08-16 12:15:29 531

原创 (2017多校训练第四场)HDU - 6078 Wavel Sequence dp

传送门:点击打开链接定义状态dp[i][j][0]表示以a[i],b[j]结尾的且为波谷的情况总和,dp[i][j][1] 为波峰。对于某个i,j满足a[i] == b[j],则dp[i][j][0] = sum(dp[x][y][1]), x a[i]设sum[i-1][y][1] = ∑dp[x][y][1] , x 则dp[i][j][0] = ∑sum[i-1][y]

2017-08-11 16:44:06 462

原创 (2017多校训练第五场)HDU - 6092 Rikka with Subset 0-1背包

题目链接:点击打开链接题意不再赘述。下面来讲解一下第一个样例是怎么推导出答案的。2 31 1 1 1第一个数字和最后一个数字肯定是1,不需要关注它们。下面来看第二个数字(去掉首尾之后的第一个非零数字),也就是子集和为1的数目只有一个,很容易就知道答案中有一个1。然后再看第二个非零数字,也就是子集和为2的数目只有一个,我们已经知道了答案中有一个1,如果能够求出已知的答案能

2017-08-09 13:12:37 396

原创 百度之星2017资格赛 1003 度度熊与邪恶大魔王 完全背包

定义状态dp[i][j][t]代表前i种攻击,当前怪物生命值为j,防御力为t,所需要的最小代价。利用完全背包的方法很容易得到(p[i] = 第i种方法的攻击值减去防御值t)dp[i][j][t] = min(dp[i - 1][v][t], dp[i][v - p[i]] + k[i])可以写成滚动数组的形式。代码如下:#include using namespace

2017-08-06 20:42:01 365

原创 (2017多校训练第一场)HDU - 6040 Hints of sd0061 nth_element函数

官方题解:代码如下:#include using namespace std;typedef long long int LL;const int MOD = 998244353;const int MAX_N = 105;const int INF = 0x3f3f3f3f;struct Node{ int val; int pos; b

2017-08-06 11:16:40 348

原创 (2017多校训练第二场)HDU - 6052 To my boyfriend 思维题

思路就是求某种颜色对于答案的贡献,然后累加起来即可。考虑颜色c对答案的贡献,即至少包含一个c颜色格子的矩阵的数目。现在的问题是我们如何不重复不遗漏的统计个数。先排个序(行号升序,列号升序,实际上也就是从左往右从上往下的考虑)。把每个合法的矩阵算在序最小的那个关键点头上,这样就可以保证不重复,不遗漏。那么我们再找包含第一个关键点的矩阵的时候,显然没有任何限制,只需要包含这个点就行了。找第二个关键

2017-08-05 00:49:18 404

原创 (2017多校训练第四场)HDU - 6069 Counting Divisors 区间筛

下面的式子很容易得到。所以现在我们的问题就是把1e12量级的数字质因数分解,然后算用的素因子个数就行了。注意到一个数字a最小质因子肯定是小于等于根号a的。所以我们只需要打出1到1e6之间的素数表就行了。如果一个1e12次方量级的数字a,在被[1, 1e6]内的素数分解了之后,剩下的数字还不是1,那么剩下来的那个数字肯定是一个大于1e6的质数。我们可以选择区间筛的方法,用[1, 1e

2017-08-04 20:52:18 415

原创 (2017多校训练第三场)HDU - 6060 RXD and dividing dfs

官方题解:把1看成整棵树的根. 问题相当于把2∼n2\sim n2∼n每个点一个[1,k][1, k][1,k]的标号. 然后根据最小斯坦纳树的定义, (x,fax)(x, fa_x)(x,fa​x​​) 这条边的贡献是 x 子树内不同标号的个数目difidif_idif​i​​. 那么显然有difi≤min(k,szi)dif_i\leq min(k, sz_

2017-08-02 17:30:05 361

原创 (2017多校训练第三场)HDU - 6063 RXD and math 找规律 + 快速幂

刚开始一直执着于推公式,最后放弃了,打表发现规律是n^k,写个快速幂即可。不过要注意快速幂中的a是long long int类型的,所以要先取模一下。代码如下:#include using namespace std;typedef long long int LL;const int MOD = 1e9 + 7;const int MAX_N = 5e5 + 5;const

2017-08-02 16:47:58 314

原创 (2017多校训练第三场)HDU - 6058 Kanade's sum 链表

比赛的时候想到了把问题转化成求每个元素对于答案的贡献,即这个元素在多少个区间内是第k大数。至于怎么维护这个信息现场没想出来。赛后看了网上的博客才知道这道题目的解法。如果我们知道一个元素在多少区间内是第k大数(即这个元素的贡献),那么答案就是这个元素的值乘上其贡献。又想到一个元素在区间内是第k大数要满足什么条件呢?在这个区间内恰好有k - 1个数比它大就行了。所以如果知道这个元素左边

2017-08-02 16:33:49 263

原创 (2017多校训练第二场)HDU - 6053 TrickGCD 初见莫比乌斯

题目链接题意:给一个长度为n的数组A,让你构造等长的数组B,B数组中的元素取值为小于等于A数组中对应位置的元素,现在询问B数组中的gcd大于等于2的方案数思路:(已更新容斥部分)我们令g(d)为gcd为d的倍数的答案,那么所以根据容斥原理最后我们要求的答案为g(2)+g(3)+g(5)-g(6)+g(7)-g(10)+g(11)+g(13)-g(14)+g(15

2017-08-01 01:19:37 354

SDK:对话框,光标,字符串,位图,应用图标,语言

SDK:对话框,光标,字符串,位图,应用图标,语言

2017-06-10

代码:lab04.zip

lab04.zip

2017-06-09

pytesser_v0.0.1

OCR模块使用示例代码

2017-06-09

tesseract-ocr模块

tesseract-ocr模块

2017-06-09

pytesser_v0.0.1.zip

pytesser模块的使用示例代码

2017-06-09

SDK源代码exe文件

这是博客中代码的exe文件。因为源程序文件中资源种类太多,所以直接打包成exe。

2017-04-20

SDK程序源代码

SDK程序源代码

2017-04-17

N皇后解法总结

N皇后解法总结

2017-03-29

空空如也

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

TA关注的人

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