摘要:
题目传送门:Be Efficient 题意:输入n和m,然后输入有n个元素的一个序列,问有多少个子序列元素的和能整除m。 思路:求前缀和,利用一个前缀的一个定理求解。 前缀和的一个定理是:每次求的前缀和对m取余,两个相等的结果之间的序列的和就是m的倍数。 如上序号1、4的结果相同,则序号2、3、4的 阅读全文
posted @ 2018-10-02 19:55
sykline
阅读(326)
评论(0)
推荐(0)
摘要:
Select Of Chocolate Poles 题意:有一个竖直放置的高度为l cm的盒子,现在有三种方块分别为1cm的白块,1cm的黑块,k cm的黑块,要求第一块放进去的必须是黑色的,盒子最上边的必须也是黑色的,盒子不必放满,问一共有多少种放法。 思路:知道要用DP确实死活推不出状态转移公式 阅读全文
posted @ 2018-10-02 19:54
sykline
阅读(159)
评论(0)
推荐(0)
摘要:
平行直线 题意:给出一些点,这些点两两相连成一条直线,问最多能连成多少条直线。 思路:暴力出奇迹!!记得当时比赛做这道题的时候一直依赖于板子,结果却限制了自己的思路,这得改。dfs直接暴力,但是需要将已经走过的点标记一下,用一个循环跳过已经标记的点减少dfs次数,不然得不出正确的结果,因为会出现如下 阅读全文
posted @ 2018-10-02 19:54
sykline
阅读(149)
评论(0)
推荐(0)
摘要:
Decoding of Varints 题意&思路: 首先根据红色边框部分的公式算出x,再有绿色部分得知,如果x是偶数则直接除以2,x是奇数则(x+1)/-2。 PS:这题有数据会爆掉unsigned long long,就是在最后奇数转换的时候。所以转换的时候可以变公式为-((x-1)/2+1 阅读全文
posted @ 2018-10-02 19:53
sykline
阅读(348)
评论(0)
推荐(0)
摘要:
除留余数法设计哈希表 : 由该式子得到value在哈希表中的存储位置:index = value % p;这里为了尽量的减少冲突,而且让value在哈希表中尽可能的均匀分布,p的选择就至关重要了。而合理选择p的经验是:若散列表表长为m,通常p为小于或等于表长(最好接近m)的最小质数或不包含小于20质 阅读全文
posted @ 2018-10-02 19:52
sykline
阅读(1613)
评论(0)
推荐(0)
摘要:
题意: 思路:单源最短路问题,Dijkstra算法搞定就可以了,因为要找出最便宜的最短路,所以需要在更新最短距离的时候加一个条件(即当最短距离相等的时候,如果该路径的花费更小,就更新最小花费)就可以了。之前自己学的最短路的水平也就仅限于模板题的水平,现在可以在条件上稍微加一些变化,做了数据结构的 阅读全文
posted @ 2018-10-02 19:51
sykline
阅读(1201)
评论(0)
推荐(0)
摘要:
题意: 思路: 用优先队列直接模拟就OK了,另外优先队列存pair的时候比较的是first的值,实测!! 上代码: 1 #include <iostream> 2 #include <queue> 3 #include <cstdio> 4 #include <algorithm> 5 #inclu 阅读全文
posted @ 2018-10-02 19:50
sykline
阅读(268)
评论(0)
推荐(0)
摘要:
题意: 思路:对每个输入的点跑一遍dijkstra算法,然后对这个点到所有点的距离求和按公式输出就可以了。 (这次尝试了用数组模拟链表来做最短路问题,刷新了自己对最短路的理解) 这里构造链表的过程我的理解一直有误差,第一行的式子中参与代码构建的是Next[cnt] = head[y];head[y] 阅读全文
posted @ 2018-10-02 19:49
sykline
阅读(1309)
评论(0)
推荐(0)
摘要:
题意: 思路: 读完题目之后的第一思路就是用map将客户的id(string类型)与里程road(int类型)形成映射,然后直接用id查找添加里程或输出里程。但是400ms的限制妥妥的超时了。然后意识到要用哈希做,但是用哈希就有一点不好解决,每个客户的里程怎么保存,考虑了很长时间无果,搜了一下博客, 阅读全文
posted @ 2018-10-02 19:48
sykline
阅读(2366)
评论(0)
推荐(0)
摘要:
题意: 小w不会离散数学,所以她van的图论游戏是送分的 小w有一张n个点n-1条边的无向联通图,每个点编号为1~n,每条边都有一个长度小w现在在点x上她想知道从点x出发经过每个点至少一次,最少需要走多少路 思路:从当前位置开始dfs深搜,注意已经搜过的上一个点就不要搜了不然就成死循环了。 确实是个 阅读全文
posted @ 2018-10-02 19:48
sykline
阅读(185)
评论(0)
推荐(0)
摘要:
题意:一个强盗要抢劫银行又不想被抓到,所以要进行概率分析求他在不被抓的情况下能抢最多的钱。他给定T(样例个数),N(要抢的银行的个数),P(被抓的概率要小于P)Mj(强盗能抢第j个银行Mj元钱),Pj(强盗抢第j个银行被抓的概率为Pj)。 思路:被抓的概率不好直接求出来,但可以直接求出不被抓的概率, 阅读全文
posted @ 2018-10-02 19:47
sykline
阅读(723)
评论(0)
推荐(0)
摘要:
题目: 思路: 二维dp,完全背包,状态转移方程dp[i][z] = max(dp[i][z], dp[i-1][z-a[j]]+b[j]),dp[i][z]表示在杀i个怪,消耗z个容忍度的情况下获得的最大的经验值。 刚看到这个题一直把思维限制在一维dp中,总是不能表达全部的条件,然后想到二维d 阅读全文
posted @ 2018-10-02 19:46
sykline
阅读(221)
评论(0)
推荐(0)
摘要:
题目: 题意: 让求给出的序列中连续的一个子序列的和的最大值,以及这个子序列的起点和终点。 思路:dp求当前位置的最大值,dp[i] = max(dp[i-1], a[i]);最大值的位置就是终点,既然知道了和的大小,那么,只要找出那个区间的和是该值就可以了,这里可以用一个前缀和数组来求开始的位置。 阅读全文
posted @ 2018-10-02 19:45
sykline
阅读(184)
评论(0)
推荐(0)
摘要:
传送门:HDU_1087 题意:现在要玩一个跳棋类游戏,有棋盘和棋子。从棋子st开始,跳到棋子en结束。跳动棋子的规则是下一个落脚的棋子的号码必须要大于当前棋子的号码。st的号是所有棋子中最小的,en的号是所有棋子中最大的。最终所得分数是所有经过的棋子的号码的和。 思路:读完题之后知道这是一个最长上 阅读全文
posted @ 2018-10-02 19:44
sykline
阅读(133)
评论(0)
推荐(0)
摘要:
首先得明白一个概念:子序列不一定是连续的,可以是断开的。 有两种写法: 一、动态规划写法 复杂度:O(n^2) 代码: 1 #include <iostream> 2 #include <queue> 3 #include <cstdio> 4 #include <algorithm> 5 #inc 阅读全文
posted @ 2018-10-02 19:43
sykline
阅读(362)
评论(0)
推荐(0)
摘要:
题目: 思路:针对四种排序方法构建四个结构体,按四种排序排完之后,把结果汇总到代表国家的一个结构体中。然后就是查询就是了。排序规则可通过下面的例子了解一下: 序列:g[0] = 1,g[1] = 2,g[2] = 2, g[3] = 3; 排名:1 ,2 ,2 ,3(并不是1,2,3,4) 代码 阅读全文
posted @ 2018-10-02 19:42
sykline
阅读(376)
评论(0)
推荐(0)
摘要:
一场比赛让自己看到了学了这么长时间,竟然还有这么多落下的东西。 区间DP,通过先求小区间的最优解,然后通过小区间的最优解来得到大区间的最优解。 区间DP板子 1 for(int len = 2; len <= N; len++)//枚举区间的长度,长度是从2开始的,从一开始是貌似没什么意思 2 fo 阅读全文
posted @ 2018-10-02 19:40
sykline
阅读(181)
评论(0)
推荐(0)
摘要:
DP-01背包问题例题 输入处理有点恶心人,不过处理完后就是简单的DP了 从头开始dp[i]表示从0开始到i的最优结果,最后从都边里dp数组,求得最大的报销额。 对于每个i都要从头维护最优结果。(二刷感觉仍不得dp精髓,,,,) HDU-1864最大报销额 1 #include <iostream> 阅读全文
posted @ 2018-10-02 19:39
sykline
阅读(231)
评论(0)
推荐(0)
摘要:
超级传送门 题目描述: 晨晨在纸上写了一个长度为N的非负整数序列{ai}。对于这个序列的一个连续子序列{al,al+1,…,ar}晨晨可以求出其中所有数异或的结果 alxoral+1xor...xorar其 中xor表示位异或运算,对应C、C++、 Java等语言中的^运算。小璐提出了M个询问,每个 阅读全文
posted @ 2018-10-02 19:38
sykline
阅读(270)
评论(0)
推荐(0)
摘要:
传送门 在看大佬的代码时候遇到了unique函数以及二分查找的lower_bound和upper_bound函数,所以写这篇文章来记录以备复习。 unique函数 在STL中unique函数是一个去重函数, unique的功能是去除相邻的重复元素(只保留一个),其实它并不真正把重复的元素删除,是把重 阅读全文
posted @ 2018-10-02 19:37
sykline
阅读(303)
评论(0)
推荐(0)
摘要:
一、巴什博奕: 只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。 结论: 见代码 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstring> 5 #defin 阅读全文
posted @ 2018-10-02 19:36
sykline
阅读(156)
评论(0)
推荐(0)
摘要:
sub[ ]代表子串,str[ ]代表原串,next[ ]代表当sub[i] != str[j]时,子串需要跳到的地方,实现代码如下: 获取next数组的代码: 1 void GetNext()//求子串中的相同的真前缀和真后缀 2 { 3 memset(next, 0, sizeof(next)) 阅读全文
posted @ 2018-10-02 19:34
sykline
阅读(113)
评论(0)
推荐(0)
摘要:
原理: 举个例子来说明康拓展开的应用: 已知1,2,3,4,5五个数的全排列,给出一个排列34152,问该排列在全排列中是第几个。而康托展开的值就是这个排名。 首位是3,比它小而且没有出现过的数有1,2两个,所以为 2 * 4!; 第二位是4,比它小而且没有出现过的数有1,2两个,所以值为 2 * 阅读全文
posted @ 2018-10-02 19:32
sykline
阅读(175)
评论(0)
推荐(0)
摘要:
用树状数组,在存数据的时候下标应该是从1开始的; 再求区间的和的时候和前缀和一样开始的下标是要减一的; toSum(int x)中再求前缀和的时候是倒着向前走的; 树状数组讲解:http://www.cnblogs.com/jinkun113/p/4725420.html ORZorzorz一看就明 阅读全文
posted @ 2018-10-02 19:31
sykline
阅读(160)
评论(0)
推荐(0)
摘要:
查找该字符串是不是已经出现过 1 //在给出的字符串中查找当前字符串是否出现过 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 #include <cstdio> 6 #include <cmath> 7 #in 阅读全文
posted @ 2018-10-02 19:30
sykline
阅读(227)
评论(0)
推荐(0)
摘要:
自己对Dijstra算法的理解是: 首先输入保存点,边的权值(注意无向图和有向图在保存时的区别)。 将表示从起点st到顶点 i 的距离的d[ i ]数组的每一个值初始化为INF,令d[st] = 0。 遍历d[ ]数组的下标 i (即顶点 i)这个操作是通过优先队列来实现的,然后遍历以顶点 i 为起 阅读全文
posted @ 2018-10-02 19:28
sykline
阅读(664)
评论(0)
推荐(0)
摘要:
可以求得任意两点之间的最短路问题 1 int d[maxn][maxn];//d[st][en]表示边e = {u,v}的权值(不存在时设为INF,d[i][j] = 0) 2 int V;//顶点的个数 3 4 void Floyd() 5 { 6 for(int k = 0; k < V; k+ 阅读全文
posted @ 2018-10-02 19:27
sykline
阅读(446)
评论(0)
推荐(0)
摘要:
自己对拓扑排序的理解: 例如:安排一些课程的顺序,这些课程有的可以放在一个学期内授课,而有的则有先后顺序,则可以通过拓扑排序来完成这个排序。 有序无环图(DAG)才能进行拓扑排序。 从图中找出没有入度顶点,存入答案序列中,并将以该点为起点的边从图中删掉。知道找完所有的点为止。 图例:(从左往右看) 阅读全文
posted @ 2018-10-02 19:26
sykline
阅读(234)
评论(0)
推荐(0)
摘要:
自己对归并排序的理解: 归并排序采用分治法来实现,将要排序的数组对半拆分,当拆分到单个元素的时候,在进行合并这时按照一定的顺序合并到临时数组temp中,最后在存入原来的数组中。 代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cma 阅读全文
posted @ 2018-10-02 19:25
sykline
阅读(132)
评论(0)
推荐(0)
摘要:
如下图:要求最多可以凑成多少对对象 大佬博客: https://blog.csdn.net/cillyb/article/details/55511666 https://blog.csdn.net/denghecsdn/article/details/77619308 https://www.cn 阅读全文
posted @ 2018-10-02 19:23
sykline
阅读(460)
评论(0)
推荐(0)
摘要:
Cat VS Dog 题意:一群小朋友去动物园,如果每个小朋友喜欢的动物是猫,那么不喜欢的动物一定是狗,反之也是。现在动物园的管理者要拿走一些动物,如果拿走的是某个小朋友不喜欢的动物,那这个小朋友就非常开心,反之,如果是某个小朋友喜欢的动物,这个小朋友就非常的不开心,问那完后最多有几个小朋友会非常开 阅读全文
posted @ 2018-10-02 19:21
sykline
阅读(341)
评论(0)
推荐(0)
摘要:
题目链接:UVA1001 题意:在一个巨大奶酪中的A要以最短的时间与B相遇。在奶酪中走一米的距离花费的时间是10s,而奶酪中有许多洞,穿过这些洞的时间是0s。给出A、B以及各个洞的坐标,求最短的时间。 三维??乖乖,这怎么用最短路算法。在搜了题解后才知道可以编号压缩成二维啊,这操作骚气,实在想不出来 阅读全文
posted @ 2018-10-02 19:20
sykline
阅读(222)
评论(0)
推荐(0)
摘要:
题目:Slim Span UVA 1395 题意:给出一副无向有权图,求生成树中最小的苗条度(最大权值减最小权值),如果不能生成树,就输出-1; 思路:将所有的边按权值有小到大排序,然后枚举每一条边,以这条边开始利用Kruskal算法生成树,生成过程中求出权值的最大值,这个最大值减去当前枚举的边的权 阅读全文
posted @ 2018-10-02 19:17
sykline
阅读(117)
评论(0)
推荐(0)
摘要:
UVALive 3026 KMP中next[]数组的应用; 题意:给出一个字符串,问该字符串每个前缀首字母的位置和该前缀的周期。 思路:裸KMP直接上就是了; 设该字符串为str,str字符串的长度为len,next[]的有关前缀的周期的性质: 如果len % (len - next[len]) = 阅读全文
posted @ 2018-10-02 19:16
sykline
阅读(104)
评论(0)
推荐(0)
摘要:
HDU4027 题意:操作指令为0时,对区间[x,y]之间的数字进行开平方;指令为1的时候,对区间[x,y]之间的数字求和并输出; 思路:线段树处理就OK了,但是64位内的数最多开8次平方就为1了(开始不信,试了试之后orz.......),所以在开平方的时候加一下限制条件使开平方操作提前结束没必要 阅读全文
posted @ 2018-10-02 19:15
sykline
阅读(288)
评论(0)
推荐(0)
摘要:
题目: 思路:先离散化数据然后树状数组搞一下求逆序数。 离散化的方法:https://blog.csdn.net/gokou_ruri/article/details/7723378 自己对用树状数组求逆序数的理解:输入数据并利用树状数组求出前边比它小和等于它的数据有几个,用输入数据的总的个数减去比 阅读全文
posted @ 2018-10-02 19:14
sykline
阅读(342)
评论(0)
推荐(0)
摘要:
不容易系列之一 题意: 一个人要寄n个信封,结果装错了。信纸的编号为1到n,信封的编号为1到n,信纸的编号不能和信封的编号一样,全都不能一样。 思路:错排公式。 D(n)表示n件信封装错的所有的情况。 1、将编号为n的信纸装进编号为k的信封,有n-1中装法; 2、再将编号为n-1的信纸装进信封,此时 阅读全文
posted @ 2018-10-02 19:13
sykline
阅读(163)
评论(0)
推荐(0)
摘要:
Kefa and Company 题意:Kefa这个人要去吃饭,他要邀请一些朋友一起去,他的每个朋友有两个属性金钱和关系度,要求邀请的人里边任意两个人之间的金钱差的绝对值不大于d;求被邀请的所有朋友的关系度的和的最大值。 思路:将朋友按金钱从小到大排序,然后对关系度用尺取法求得最大值 ,这里要用前缀 阅读全文
posted @ 2018-10-02 19:12
sykline
阅读(273)
评论(0)
推荐(0)
摘要:
Entertainment Box 题意: 有n个节目,每个节目给出开始时间(st)和结束时间(en); 有k个内存条这k个内存条可以同时存储节目。如果节目j的开始时间stj 大于等于节目i的结束时间,就可以放进内存条中; 问这k个内存条最多可以存储多少个节目。 思路:开一个multiset容器,开 阅读全文
posted @ 2018-10-02 19:11
sykline
阅读(175)
评论(0)
推荐(0)
摘要:
HDU5884 Sort 题意:有n个序列要进行归并,每次归并的代价是两个序列的长度的和,要求最终的代价不能超过规定的T,求在此前提下一次能同时进行归并的序列的个数k。 思路:还是太单纯,看完题目一直以为要用归并排序来解题,如果已经看过多叉哈夫曼树的知识的话估计就不会这样了。先二分查找这个k,然后用 阅读全文
posted @ 2018-10-02 19:10
sykline
阅读(431)
评论(0)
推荐(0)
摘要:
题意:给出n个模式串和一个文本串,问在文本串中出现了几个模式串。 思路:AC自动机裸题; 看过n个版本的AC自动机后终于理解了代码是如何实现的。再一次体会到光懂得原理和能利用原理解决问题之间的巨大的鸿沟。 代码: #include <iostream> #include <cstdio> #incl 阅读全文
posted @ 2018-10-02 19:08
sykline
阅读(256)
评论(0)
推荐(0)
摘要:
Coefficient Computation UVALive8265 题意:计算组合数C(n,k)的值并将值按给定的进制输出。 思路:Java大整数类硬上。 PS:刚刚学完Java的大整数类,结果却被Java怎么开数组卡到吐血,直接后果就是少开一题,赛后学长指导后5分钟出题,真酸爽…… 包:jav 阅读全文
posted @ 2018-10-02 19:07
sykline
阅读(363)
评论(0)
推荐(0)
摘要:
传送门:Chat Group(gym101775A) 题意:一个宿舍中又n个人,最少k(k >= 3)个人就可以建一个讨论组,问最多可以建多少个不同的讨论组。 思路:求组合数的和,因为涉及除法取余,所以要求逆元来解题。 虽然之前看到过有关逆元的知识,但是一直没有弄明白逆元的应用。嗯~~挖下的坑终于把 阅读全文
posted @ 2018-10-02 19:06
sykline
阅读(327)
评论(0)
推荐(0)
摘要:
复杂度:O(n^2) C[i][j]即为C(i,j); #include <bits/stdc++.h> using namespace std; const int MOD = 1e9+7; const int maxn = 1e3; typedef long long ll; int n,k; 阅读全文
posted @ 2018-10-02 19:05
sykline
阅读(1288)
评论(0)
推荐(0)
摘要:
逆元: 如果满足公式,则有a 是 b的逆元同时b也是a的逆元。 逆元的应用: 设c为b在对m取余的意义下的逆元; 在求解公式 (a / b) % m的时候,如果b可能会非常的大,所以会出现爆精度的问题,这个时候就需要将除法转换成乘法来做,即: (a / b ) % m = (a * c)%m。 逆元 阅读全文
posted @ 2018-10-02 19:03
sykline
阅读(369)
评论(0)
推荐(0)
摘要:
当年没填起来的坑,迟早会再一次掉进去!!!想想还是将现在自己会用了的部分记录下来,以后再做补充。 欧几里得算法: 到目前为止也只是用来求一下两个整数的最大公约数(感觉又是一个巨大无比的坑)。暂时先把这个用法记下来吧。 //非递归实现 long long gcd(long long a,long lo 阅读全文
posted @ 2018-10-02 18:57
sykline
阅读(558)
评论(0)
推荐(0)
摘要:
唯一分解定理:任何一个大于1的自然数N,如果N不是质数,那么N可以分解成有限个素数的乘积;例:N=(p1^a1)*(p2^a2)*(p3^a3)......其中p1<p2<p3...... 在做 UVA10375 时学到了这个算法,虽然自己理解的还不透彻,先把自己的看法写下来,日后再完善; 要用唯一 阅读全文
posted @ 2018-10-02 18:55
sykline
阅读(413)
评论(0)
推荐(0)
摘要:
欧拉函数:(转自百度百科) 欧拉函数F(x)的作用:求从1到x与x互质的数的个数。 直接求欧拉函数 int euler(int n)//计算与n互质的数的个数 { int res = n,maxn = n; for(int i=2;i*i < maxn;i++) { if(n % i == 0) { 阅读全文
posted @ 2018-10-02 18:52
sykline
阅读(658)
评论(0)
推荐(0)
摘要:
HDU_5783_DivideTheSequence 点击打开链接 题意: 生成尽量多的连续的子串,且子串的前缀和大于等于0,输出符合题意的子串的数量。 这题目是参加四月份的个人训练赛遇到的,挺水的。但是因为没读懂题目和不懂得串的前缀和是什么东东,嗯。。。(此处省略几千字) 串的前缀和: 设有一个数 阅读全文
posted @ 2018-10-02 18:40
sykline
阅读(126)
评论(0)
推荐(0)
摘要:
断断续续地看了两天的马拉车算法,可算是给搞明白了(贼开心),这算是自己搞懂的第一个算法了(23333333333333)这个算法照目前自己的理解来看,貌似就只能求个字符串中的回文串(接触这个算法是要求最长的回文串),虽然应用的范围有点少,但还是要学习滴,不然遇到类似的题目就gg了。 可以在线性时间内 阅读全文
posted @ 2018-10-02 18:38
sykline
阅读(3273)
评论(0)
推荐(0)
摘要:
传送门:LCS 题意:给出两个序列an和bn,想在给出一个序列pn,问经过a[p1],,,,a[pn]和b[p1],,,b[pn]变换后序列a和序列b的最长公共子序列的长度是多少。 思路:对a[i]->b[i]建边,最终总能形成一个环,对于这个长度为L的环,我们总能找到一个长度为L-1的LCS。所以 阅读全文
posted @ 2018-10-02 18:30
sykline
阅读(325)
评论(0)
推荐(0)
摘要:
传送门:Wash! 题意:有n台洗衣机,m台烘干机,给出了每台机器处理意见衣服的时间,而且没见机器同时只能处理一件衣服。问如何选择机器才能使洗完衣服的时间最短。 思路:建两个优先队列,一个表示洗衣机,一个表示烘干机。每次取出最少工作时间的机器来进行洗衣,并将工作结束的时间加上处理一件衣服的时间。最后 阅读全文
posted @ 2018-10-02 10:52
sykline
阅读(323)
评论(0)
推荐(0)

浙公网安备 33010602011771号