- 博客(73)
- 收藏
- 关注
原创 简单数位dp
题目链接题意:[n,m]中不包含4和62的数的个数#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int dp[10][10]; // dp[i][j]表示最高位数字为i,长度为j的的数字串中满足无4,无62的串的总数void Init(){
2016-12-05 12:57:03
438
原创 java递归实现复制一个文件夹下所有文件的功能
今天开始学习java的IO,学了一个复制文件的例子程序后想自己实现以下如何复制一个文件夹,复制文件的例子程序如下:package io.github.liuzhan214;import java.io.File;import java.io.IOException;public class Main { void solve() { File file = new File
2016-11-27 21:01:37
2450
原创 poj2116
数论 需要细心,模拟过程就可以了,注意给出的字符串有前导0,需要去前导0#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long LL;const int maxn = 50;char s1[maxn],s2[maxn]
2016-10-27 14:38:09
515
原创 poj2115
A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C)statement;I.e., a loop which starts by setting variable to value A and while varia
2016-10-26 20:35:16
329
原创 数论Trailing Zeroes (III)light0j1138
Description You task is to find minimal natural number N, so that N! contains exactly Q zeroes on the trail in decimal notation. As you know N! = 1*2*…*N. For example, 5! = 120, 120 contains one zero
2016-10-26 19:02:22
295
原创 动态规划练习
hdu 1176题目链接 类似求解背包问题的过程,滚动一遍就ok,或者记忆化搜索也可以#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxTime = 100005;int num[maxTime][11],dp[maxTime
2016-10-26 18:53:12
349
原创 hdu 5924 Mr. Frog’s Problem
题目链接 花了半个小时来画图,最后发现只要把输入的数据正反输出就可以了…#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long LL;int main(){ int T,cas = 1; scanf("%
2016-10-20 16:43:04
480
原创 真尴尬1180
结束的标志是两个小于0的数…… 被套路了……..#include <set>#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 10005;const int maxm = 1000
2016-10-19 19:22:04
404
原创 hdu 1180诡异的楼梯
重写了一下以前没过的题,读了下以前wrong answer的代码,发现好像题意理解有误啊,我一直认为这样的情况只需要一秒钟,其实这样是无论如何上不去的,无法到达终点…….bfs完全是可行的,没必要加上优先级队列,bfs本身的性质决定时间一定是最短的*T*.|*Problem Description Hogwarts正式开学以后,Harry发现在Hogwarts里,某些楼梯并不是静止不动的,相反,
2016-10-19 16:58:32
266
原创 hdu5916长春区题目-瞎搞构造
题目链接 题意:定义和谐数为所有相邻数的gcd的和,现在给你一个1到n的序列,在n!个全排列中找出第k大的和谐数 题解: 比如说n = 6 首先最小的和谐数当然直接就是1到6了,当然也可能有其他的解,但这个题是多解的special judge,1到6当然可以,第二大呢,发现可以写出2 4 1 3 5 6,在最小的基础上只增加了1,第三大可以这样3 6 1 4 5 2在最小的基础上增加了2,对
2016-10-14 12:53:19
302
原创 codeforce723E One-Way Reform
题目链接 题意:给你一个无向图,不存在自环和重边,现在需要把图的无向边全部变成有向边,问最多可以使多少个结点的入度等于出度,输出所有有向边集合,不考虑边的顺序 思路: 容易联想到欧拉路,求解最多可以使多少个结点的入度等于出度很简单,统计无向图的偶数度数的结点个数即可,输出边却不怎么好写,一个好的思路,添加一个结点,连接上所有的奇数度数的结点,这样整个图就由若干个欧拉图组成,跑若干次欧拉图就可以了
2016-10-12 20:22:12
255
原创 后缀数组代码理解加注释
一段三四十行的代码却看了一个下午,仿佛又回到了刚学C语言的时候,终于看懂了,写下注释,晚上写题。 后缀数组是用来在线处理模式串匹配问题的算法,比如有一个文本串aabaaaab,我们求出一个sa数组,sa[i] = x表示第该文本串中第i小的后缀串的头字母是x,sa[0] = 3(aaaab),sa[1] = 4(aaab),sa[2] = 5(aab),sa[7]=2(baaaab),暴力处理后缀
2016-10-05 17:37:31
939
原创 基数排序
基数排序是学习后缀数组的基础,本身并不复杂,适用于待比较的元素的位数较少的情况,复杂度为O(d*(n+radix)),d为关键码的个数,radix为关键码的取值范围,n为元素个数,比如说对1000万个正整数排序,整数取值范围(0,100],则复杂度为3*(1000万+10),比快速排序nlogn的效率更高。基数排序的原理也不复杂,回忆小时候排序的过程,给定一堆数,比如 11,23,98,45,178
2016-10-05 14:13:30
379
原创 malacher算法lightoj1258
malacher算法用来求解回文串问题,和kmp算法的思想有相似的部分,利用已经匹配过的字符的信息,而不是盲目匹配,这篇博客总结的很好 大神算法讲解戳这里题意:给定一个字符串,求解至少需要在字符串右端添加多少个字符串使之成为回文串 题解:用malacher算法构造并求出所有的最长回文子串,在这些子串中挑选出能延伸到串尾的最长子串,比如acababa,ababa是可以延伸到串尾的最长字符串,可以明
2016-10-04 15:18:30
658
原创 树状数组点更新,区间更新理解
对于一个数列A1A2A3…An,要求支持两种操作: 1.查询[x,y]区间的区间和 2.把[x,y]区间每个元素加val 事实上线段树也可以解决这样的问题,用上一点lazy的思想,每次只更新小区间的区间和,查询的时候加上祖先节点的影响就可以了。 我们用树状数组也可以解决这样的问题,并且效率会更高一些,复杂度都是nlog(n),但树状数组的常数更小,空间占用也更少。首先回忆一下树状数组维护前缀
2016-10-02 20:30:02
635
原创 ac自动机静态比动态快
ac自动机提高效率的一个办法是实现后缀链接,即增加一个指针指向下一个单词节点,而不是盲目的沿着失败指针查询。 however,lightoj1427迷之超时,难道动态建树比静态建树快很多吗?再写个静态的试试吧……题意:求解各个模式串在文本串中出现的次数#include <map>#include <queue>#include <cstdio>#include <cstring>#incl
2016-10-02 16:34:17
736
原创 AC自动机实现
程序功能 求文本串中出现了多少模式串[链接](http://acm.hdu.edu.cn/showproblem.php?pid=2222)#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxk
2016-09-28 16:32:50
333
原创 kmp练习poj1961
题意 求出所有前缀串的最小循环节长度#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1000005;char p[maxn];int f[maxn];int main(){ int n,cas = 1;
2016-09-28 16:28:41
275
原创 kmp练习poj2406
题意 求最小循环节,注意输入末尾有个句点,代码实际可以简单很多,后续的判断是无意义的#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1000050;char p[maxn],str
2016-09-28 16:26:12
227
原创 kmp练习poj2752
题意 求字符串所有循环节的长度#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 400050;char p[maxn];int fail[maxn];vector<int> an
2016-09-28 16:22:26
241
原创 kmp练习poj3461
题意 求模式串在文本串中出现的次数#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1000050;const int maxm = 10050;char s[maxn],p[maxm];int fail[maxm
2016-09-28 16:20:02
268
原创 hdu5033 Building单调栈
题意 一条直线上有很多房子,房子的信息包括位置和高度,给出一些询问,当有一个人站在某两个房子之间时,能看到的最大的角度(尽可能广阔的天空) 求解 可以很容易想到求解左边最大的仰角,右边最大的仰角,然后用180度减去两者,所以我们对查询排序,离线依次处理从左到右每个查询的向左看最大仰角,从右向左处理每个查询的向右看最大仰角,离线处理的目的是利用已经处理过的查询的信息,从而降低复杂度,首先,对于一
2016-09-23 13:55:20
475
原创 LightOj 1370欧拉函数快速筛法
欧拉函数首先介绍下什么是欧拉函数吧,欧拉函数phi(x)代表小于等于x的数中和x互质的数的个数(小于显然只对1成立), 比如说小于等于9的数中与9互质的有1,2,4,5,7,8,则phi(9)=6.求phi(x)得公式由欧拉给出(神一般的男人,几何学,数论,统计学,物理学,统计学,据说连金融学都有以欧拉命名的公式,膜拜…….) 欧拉指出,以phi(x)表示小于等于x的数中与x互质的数的个数可以这样
2016-08-16 16:42:15
1467
原创 百度之星题目
高精度加法,斐波那契数列 度熊面前有一个全是由1构成的字符串,被称为全1序列。你可以合并任意相邻的两个1,从而形成一个新的序列。对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列。 Input 这里包括多组测试数据,每组测试数据包含一个正整数N,代表全1序列的长度。 1≤N≤200 Output 对于每组测试数据,输出一个整数,代表由题目中所给定的
2016-08-03 14:07:40
1159
原创 Invitation Cards建立反向边求解最短路
source : poj 1511题意很简单,让我用markdown画出来就可以了 有道云笔记语法和这里不一样,懒得改了。。。。graph LR1 --> 22 --> 11 --> 33 --> 42 --> 44 --> 50好吧图很丑,不过勉强能看,每条单向边都有一个权,表示车票,现在我们要从1出发,把n个人送到n个顶点,之后送出去的n个人要回来1,问着一去一回需要多少车票钱,第
2016-08-03 14:06:17
345
原创 Roads带限制条件的最短路算法
比较有启发意义的最短路 N cities named with numbers 1 … N are connected with one-way roads. Each road has two parameters associated with it : the road length and the toll that needs to be paid for the road (expr
2016-08-03 14:04:54
2120
原创 一个人的旅行-离散化处理
一个人的旅行 图论简单题目,操蛋的是节点编号不连续,当然不管乱搞也可以的 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京
2016-08-03 14:04:09
227
原创 Candies-差分约束系统
差分约束系统 During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher brought the kids of flymouse’s class a large bag of candies and had flymouse distribute them.
2016-08-03 14:03:17
323
原创 abs
BestCoder #85题目链接Problem Description 给你一个数x,查找一个整数y,y>=2,满足两个要求: y-x的绝对值最小 y的质因子组成中每个质因子恰好出现两次 Sample Input 5 1112 4290 8716 9957 9095 Sample Output 23 65 67
2016-08-01 15:41:07
805
原创 nyoj 677暴力dfs竟然这么快...
首先这个题目的确是可以dfs求解的,200个顶点,20000条边,飞机场的度数不会超过两百,从每条边出发一次dfs,最多遍历20000条边,200*20000 = 4000000,在1
2016-07-30 14:48:32
378
原创 最小费用流bellman-ford算法总结
最小费用流问题是寻找流为F时的最小费用,普通的最大流中边只有流量限制,而在费用流中还加上了费用,为保证过程可逆和正确性残余网络中的负权边是原边费用的相反数,求解此类问题的方法依然是贪心,我们在残余网络上总是沿着最短路增广,这样可以保证在当前流量下,取得最小的费用(权值为费用),一直贪心下去,直到F减为0,这里有一个问题,F能否减到0呢,答案是肯定的,考虑最大流算法,我们总是能从0扩展到任意流(流不
2016-07-30 10:59:18
3684
原创 nyoj973天下第一
天下第一时间限制:1000 ms | 内存限制:65535 KB难度:3描述AC_Grazy一直对江湖羡慕不已,向往着大碗吃肉大碗喝酒的豪情,但是“人在江湖漂,怎能不挨刀",”人在江湖身不由己",如果自己的武功太差,在江湖会死的很惨,但是AC_Grazy没有武功秘籍练不了绝世武功.有道是“山重水复疑无路,柳暗花明又一村”,在AC_Grazy家里面竟然藏着一本
2016-07-29 20:22:52
341
原创 二分图的最大匹配深搜算法
RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner。考虑
2016-07-29 10:16:35
535
原创 hdu1532 当前弧优化的dinic算法实现
点击打开链接裸题,主要练习手速!#include #include #include #include #include #include using namespace std;const int max_node = 205;const int INF = 0x3f3f3f3f;struct Edge{ int to,cap,rev; Edg
2016-07-28 19:59:40
1080
原创 证明增广路算法的正确性及dinic算法的使用
一直对增广路这种贪心思想表示怀疑,今天看到一个很好的证明。首先介绍割的概念,所谓图的割,指的是某个顶点集合S属于V,从S出发的所有边的集合成为割(S,V\S),这些边的容量和被称为割的容量,如果有源点s属于S,汇点t属于V\S,则称之为s-t割,如果将s-t割的所有边都在原图中去掉,则不再有s->t的路径。容易得到,对于任意一个s-t割,总有f的流量首先,对于ford-Fulkerso
2016-07-28 19:11:29
1912
原创 字典树求子串hdu2846
点击打开链接这个题目还是比较有意思的,以往的字典树往往是求解前缀的数量,其实也可以求解子串,不过相应的要付出更多的空间代价。以abcdabc为例,我们先通过暴力枚举的办法将串拆成,abcdabc, bcdabc,cdabc,dabc,abc,bc,c 拆成这些串后,如果想判断da是不是abcdabc的子串,则只要顺着字典树往下,找到dabc这条路的b节点就可以判断了。此题是给出一个
2016-07-28 15:20:07
370
原创 对于优先队列的一些思考
/*为什么默认是大顶堆呢,考虑priority_queue的实现容器,vector显然在尾部删除快,默认重载<运算符,也就是说vector中的元素从小到大排列,尾删的时候取出最大值,所以pq.top()取出最大值,pq.pop()删除最大值。*/#include #include #include #include #include #include #include #inc
2016-07-24 11:29:13
366
原创 HUST 1525
Given an N*N(NOn this chessboard you have to apply M(MInputThe first line contains a single integer T, the number of test cases.For each case,The first line contains integer N, M.The next
2016-07-23 20:00:42
286
原创 小希的礼物
点击打开链接这个题显然是用并查集解决的,不过我想试试用图论的方法怎么写,首先所有的顶点要连通,然后图无环,然后无重边,无自环,首先判断重边,map映射一下就可以了,确定无重边之后就用bfs判断连通,复杂度O(m),如果连通,然后通过拓扑序列判断环,如果无环,则图是一棵树,输出yes,任何一个环节出错,输出no.下面是我的冗长但是简单的代码。#include #include
2016-07-23 12:41:39
208
原创 网络流入门题hdu3549(Flow Problem)
Network flow is a well-known difficult problem for ACMers. Given a graph, your task is to find out the maximum flow for the weighted directed graph.InputThe first line of input contains an int
2016-07-20 14:04:36
305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人