摘要: 题目传送门:Be Efficient 题意:输入n和m,然后输入有n个元素的一个序列,问有多少个子序列元素的和能整除m。 思路:求前缀和,利用一个前缀的一个定理求解。 前缀和的一个定理是:每次求的前缀和对m取余,两个相等的结果之间的序列的和就是m的倍数。 如上序号1、4的结果相同,则序号2、3、4的 阅读全文
posted @ 2018-10-02 19:55 sykline 阅读(324) 评论(0) 推荐(0)
摘要: Select Of Chocolate Poles 题意:有一个竖直放置的高度为l cm的盒子,现在有三种方块分别为1cm的白块,1cm的黑块,k cm的黑块,要求第一块放进去的必须是黑色的,盒子最上边的必须也是黑色的,盒子不必放满,问一共有多少种放法。 思路:知道要用DP确实死活推不出状态转移公式 阅读全文
posted @ 2018-10-02 19:54 sykline 阅读(158) 评论(0) 推荐(0)
摘要: 平行直线 题意:给出一些点,这些点两两相连成一条直线,问最多能连成多少条直线。 思路:暴力出奇迹!!记得当时比赛做这道题的时候一直依赖于板子,结果却限制了自己的思路,这得改。dfs直接暴力,但是需要将已经走过的点标记一下,用一个循环跳过已经标记的点减少dfs次数,不然得不出正确的结果,因为会出现如下 阅读全文
posted @ 2018-10-02 19:54 sykline 阅读(148) 评论(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 阅读(1610) 评论(0) 推荐(0)
摘要: 题意: ​ 思路:单源最短路问题,Dijkstra算法搞定就可以了,因为要找出最便宜的最短路,所以需要在更新最短距离的时候加一个条件(即当最短距离相等的时候,如果该路径的花费更小,就更新最小花费)就可以了。之前自己学的最短路的水平也就仅限于模板题的水平,现在可以在条件上稍微加一些变化,做了数据结构的 阅读全文
posted @ 2018-10-02 19:51 sykline 阅读(1197) 评论(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 阅读(267) 评论(0) 推荐(0)
摘要: 题意: 思路:对每个输入的点跑一遍dijkstra算法,然后对这个点到所有点的距离求和按公式输出就可以了。 (这次尝试了用数组模拟链表来做最短路问题,刷新了自己对最短路的理解) 这里构造链表的过程我的理解一直有误差,第一行的式子中参与代码构建的是Next[cnt] = head[y];head[y] 阅读全文
posted @ 2018-10-02 19:49 sykline 阅读(1309) 评论(0) 推荐(0)
摘要: 题意: 小w不会离散数学,所以她van的图论游戏是送分的 小w有一张n个点n-1条边的无向联通图,每个点编号为1~n,每条边都有一个长度小w现在在点x上她想知道从点x出发经过每个点至少一次,最少需要走多少路 思路:从当前位置开始dfs深搜,注意已经搜过的上一个点就不要搜了不然就成死循环了。 确实是个 阅读全文
posted @ 2018-10-02 19:48 sykline 阅读(184) 评论(0) 推荐(0)
摘要: 题意: 思路: 读完题目之后的第一思路就是用map将客户的id(string类型)与里程road(int类型)形成映射,然后直接用id查找添加里程或输出里程。但是400ms的限制妥妥的超时了。然后意识到要用哈希做,但是用哈希就有一点不好解决,每个客户的里程怎么保存,考虑了很长时间无果,搜了一下博客, 阅读全文
posted @ 2018-10-02 19:48 sykline 阅读(2360) 评论(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 阅读(220) 评论(0) 推荐(0)
摘要: 题目: 题意: 让求给出的序列中连续的一个子序列的和的最大值,以及这个子序列的起点和终点。 思路:dp求当前位置的最大值,dp[i] = max(dp[i-1], a[i]);最大值的位置就是终点,既然知道了和的大小,那么,只要找出那个区间的和是该值就可以了,这里可以用一个前缀和数组来求开始的位置。 阅读全文
posted @ 2018-10-02 19:45 sykline 阅读(183) 评论(0) 推荐(0)
摘要: 传送门:HDU_1087 题意:现在要玩一个跳棋类游戏,有棋盘和棋子。从棋子st开始,跳到棋子en结束。跳动棋子的规则是下一个落脚的棋子的号码必须要大于当前棋子的号码。st的号是所有棋子中最小的,en的号是所有棋子中最大的。最终所得分数是所有经过的棋子的号码的和。 思路:读完题之后知道这是一个最长上 阅读全文
posted @ 2018-10-02 19:44 sykline 阅读(131) 评论(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 阅读(361) 评论(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 阅读(374) 评论(0) 推荐(0)
摘要: 一场比赛让自己看到了学了这么长时间,竟然还有这么多落下的东西。 区间DP,通过先求小区间的最优解,然后通过小区间的最优解来得到大区间的最优解。 区间DP板子 1 for(int len = 2; len <= N; len++)//枚举区间的长度,长度是从2开始的,从一开始是貌似没什么意思 2 fo 阅读全文
posted @ 2018-10-02 19:40 sykline 阅读(179) 评论(0) 推荐(0)
摘要: DP-01背包问题例题 输入处理有点恶心人,不过处理完后就是简单的DP了 从头开始dp[i]表示从0开始到i的最优结果,最后从都边里dp数组,求得最大的报销额。 对于每个i都要从头维护最优结果。(二刷感觉仍不得dp精髓,,,,) HDU-1864最大报销额 1 #include <iostream> 阅读全文
posted @ 2018-10-02 19:39 sykline 阅读(229) 评论(0) 推荐(0)
摘要: 超级传送门 题目描述: 晨晨在纸上写了一个长度为N的非负整数序列{ai}。对于这个序列的一个连续子序列{al,al+1,…,ar}晨晨可以求出其中所有数异或的结果 alxoral+1xor...xorar其 中xor表示位异或运算,对应C、C++、 Java等语言中的^运算。小璐提出了M个询问,每个 阅读全文
posted @ 2018-10-02 19:38 sykline 阅读(268) 评论(0) 推荐(0)
摘要: 传送门 在看大佬的代码时候遇到了unique函数以及二分查找的lower_bound和upper_bound函数,所以写这篇文章来记录以备复习。 unique函数 在STL中unique函数是一个去重函数, unique的功能是去除相邻的重复元素(只保留一个),其实它并不真正把重复的元素删除,是把重 阅读全文
posted @ 2018-10-02 19:37 sykline 阅读(302) 评论(0) 推荐(0)