算法
文章平均质量分 88
算法
daguniang123
永不安于现状
展开
-
Insert or Merge
According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, f...翻译 2018-06-04 10:38:04 · 147 阅读 · 0 评论 -
AC自动机
/** * 定义Trie树中子节点的最大个数,26个英文字母 * */const int MAX_NUM=26;/** * 用于构造Fail指针的队列,队列元素为拥有三个数据域 * 的对象: * fail表示Fail指针 * Child数组表示26个子节点指针 * IsOver表示当前节点是否为一个单词的结束节点 * */struct Node { Node *转载 2017-09-23 15:18:57 · 156 阅读 · 0 评论 -
KMP
http://www.cnblogs.com/SYCstudio/p/7194315.html转载 2017-09-23 13:50:14 · 134 阅读 · 0 评论 -
0/1背包记录路径
code:#include <stdio.h>#include <string.h>int main(){ int x,y; scanf("%d%d",&x,&y); int w[50]; int val[50]; int dp[50][50]; memset (dp,0,sizeof(dp)); for(int i=1;i<=y;i++原创 2017-08-30 08:45:28 · 340 阅读 · 0 评论 -
最长公共子串
题目:输入二个字符串,求出从左到右公共的字符最多的个数也就是长度; **比如:**asdfbga asdgfbga 为7;首先用一个数组存公共的个数,dp[i][j],其中i代表第一个字符串的第几个字符,j代表第二个字符串的第几个字符,而dp数组的意思就是第一个字符串的前i个字符和第二个字符串第j的字符前有dp[i][j]公共长度; 在比较的过程中有二个情况;第一种情况: 第一个字符串原创 2017-08-23 11:23:07 · 167 阅读 · 0 评论 -
分组背包
分组背包题目描述一个旅行者有一个最多能用V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,…,Wn,它们的价值分别为C1,C2,…,Cn。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 输入第1行:三个整数,V(背包容量,V<=200),N(物品数量,N<=30)和T(最大组号,T<=10);第2..N原创 2017-08-22 20:22:19 · 392 阅读 · 0 评论 -
背包问题 求解个数
问题 G: 货币系统时间限制: 1 Sec 内存限制: 128 MB题目描述给你一个n种面值的货币系统,求组成面值为m的货币有多少种方案。样例:设n=3,m=10,要求输入和输出的格式如下: 输入第1行:2个整数,n(货币系统的面值数量),m(货币的面值);第2..N+1行:每行1个整数,表示货币系统中每种货币的面值。输出输出方案总数。 样例输入3 10 1 2 5 样例输出10解析原创 2017-08-22 19:55:26 · 1514 阅读 · 4 评论 -
Coins (01背包)
##**coins**##Problem Description Whuacmers use coins.They have coins of value A1,A2,A3…An Silverland dollar. One day Hibix opened purse and found there were some coins. He decided to buy a very nice原创 2017-08-18 21:00:39 · 254 阅读 · 0 评论 -
最大报销额(背包01)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1864最大报销额Problem Description 现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最原创 2017-08-18 19:21:05 · 308 阅读 · 0 评论 -
Robberies(背包01)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955题目含义:一个抢劫犯去抢银行,第一行输入的小数是代表被抓的概率x,整数y代表的是有几个银行,以下的y行是每个银行的被抓的概率n和每个银行里面有多少钱m,要求在不抓住的情况下求出能得到最多的钱;有二个思路,x当作背包的容量,每个银行的被抓概率是每个物品的重量,m就是其价值,但是这样做下来发现不能遍历翻译 2017-08-18 14:49:26 · 146 阅读 · 0 评论 -
递推 一只小蜜蜂
Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。 其中,蜂房的结构如下所示。Input 输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0#include <stdio.h> int main(){ long long dp[51];原创 2017-08-17 13:42:47 · 474 阅读 · 0 评论 -
数塔问题(动态规划)
设有一个三角形的数塔,顶点为根结点,每个结点有一个整数值。从顶点出发,可以向左走或向右走,如图所示 若要求从根结点开始,请找出一条路径,使路径之和最大,只要输出路径的和。输入第一行为n(n<10),表示数塔的层数从第2行至n+1行,每行有若干个数据,表示数塔中的数值。输出输出路径和最大的路径值。 样例输入5 13 11 8 12 7 26 6 14 15 8 12原创 2017-08-16 11:03:13 · 601 阅读 · 0 评论 -
背包问题 01背包 完全背包 多重背包
01背包和完全背包的区别: 01背包的局限在于每样物品只有一种,每个物品都有一个属于自己的价值和重量,在给定的物品中选出背包所能容纳的最大重量,要求是价值最大; 完全背包与01背包的不同在于完全背包不限制每样物品的个数,物品的价值和质量都与01背包一样,也同样是求在给定大小的容量中,找出最大价值的选择;为了不让选过的物品再次被选,也就是01背包问题,可以用对背包的重量从最大(你所需要求的重量)开原创 2017-08-14 19:48:51 · 391 阅读 · 0 评论 -
费马小定理
费马小定理费马小定理(Fermat's little theorem)是数论中的一个重要定理,在1636年提出,其内容为: 假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p),例如:假如a是整数,p是质数,则a,p显然互质(即两者只有一个公约数1),那么我们可以得到费马小定理的一个特例,即当p为质数时候, a^(p-1)≡1(mod p)(≡ 的意思是左右二边的数对p求...原创 2018-04-24 15:11:44 · 1165 阅读 · 0 评论 -
Goldbach
Goldbach's conjecture is one of the oldest and best-known unsolved problems in number theory and all of mathematics. It states:Every even integer greater than 2 can be expressed as the sum of two prim...原创 2018-04-23 09:16:52 · 208 阅读 · 0 评论 -
K序列
题目描述 给一个数组 a,长度为 n,若某个子序列中的和为 K 的倍数,那么这个序列被称为“K 序列”。现在要你 对数组 a 求出最长的子序列的长度,满足这个序列是 K 序列。 输入描述: 第一行为两个整数 n, K, 以空格分隔,第二行为 n 个整数,表示 a[1] ∼ a[n],1 ≤ n ≤ 105 , 1 ≤ a[i] ≤ 109 , 1 ≤ nK ≤ 107 输出描述: 输出翻译 2018-04-15 19:51:24 · 729 阅读 · 0 评论 -
蓝桥杯和天梯赛总结
蓝桥杯和天梯赛总结二场比赛,有得有失,对于天梯赛,虽说是个人赛也像是团体赛,这次做题并没有像以前一样从头开始做,而是从最简单的开始,一方面打算写快点说不定可以拿个一血,还有从做题的经验来看,一般第一题是最麻烦的,容易慌了手脚,最后的结果做下来大概是前面8题第一题不知怎么拿了部分分数其余都满分,然后做了二题进...原创 2018-04-03 14:03:27 · 2817 阅读 · 0 评论 -
Atcoer 2D Plane 2N Points
2D Plane 2N PointsTime limit : 2sec / Memory limit : 256MBScore : 400 pointsProblem StatementOn a two-dimensional plane, there are N red points and N blue points. The coordinates of the i-th red point...原创 2018-03-18 09:48:06 · 319 阅读 · 0 评论 -
Remainder Reminder 剩余提醒
Problem StatementTakahashi had a pair of two positive integers not exceeding N, (a,b), which he has forgotten. He remembers that the remainder of a divided by b was greater than or equal to K. Find th...原创 2018-03-12 18:38:35 · 881 阅读 · 0 评论 -
数据结构:最大子序列和(分治)
题目:给你一组数,求它的子序列(连续的)最大和是多少(要是结果小于一输出0);如4 -3 5 -2 -1 2 6 -2;则是 4 -3 5 -2 -1 2 6 之和最大为11; 本题采用分治的思想,就是先把这8个数对半分; 然后在分 最后 我们把这一原创 2018-02-06 20:15:19 · 2086 阅读 · 2 评论 -
公倍数题目
题目描述给出一个数n,求1到n中,有多少个数不是2 5 11 13的倍数。 输入描述:本题有多组输入每行一个数n,1输出描述:每行输出输出不是2 5 11 13的倍数的数共有多少。示例输入15输出4说明:1 3 7 9题目解析:如果只有一个数比如2 要你求15以内的不是2 的倍数的数有几个,那就很简单,只要15减去15/2就可以了,因为只有原创 2018-02-04 19:08:58 · 363 阅读 · 0 评论 -
并查集:people on a line
People on a LineTime limit : 2sec / Memory limit : 256MBScore : 400 pointsProblem StatementThere are N people standing on the x-axis. Let the coordinate of Person i be xi. For原创 2018-02-04 13:20:15 · 449 阅读 · 0 评论 -
dp专题 ——不要62
不要62 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914 都属于不吉利号码。但是,61152虽然含有6和2,原创 2018-01-28 19:05:23 · 204 阅读 · 0 评论 -
阶乘的最后k位置
阶乘最后k位题目描述n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少 输入 第一行包括两个数n,k 输出如果n!不止k位,则输出最后k位,如果不足k位,则高位补零,补足k位后输出 注意!这里与阶乘统计1有区别!样例输入7原创 2018-01-21 14:01:27 · 1595 阅读 · 0 评论 -
dp专题:拔河
小明班里要举行一次拔河比赛,班主任决定将所有人分为两队,每个人都必须参加。两个队伍的人数之差不能超过1,并且两个队伍的体重之和要尽可能相近,当然相同是最好的了。输入格式输入包含多组测试数据。每组输入的第一行是一个正整数n(2接下来n行,每行输入一个整数w(1输出对于每组输入,分别输出两个队伍的体重之和,按升序排序。样例输入3100原创 2018-01-08 17:13:55 · 827 阅读 · 0 评论 -
dp专题:分梨
分梨题目描述 小明非常喜欢吃梨,有一天他得到了ACMCLUB送给他的一筐梨子。由于他比较仗义,就打算把梨子分给好朋友们吃。现在他要把M个梨子放到N个盘子里面(我们允许有的盘子为空),你能告诉小明有多少种分法吗?(请注意,例如有三个盘子,我们将5,1,1和1,1,5,视为同一种分法) 输入 输入包含多组测试样例。每组输入的第一行是一个整数t。 接下来t行,每行输入两个整数M和N,代表有M个梨和原创 2017-12-28 20:11:19 · 568 阅读 · 0 评论 -
dp专题:猴子与香蕉
猴子与香蕉题目描述一组研究人员正在设计一个测试猴子IQ的实验。他们把香蕉吊在屋顶上,同时给猴子提供了砖块。如果猴子够聪明,它会把砖块一个个叠起来做成一个塔,然后爬上去拿到自己喜爱的食物。 研究人员有n种不同的砖块,而且每种砖块都是取之不尽的。每种砖块都是长方体,第i种砖块的大小是(xi,yi,zi)。砖块能够翻转,可以将任意两边当作底面,剩下的那边作为高。 他们想确定用砖块搭成的最高塔,能否帮助原创 2017-12-23 11:21:33 · 1212 阅读 · 0 评论 -
基础排序:插入排序
插入排序:二个序列,一号序列放的是有序序列,二号序列是无序的,最终的目的是要一号序列是二号序列排好的样子; 首先一号序列是空的,那就取一个数从二号序列中然后放到一号中,总所周知,一个数的序列肯定是有序的,然后继续执行这个操作,从二号序列中取一个数放到一号序列的后面,你要保证的是一号序列在放下一个数之前的数都是有序的,所以,你放进去的时候要比较和前一个的大小,如果按照从小到大的顺序,你要保证你放的数原创 2017-11-28 11:02:33 · 277 阅读 · 0 评论 -
基础排序:选择排序
选择排序: 选中一个位置,让这个位置上的数和其他数比较,比较得到相对而言大的数或者小的数(按你的排序方式决定),再用一个变量去记录这个数的位置,然后再用这个数去和其他的数比较,从而更改位置,这样就可以得到比较的数中最大的或是最小的数的位置,然后把这个位置上的数和之前选中的位置上的数进行交换————这样是一个循环,第二个循环的时候把之前选中位置的数去除,也就是比较的时候不要包括在内,在进行一样操作,原创 2017-11-28 10:12:43 · 185 阅读 · 0 评论 -
基础排序:冒泡排序
冒泡排序: 一位一位 的把大到小或是从小到大的数字按照顺序安放到正确的位置; 比如: 4 5 2 1 9 8 从小到大排的话,第一次循环应该安放最大的数到最后,也就是9 , 先是4 和 5 比较,如果这二个的顺序是你想要的顺序(就像你要从小到大,那4是小于5的)那就不用交换,但是5和2 是不行就要交换位置,按照这样可以把最大的数交换到最后的位置;代码#include <stdio.h>原创 2017-11-27 12:15:25 · 204 阅读 · 0 评论 -
最短路径
问题 D: 最小花费题目描述在n个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。输入第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数。1<=n<=2000以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续原创 2017-10-23 10:29:25 · 158 阅读 · 0 评论 -
并查集 题1
问题描述 今天是Ignatius的生日。他邀请很多朋友。现在是晚餐时间。Ignatius想知道他至少需要多少张桌子。你必须注意到,并不是所有的朋友都认识对方,所有的朋友都不想留在陌生人身上。这个问题的一个重要规则是,如果我告诉你A知道B,B知道C,这意味着A,B,C彼此认识,所以他们可以留在一个表中。例如:如果我告诉你A知道B,B知道C,D知道E,所以A,B,C可以留在一个表中,D,E必须留在另一原创 2017-10-13 17:43:37 · 340 阅读 · 1 评论 -
3 Steps
C - 3 Steps Time limit : 2sec / Memory limit : 256MBScore : 500 pointsProblem Statement Rng has a connected undirected graph with N vertices. Currently, there are M edges in the graph, and the i-th e原创 2017-10-11 17:44:22 · 220 阅读 · 0 评论 -
dp专题:复制书稿
复制书稿题目描述现在要把m本有顺序的书分给k个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一、第三和第四本书给同一个人抄写。现在请你设计一种方案,使得复制时间最短。复制时间为抄写页数最多的人用去的时间。 输入第一行两个整数m,k;(k≤m≤500)第二行m个整数,第i个整数表示第i本书的页数。 输出共k行,每行两个整原创 2017-12-17 12:40:32 · 719 阅读 · 0 评论 -
dp专题:编辑距离
编辑距离题目描述设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:1、删除一个字符;2、插入一个字符;3、将一个字符改为另一个字符。对任的两个字符串A和B,计算出将字符串A变换为字符串B所用的最少字符操作次数。 输入第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于200。 输出只有一个正整数,为最少字符操作次数。样例输入sfdqx原创 2017-12-12 19:18:05 · 232 阅读 · 0 评论 -
dp专题:最长公共子序列
最长公共子序列题目描述一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=#include<stdio.h>#include<string.h>char a[1005];char b[1005];int c[1005][1005];#define max(x,y) x>y?x:yint main(){ scanf("%s",a); scanf原创 2017-12-12 18:37:57 · 261 阅读 · 0 评论 -
dp专题:乘积最大
乘积最大题目描述今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积最大。原创 2017-12-06 16:06:41 · 1970 阅读 · 0 评论 -
基础排序:归并排序
归并排序:把一个数组不断的一分为二,直到每个只有一个数,然后按照分的顺序再把它合并,合并的时候比较大小,使每个合并的序列都是有序的,合到最后原序列就是有序的了;#include<stdio.h>void swap(int &x,int &y){ int temp; temp=x; x=y; y=temp;}void pr(int a[],int n){原创 2017-11-28 16:55:32 · 156 阅读 · 0 评论 -
基础排序:希尔排序
#include<stdio.h>void swap(int *x,int *y){ int temp; temp=*x; *x=*y; *y=temp;}void pr(int a[],int n){ for(int i=0;i<n;i++) printf("%d ",a[i]); printf("\n");}void原创 2017-11-28 13:14:07 · 180 阅读 · 0 评论 -
dp专题:合并石子
合并石子题目描述在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个程序,计算出将N堆石子合并成一堆的最小得分。输入第一行为一个正整数N (2≤N≤100);以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1≤i≤N)。 输出为一个正整数,即最小得分。样例输入7 13 7翻译 2017-12-03 16:13:00 · 741 阅读 · 0 评论