算法竞赛
joeycom2
这个作者很懒,什么都没留下…
展开
-
巧用数组
例题引入: 把手放在键盘上,稍不留意就会往右错移一位。这样输入的Q就会变成输入W;输入的J就会变成输入K等。问题:输入一个错位后的字符串(大写),输出打字员本来想打的句子。假定前提:输入保证合法(例如:输入中不会出现A) 样例输入: O S, GOMR YPFSU/ 样例输出: I AM FINE TODAY. 分析: 1.输入字符串(包括输入空格)可以用getchar 2.输入输转载 2016-05-11 15:34:49 · 267 阅读 · 0 评论 -
hdu 2102-搜索
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n,m,t,xx[4][2]={{1,0},{0,1},{-1,0},{0,-1}},xp,yp,visit[2][11][11]; //xp、yp是终点坐标char map[2][11][11]; //因为有两层,所以用三维vo原创 2017-04-04 19:53:34 · 199 阅读 · 0 评论 -
简单DP
套题链接:https://vjudge.net/contest/152991#overview A题–最少拦截系统:问题的实质就是求出最长的连续递增子序列的长度#include<stdio.h>#include<algorithm>#include<math.h>#define maxn 1000using namespace std;int n, a[maxn],d[maxn];int原创 2017-03-15 16:40:28 · 231 阅读 · 0 评论 -
最大流
套题链接:https://vjudge.net/contest/126475#overview A题-基础模板题#include<stdio.h>#include<algorithm>#include<math.h>#include<string.h>#include<queue>#define maxn 210#define INF 0xfffffffusing namespac原创 2017-03-26 19:23:47 · 201 阅读 · 0 评论 -
常用排序模板
快速排序 其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子, 以保证:其左边的元素都不大于它,其右边的元素都不小于它。 这样,排序问题就被分割为两个子区间。 再分别对子区间排序就可以了。选择排序 思想:重复选择数组内的最大值,交换到合适的位置。该排序方法比较慢。堆排序 思想:堆实际上是一棵完全二叉树,利用大顶堆(小顶堆)堆顶记录的是最大关键字(最小关键字)这一特性,使得每次从原创 2017-03-06 22:16:15 · 478 阅读 · 0 评论 -
线段树
首先我们来看一下线段树的定义,线段树是一种二叉搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。 线段树问题可以大致分为以下四类 1.单点更新:原创 2016-10-24 20:53:30 · 245 阅读 · 0 评论 -
HDU1358-Period(kmp-求前缀长度和最小循环节长度 )
题目链接:acm.hdu.edu.cn/showproblem.php?pid=1358 题目描述:给一数字n,和一长度为n的字符串,要求把所有循环节大于1的字符串的长度和循环次数输出。//求前缀长度和最小循环节长度 #include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define maxn 100原创 2016-11-24 22:12:12 · 388 阅读 · 0 评论 -
HDU-剪花布条(kmp)&& HDU-Oulipo(kmp)的区别
HDU2087-剪花布条 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 题目描述:给出父串和子串,问子串在父串中出现的次数#include<cstdio>#include<cstring>#include<algorithm>#define maxn 1010using namespace std;char fa[maxn], s原创 2016-11-24 21:59:16 · 239 阅读 · 0 评论 -
Big Event in HDU-01背包(dp思想)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171 问题描述:给出每个物体的价值和数量,如何分使得A,B所得价值最接近并且A的价值不能小于B 解决方法:dp[i]是体积为i时,获得的最大价值。易得: dp[j] = max(dp[j], dp[j - val[i]] + val[i]);#include <iostream>#include原创 2016-11-24 21:30:19 · 186 阅读 · 0 评论 -
CodeForces 148A
#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;int k, l, m, n, d, u;int num[100005];int main(){ while (cin >> k >> l >> m >> n >> d) {原创 2016-10-23 21:52:42 · 306 阅读 · 0 评论 -
HDU1756--判断点与多边形的相对位置
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1756 题意:判断点是否在给出的多边形内(包括边界)#include<cstdio>#include<cstring>#include<cmath>#include<iostream>using namespace std;const double eps = 1e-8;//判断double类型原创 2016-08-12 08:13:20 · 457 阅读 · 0 评论 -
HDU2051进制转换
#include <stdio.h>int main(){ int a,n,i,cnt=0; int num[30]; while(~scanf("%d",&a)) { int i=0; do{ num[i]=a%2; a=a/2; i++; }原创 2016-04-25 21:33:25 · 694 阅读 · 0 评论 -
hdu1495~广搜
思路: 其实就是要判断可乐能不能被平分……..有六种状态,从a瓶到b瓶,a–>cb–>a b–>cc–>a c–>b然后每种状态里面又分两种不同情况,可以将此瓶的水全部清空,不能清空……然后广搜就可以了……..原创 2016-05-25 21:32:11 · 368 阅读 · 0 评论 -
平面图中的欧拉定理
定理:设G为任意的连通的平面图,则v-e+f=2,v是G的顶点数,e是G的边数,f是G的面数。题目描述:给出一个一笔画图形的n个节点的坐标,请你求解这个图形把平面分成了几个面 一笔画图形一个是把图上所有的边仅且遍历一次的封闭连通图。 分析:求面的问题就分解为求顶点个数与边条数的问题。 点的求法:遍历每条线段,如果是规范相交,则将该点存入V[]数组中。最后对V[]数组进行排序,使用STL中的un原创 2016-08-09 21:38:02 · 5965 阅读 · 2 评论 -
南阳20~深搜
算法原创 2016-05-21 20:30:03 · 511 阅读 · 0 评论 -
最长上升子序列问题LIS
问题描述:对于给定的n个整数A1, A2…An, 从左到右的顺序选择尽可能多的数,组成一个上升子序列。(上升子序列可以理解为:删除0个或多个数, 其他数的顺序不变, 例如1, 6, 2, 3, 7, 5, 可以选出上升子序列1, 2, 3, 5 也可以选出 1, 6, 7) 法一:通过DP记忆化搜索求解问题,时间复杂度为O(n^2)#include#include#include#i原创 2016-08-09 20:45:31 · 299 阅读 · 0 评论 -
输入输出
1. 每次测试都要手动输入许多数,这时可以把输入的数据保存在文件中,输出的数据也保存在文件中,只要事先把输入的数据保存在文件中·,就不必每次重新输入; 数据输出在文件中也避免了“输出太多,一卷屏就看不见了“的尴尬,运行结束后,慢慢浏览输出文件即可。如果有标准答案文件,可以进行文件比较(–>在Windows中可以使用fc命令,在Linux中可以使用diff命令) 事实上,几乎所有算法竞赛的输入原创 2016-05-08 20:55:23 · 447 阅读 · 0 评论 -
UVa455--Periodic Strings
题目:算一个串的最小周期 思路:枚举,判断所得字符串是否为周期字符串。#include <stdio.h>#include <string.h>int i,j;int isTthePeriod(char s[],int T) //判断是否为周期字符串{ for(i=0;i<T;i++) { for(j=i+T;j<strlen(s);j+=T)原创 2016-05-12 19:56:24 · 232 阅读 · 0 评论 -
hdu2181-哈密顿绕行世界
#include<stdio.h>#include<algorithm>#include<math.h>#include<string.h>#include<queue>#define maxn 21#define INF 0xfffffffusing namespace std;bool map[maxn][maxn];bool used[maxn];int res[maxn]原创 2017-04-06 10:31:46 · 238 阅读 · 0 评论