- 博客(24)
- 问答 (1)
- 收藏
- 关注
原创 UVA213 Message Decoding(二进制)
题目描述: 题目大意:有一些串: 0,00,01,10,000,001,010,011,100,101,110,0000,0001,…,1101,1110,00000,…首先是长度为1的串 ,然后是长度为2的串,以此类推,相同长度的后一个串等于前一个串加1,而且不存在全为1的串。首先输入一个编码头 , 比如 AB#TANCnrtXc ,那么依次对应上面的01串,比如0对应A,00对应B,01对应#
2017-05-26 19:56:52 625
原创 UVA133 The Dole Queue (模拟)
题目描述: 分析: 初始时用一个数组来表示人员的编号,如果一个人被选中,则用0来表示。模拟一下即可。代码如下:#include<cstdio>using namespace std;const int maxn = 20+5;int N, k, m;int a[maxn];/*移动函数,以k作为标记表示顺时针还是逆时针*/int move(int p, int k, int t){
2017-05-26 11:04:49 306
原创 UVA489 Hangman Judge(字符串处理)
题目描述: 题目大意就是先给一个单词,然后每次可以猜一个字母,如果给定单词里有那个字母,单词中的所有该字母都会显示出来,如果没有这个字母,机会就少一次,一共7次机会,错了7次即为失败, 而如果单词中所有字母都显示出来即为成功,其他则为放弃。分析: 采用自顶向下的方式,模拟一下这个刽子手游戏的过程即可。代码如下:#include<cstdio>#include<cstring>using
2017-05-26 10:33:56 500
原创 UVA1339 Ancient Cipher(排序)
题目: 题目很长,但是大概的意思就是: 给定两个长度相同且不超过100的字符串,判断是否能把其中一个字符串的各个字母重排,然后对26个字母做一一映射,使得两个字符串相同。分析: 因为字母可以重排,所以位置不重要,而字母出现的次数是重要的。这样先统计一下两个字符串中各个字母出现的次数,然后进行排序,只要两个数组排序后的结果相同,那么输入的两个串就可以通过重排和一一映射变得相同。代码如下:#inc
2017-05-26 10:19:57 1322
原创 算法入门经典第四章例题总结
例题总览:例题4-1 UVA1339排序例题4-2 UVA489自顶向下逐步求精法例题4-3 UVA133子过程(函数)处理例题4-4 UVA213二进制例题4-5 UVA512模拟例题4-6 UVA12412综合
2017-05-26 10:09:25 312
原创 二叉搜索树
BY《INTRODUCIRION TO ALGORITHM》定义和性质:二叉搜索树是以一棵二叉树来组织的。每个结点包含key,left,right,p属性,分别是结点的关键字,指向结点的左孩子,右孩子和双亲。性质: 对于任何结点x,其左子树的关键字最大不超过x.key,其右子树的关键字最小不低于x.key。且不同的二叉搜索树可以代表同一组值的集合。如图所示是一棵二叉搜索树:遍历:和二叉树的遍历相同
2017-05-21 08:47:35 300
原创 常用技巧(一)尺取法
尺取法:通常指对数组保存一对下标(起点、终点),然后根据实际情况交替推进两个端点直到得到答案的方法。经典例子POJ-3061 问题大概:给定长度为n的数列整数a0,a1,…,an-1以及整数S。求出总和不小于S的连续子序列的长度的最小值。如果解不存在,则输出0。
2017-05-15 19:33:03 251
原创 MySQL常用指令(三) 插入、更新与删除数据
一、插入数据1.为表中的所有字段插入数据INSERT INTO table_name (column_list) VALUES (value_list);2.为表中的指定字段插入数据INSERT INTO table_name (指定字段) VALUES (相应的value_list);3.同时插入多条记录INSERT INTO table_name (column_list) VALUE
2017-05-13 15:43:35 436
原创 循环队列的实现
同样老师不让直接用queue这个容器,所以自己实现咯! 循环队列很厉害呢!!#include<cstdio>#include<cstdlib>using namespace std;const int MAXSIZE = 100;typedef struct{ int *base; int front; int rear; }SqQueue;/*初始化队列*/
2017-05-12 10:18:58 394
原创 栈的实现
栈:上数据结构老师不给直接用c++中的stack容器,要自己实现,所以自己写了一个实现栈的入栈、出栈和取栈顶元素功能的程序,用链栈实现。怎样实现就不具体描述了,就是使用base和top指针来实现,top指针一直指向栈顶元素的下一个位置,base一直在栈底的位置。 注意:初始化栈时,base==top,且可通过这个判断栈是否为空。分析过程:栈的初始化栈初始化就是给栈开辟一些空间,然后让指针top等于
2017-05-12 09:53:52 914 2
原创 MySQL常用指令(二)查询数据
1.基本查询语句SELECT {*|<字段列表>} [ FROM <表1>,<表2>... [WHERE <表达式> [GROUP BY <group by definition>] [HAVING <expression> [{<operator> <expression>...]] [ORDER B
2017-05-10 21:23:35 465
原创 MySQL常用指令(一)
一.创建数据库CREATE DATABASE database_name;二.删除数据库DROP DATABASE database_name;三.创建数据表1.语法形式: CREATR TABLE table_name ( 字段名1, 数据类型[列级别约束条件][默认值], 字段名2, 数据类型[列级别约束条件][默认值], ...... );使用CREATR TAB
2017-05-09 20:47:19 378
原创 2017年ACM模板(常用)弱渣整理 五、数学相关
一、大数问题:1.大数积#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>using namespace std;char c[40];typedef long long LL;void multiply(const char *a,const char *b)//大数相乘 { int
2017-05-05 18:58:25 292
原创 2017年ACM模板(常用)弱渣整理 四、动态规划
一、数字三角形问题:for(int i=1;i<=n;i++){ d[n][i] = a[n][i];//从边界出发的最大值就是其本身 }for(int i=n-1;i>=1;i--){ for(int j=1;j<=i;j++) { d[i][j] = a[i][j]+max(d[i+1][j],d[i+1][j+1]); }}二、最长递增
2017-05-05 18:53:28 343
原创 2017年ACM模板(常用)弱渣整理 三、图论
一、 拓扑排序#include<cstdio>#include<cstring>#include<queue>using namespace std;const int maxn = 1000;struct Node{ int indegree;//入度数 int num; //排序number int id; //编号}N[maxn];in
2017-05-05 18:48:52 601
原创 2017年ACM模板(常用)弱渣整理 二、二分
lower_boundlower_bound 这个函数是从已经排好序的序列a中利用二分搜索找出指向满足ai >= k的ai的最小的指针,注意是指针。upper_bound函数类似,就是求出满足ai > k的ai的最小的指针。#include<cstdio>#include<algorithm>using namespace std;int a[100];int main(){ pr
2017-05-05 18:44:18 478
原创 2017年ACM模板(常用)弱渣整理 一、暴力
一、 枚举排列生成指定集合的排列:#include<cstdio>#include<iostream>#include<algorithm> using namespace std;void print_per(int n,int *P,int *A,int cur){ if(cur==n) { for(int i=0;i<n;i++) {
2017-05-05 18:41:36 873
原创 求凸包——Graham扫描算法
——————byMBA智库 http://wiki.mbalib.com/wiki/%E5%87%B8%E5%8C%85算法这里就介绍一个Graham扫描算法Graham扫描法 由最底的一点A1开始,计算它跟其他各点的连线和x轴的角度,按小至大将这些角度排序,称它们的对应点为A_2,A_3,\ldots,A_n。这里的时间复杂度可达O(nlogn)。 考虑最小的角度对应的点A3。若由A2到A3的路
2017-05-05 15:14:04 1187
原创 大数乘法
直接用一下模板吧! 两个大数相乘,大数用字符数组表示。#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>using namespace std;char c[40];typedef long long LL;void multiply(char *a, char *b)//大数相乘 {
2017-05-05 13:47:22 218
原创 极角排序
在求凸包的问题中,遇到一个小问题——极角排序 就是给定一个点u,然后再给一个点集,要求根据线段au的极角进行排序。假设一个点用结构体表示,有x和y两个结构体变量分别表示点的横坐标和纵坐标。排序重写cmp如下:int cmp2(const Node &a, const Node &b){ return atan2(1.0*(a.y-u.y), 1.0*(a.x-u.x)) < atan2(
2017-05-03 11:19:58 456
原创 POJ - 1127 Jack Straws(线段相交/并查集)
问题描述In the game of Jack Straws, a number of plastic or wooden “straws” are dumped on the table and players try to remove them one-by-one without disturbing the other straws. Here, we are only concerned
2017-05-02 20:34:39 349
原创 计算几何——线段的性质
本次我们研究线段的一些性质,并且可以用一些数学知识设计一些算法来解决一些问题。问题:1.对于给定的两个有向线段p0p1和p0p2,相对于它们的公共端点p0来说,p0p1是否在p0p2的顺时针方向?2.对于给定的两个线段p0p1和p1p2,如果先沿着p0p1再沿着p1p2前进,那么在点p1处是向左转还是向右转怎么判断。3线段p1p2和p3p4是否相交?对于这些问题,我们都需要使用一个计算公式—
2017-05-02 15:00:57 469 4
原创 求三角形面积
做题时竟然被这个卡住了,高中三角函数还给老师了QAQ。一个三角形三条边a,b,c,假如我们知道一个顶点到对边的距离(即高),那么就能够1/2*底*高计算出来三角形面积。上面的是一般的情况,如果给一个角度呢?比如知道a和b长度,和a和b的角度是多少?那么就得转化一下了: h = b×sin< a,b > S = 1/2×h×a =>S = 1/2×a×b×sin
2017-05-01 10:22:51 357
原创 最大流的各种变体问题
一、多个源点和汇点的情况解决方法:只要增加一条超级源点s和一个超级汇点t,从s向每个源点连一条容量为对应最大流出容量的边,从每个汇点向t连一条容量为对应最大流入容量的边。二、无向图的情况解决方法:如果两个方向都有流量,则与它们相互抵消后是等价的,所以可知最大流中没有必要在两个方向都有流量,因此把无向图中容量为c的一条边当作有向图中两个方向各有一条容量为c的两条边,就能够得到同样的结果。三、顶点上也有
2017-05-01 08:59:56 545
空空如也
Ubuntu 16.04 双屏问题(一个竖屏一个横屏)有bug
2019-11-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人