- 博客(111)
- 资源 (2)
- 收藏
- 关注
原创 第3章 对于所有对象都通用的方法
第7条:在改写equals的时候请准守通用约定第8条:改写equals时总是要改写hashCode第9条:总是要改写toString第10条:谨慎地改写clone第11条:考虑实现Comparable接口
2022-05-30 19:55:36 213 1
翻译 lower_bound()与upper_bound()
所在头文件:#include<algorithm>函数分类:Binary search (operating on partitioned/sorted ranges)函数功能:lower_bound()返回一个迭代器指针,指向val出现在这个被查找序列中出现的第一个位置;upper_bound()返回一个迭代器指针,指向val出现在这个被查找序列中出现的最后一个位置的后一个位置。lower_bou
2016-05-06 11:21:36 1170
原创 蘑菇街春招 - 编程题第二题 - 隐式图搜索 - 四个水杯
#include <bits/stdc++.h>using namespace std;struct CUP{ int x, y;};struct Node{ CUP a[4]; int step;} st, ENDDD;bool flag[111][111][111][111];int dir[12][2] = { 0, 1, 0, 2,
2016-03-31 21:41:59 1206
原创 UVALive 5009
Link:click here The question:给出n组a,b,c的值,求出函数值最大值的最小值 Solution:三分,黄金分割法(优选法),Fibonacci搜索都可求单峰函数的极值。 Conclusion:跟据题目要求判断循环的次数或者需要控制的精度
2016-03-22 19:42:41 743
原创 HDU 5128
Link:click here The question:在平面上给出n(4 <= n <= 30)个点,从中选出8个点够成两个矩形,使得矩形的面积最大,如果不存在,输出”imp”。
2016-03-22 18:55:22 510
原创 UVA 10341
Link:click here The question:给出6个整数,求方程f(x)等于0的时候的解。 Solution:由0 <= x <= 1可知f(x)单调递减,二分。 Conclusion:数值计算的公式要写成宏定义的形式
2016-03-21 18:45:38 412
原创 UVALive 4127
Link:click here The question:给出n座山的高和宽,山视为等腰三角形,从上往下看,求山的轮廓的长度,山之间的空白不算。 Solution:用竖线在山与山的交点和顶点处,把所有山分成一段一段的的线段,统计竖线内每段线段的长度,累加即可。先把所有端点的横坐标放入数组X里, 然后对线段两两求交,把交点的横坐标也放入数组X里,然后排序去重。求出每条线段与竖线的交点的y坐标的
2016-03-21 18:42:31 373
原创 Largest palindrome product
Link:click here The question:求两个三位乘积得到的最大的回文数 Solution:暴力枚举999到100,维护最大值 Conclusion:第一次做的时候没有维护最大值,遇到第一个出现的回文数就结束了,得到的是580085 = 995 * 583; 但结果并不对,580085是第一个出现的,它不是最大的,维护了最大值后得到906609 = 993 * 913,
2016-03-20 21:04:01 558
原创 二叉树学习(二)
二叉树值得思考的一些问题!!1. 求二叉树的高度设二叉树的高度函数为f(xx),则: f(x)={0,Max{f(x−>lchild),f(x−>rchild)}+1,if x = NULLothersf(x) =\begin{cases}0, & \text{if $x$ = NULL} \\Max\{f(x->lchild), f(x->rchild)\} + 1, & \text{
2016-01-22 16:20:18 813
原创 二叉树学习(一)
树的基础知识 树的定义: 树包含n(n ≥\ge 0 )个节点,n = 0时称为空树。 在树的结构关系中,有且仅有一个节点没有前趋节点,这个节点称为树的根节点。 除根节点外,树中其他的节点有且仅有一个前趋节点,但可以有很多后继节点。如图,A为根节点。 树的基本术语: 结点的度:每个节点具有的子树的个数(后继节点的个数)称为该节点的度;A的度为3,B
2016-01-21 09:57:41 2487
原创 LeecCode 17
Link:click here 题意:给出手机键盘上的按键数字,求出所有可能得到的字母组合 思路:用两个vector不断模拟。 Code:#include <bits/stdc++.h>using namespace std;vector<string> letterCombinations(string digits){ string str[] = {"abc", "def"
2016-01-16 20:25:38 557
原创 二分幂、快速幂、矩阵快速幂、幂取模
二分幂:如计算a^n;如果n为偶数,则计算a^n/2(递归到n=0),再计算(a^n/2)(a^n/2),就可得出结果;如果n为奇数,则先计算a^(n-1)/2(递归到n=0),再计算(a^(n-1)/2)*(a^(n-1)/2)a,就可得出结果。long long fun(int a,int b){ if (b==0) return 1; if (b==1)
2015-11-09 13:42:42 1944
原创 HDU 1394 线段树求逆序数 + 递推逆序数
template <class T>inline bool rd(T &ret) { char c; int sgn; if (c = getchar(), c == EOF) return 0; while (c != '-' && (c < '0' || c > '9')) c = getchar(); sgn = (c == '-') ? -1 : 1;
2015-11-04 09:17:10 621
原创 后缀数组模板
#include <set>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define maxn 1100000using namespace std;const int MAXN = 500;char s[MAXN];int sa[MAXN];
2015-10-01 19:43:38 493
原创 名次树 - 模板
UvaLive 5031#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cstdlib>using namespace std;const int maxnode = 20005;const int maxw = 60005;const int maxc = 50
2015-09-19 10:46:57 760
原创 最短路 - Dijkstra()
http://acm.nyist.net/JudgeOnline/problem.php?pid=115#include <stdio.h>#include <string.h>#include <iostream>#include <stdlib.h>#define inf 0x3f3f3f3f#define N 1005using namespace std;int d[N], G
2015-09-18 17:31:37 495
原创 最小生成树 - Kruskal()
//http://acm.hdu.edu.cn/showproblem.php?pid=1233#include <cstdio>#include <algorithm>using namespace std;const int N = 105;int father[N];int find(int x){ if (x != father[x]) father[x
2015-09-10 15:03:08 477
原创 最小生成树 - Prime()
//http://acm.hdu.edu.cn/showproblem.php?pid=1102#include <bits/stdc++.h>#define N 111using namespace std;int n;int G[N][N];int vis[N], lowcost[N];int prime()//只与点有关O(n * n),适合稠密图{ int sum =
2015-09-10 08:49:21 598
原创 hash + bsgs模板
//POJ 2417//baby_step giant_step// a^x = b (mod n) n为素数,a,b < n// 求解上式 0 <= x < n的解#include <cmath>#include <cstdio>#include <cstring>#define MOD 76543using namespace std;int hs[MOD], head[MOD
2015-08-17 11:02:12 862
原创 线性筛素数
void Init()//线性筛素数{ for (int i = 2; i < N; i++) { if (mpf[i] == 0) mpf[i] = prime[pn++] = i; for (int j = 0; j < pn; j++) { if (i * prime[j] > N
2015-08-16 16:46:25 472
原创 HDU-2647-邻接表模板
#include<iostream>#include<cstring>#include<queue>#include<cstdio>using namespace std;#define MAX 10005int n, sum, ans;int into[MAX], head[MAX], money[MAX];struct Reward{ int to; int n
2015-08-11 22:28:17 622
原创 组合数模板+ 卢卡斯定理
Template one:#include <stdio.h>#include <stdlib.h>long long Combination(int n,int m){ long long nr = 1; for (int j = 0; j < m; j++) { nr *= (n - j); nr/=(j+1); }
2015-08-01 11:38:37 868
原创 Template of ACoCorasickAutomata
LA 4670#include <cstring>#include <cstdio>#include <vector>using namespace std;struct Node{ struct Node *fail; struct Node *next[26]; int tot; int id; Node() { fai
2015-07-18 10:26:01 402
原创 计算几何模板 - 全
#include <cmath>#include <cstdio>#include <iostream>using namespace std;struct Point{ double x,y; Point(double x=0.0,double y=0.0):x(x),y(y) {}//构造函数,方便函数编写};typedef Point Vector;//Vecto
2015-04-25 06:50:35 694
原创 并查集
在一些有N个元素的几何应用问题中,通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的几何合并,其间反复查找一个元素在哪个集合中。这类题目看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上消耗过大,即使在空间上勉强通过,时间复杂度也是极高的,所以这类问题应该用并查集类解决。 并查集类似一个森林,每个节点均有一个fater[x]来表示他的父
2015-04-18 10:47:50 443
原创 堆(heap)
堆是一个完全二叉树(除最后一层外,每一层上的节点数均达到最大值,在最后一层上只缺少右边的几个节点),用一个一位数组来实现。堆中存储的数是局部有序的。堆分为最大堆和最小堆:对于最大堆,任意一个节点的值都大于或等于其任意一个子节点的值,所以根节点一定是堆中的最大值;对于最小堆,任意一个节点的值都小于或等于其任意一个字节的值,所以根节点一定是堆中的最小值。这和优先队列一样,都是将优先级最高的放在队首。堆
2015-04-17 08:18:28 697
原创 Template of KMP
Template of KMP#include <stdio.h>#include <string.h>int count = 0;char s[10005], l[1000005];void getnext(char *src, int m, int *next){ int i = 0,j = -1; next[0] = j; while(i < m) {
2015-03-16 20:16:14 477
原创 HDU 1010
这个题教会我DFS不要写成for循环的形式#include #include #include #include #include using namespace std;const int MAX = 10;int m, n, t, sx, sy, flag, vis[MAX][MAX];int dx[] = {1, -1, 0, 0};int dy[] = {0,
2015-01-19 16:37:25 575
原创 POJ 2312(BFS+优先队列)
#include #include #include #include #include using namespace std;const int MAX = 350;int m, n, sx, sy, ex, ey, ans, map[MAX][MAX], vis[MAX][MAX];int dir[8] = {1, 0, -1, 0, 0, 1, 0, -1};struct
2015-01-19 11:57:35 644
原创 线段树
线段树(1):点修改#include const int MAXN = 50005;int sum[MAXN << 2];void pushup(int rt){ sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];}void build(int L, int R, int rt){ if (L == R) { scanf("%d", &
2015-01-17 16:41:41 664
原创 挑战编程-第六章-组合数学-总结
挑战编程-第六章-组合数学-总结 学习用java处理大数很有必要,解组合数学的题就是一个找公式推规律的过程。推公式的过程又类似于推导状态转移方程,再推出公式后,往往会发现题目的数据是超long long的,再用大数方法来处理,代码很随意就能上200行,但是如果用java来写的话,推出公式,组合数学的题就是水题。代码都是别人家的。Uva 10183: Meanin
2015-01-16 19:30:49 1316
原创 ubuntu 14.04 LTS Desktop 搭建LAMP环境
ubuntu 14.04 LTS Desktop 搭建LAMP环境1、sudo apt-get install apache2 #安装apache2 安装完成后,通过 apache2 -v 查看是否安装成功 然后可通过浏览器来访问服务器的IP。 将会出现 It works! apache2已经正常运行。2、sudo apt-get insta
2015-01-03 14:45:13 840
原创 Linux学习小结(二)
ubuntu 14.04 LTS安装中文输入法:sudo apt-get install updatesudo apt-get install fcitx-table-wbpy配置完成后重启。编译安装一个开源软件的步骤是固定的:1、./configure2、make3、sudo make install首先解压压缩包,然后进入源码目录,再执行上面的三个步骤,完成
2014-12-17 11:07:08 652
原创 图形手势识别
图形手势识别http://www.imooc.com/learn/131http://fattyboy.cn/gt一、手势识别的常见算法:1、网格识别(马赛克识别)把用户绘制的图形和图形库里的图形放到同一张网格里面,然后逐个格子的去比较他们的相似度。核心思想类似于马赛克识别,例如比较两张照片是否相像的时候,先把两张照片马赛克化,然后去比较方块是否相像。2、方向识别
2014-12-12 16:50:08 3045
原创 输入模板
long long Scan(){ long long res = 0 , ch; while( !( ( ch = getchar() ) >= '0' && ch <= '9' ) ) { if( ch == EOF ) return 1 << 30 ; } res = ch - '0' ; while(
2014-12-06 11:37:13 704
原创 fibnacci数列模板
#include #include using namespace std;const int MAX=10;#define __int64 long long#define Bit(n) 1<<n#define CLR(arr,val) memset(arr,val,sizeof(arr))class Matrix{public: Matrix(int r,int c)
2014-12-03 17:55:02 569
原创 C++获取当前时间和计算程序运行时间的方法
获取当前时间:#include #include using namespace std;int main(){ SYSTEMTIME sys; GetLocalTime(&sys); cout<<sys.wYear<<"年"; cout<<sys.wMonth<<"月"; cout<<sys.wDay<<"日"; cout<<sys.w
2014-10-24 19:43:16 6735
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人