摘要: 题目传送门 较水,开两个桶即可。 题目可以理解为,将大于B的数看为1,小于B的数看为-1,将以B这个数为中位数的序列左右分为两半,加起来为0. code: 阅读全文
posted @ 2017-12-20 20:36 Cptraser 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Trie,之前觉得一个听起来很diao的数据结构,学了发现其实是一个挺简单的数据结构。 在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。 其实就是一棵树上记录的是字母。 但是要注 阅读全文
posted @ 2017-12-02 21:48 Cptraser 阅读(246) 评论(1) 推荐(0) 编辑
摘要: 今天自习课没事干,看书自学了一下网络流中的EK算法。(求最大流) 设s为源点,t为汇点,C为容量矩阵,F为流量矩阵,f为最大流量。 1.初始化F,f 2.用BFS在残量网络中找到一条从s到t的最短增广路T,如果T不存在,算法结束。 最短增广路就是最短路径(s→t) 一边(u,v)被增广完后,在残量网 阅读全文
posted @ 2017-11-29 16:53 Cptraser 阅读(704) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 裸的模板题,Tarjan求联通量。 code: 模板,加深印象 阅读全文
posted @ 2017-11-27 17:40 Cptraser 阅读(203) 评论(0) 推荐(0) 编辑
摘要: Fliptil(fliptile.pas/c/cpp) 【问题描述】 约翰知道,那些高智力又快乐的奶牛产奶量特别高。所以他做了一个翻瓦片的益智游戏来娱乐奶牛。 在一个M×N的骨架上,每一个格子里都有一个可以翻转的瓦片。瓦片的一面是黑色的,而另一面是白色的。对一个瓦片进行翻转,可以使黑变白,也可以使白 阅读全文
posted @ 2017-11-24 15:34 Cptraser 阅读(234) 评论(0) 推荐(0) 编辑
摘要: Day0 一天都基本在休息,早上信心赛,大家都是400整。 下午一群人窝在教室里打三国杀。 Day1:Before Contest 早上大约十点到了试场,在考提高组,不能进。 喝了一杯咖啡去除早起的身心疲倦。感觉较好。 Day1:During Contest 前三题对于自己来说较水,一小时做完,一直 阅读全文
posted @ 2017-11-22 17:49 Cptraser 阅读(240) 评论(1) 推荐(0) 编辑
摘要: Tarjan,一个十分有用的东西,可以求有向图的强连通分量,复杂度达到O(V+E)。 Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树。搜索时,把当前搜索树中未处理的节点加入一个堆栈,回溯时可以判断栈顶到栈中的节点是否为一个强连通分量。 我们开一个数组DFN,记录i这 阅读全文
posted @ 2017-10-27 10:01 Cptraser 阅读(235) 评论(0) 推荐(1) 编辑
摘要: 题目传送门 这道题比较水,设f[i][j]表示i~j区间合并的最大值。 #include <cstdio> #define max(a,b) a>b?a:b using namespace std; int N,x,f[250][250],ans; int main(){ scanf("%d",&N 阅读全文
posted @ 2017-10-22 19:24 Cptraser 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 初看这道题,以为是一道挺难的题目,但仔细看发现,不是只要爆搜就好了吗? 只需要对前12个素数进行爆搜即可。 一个数的因数个数=素数次数+1全部乘起来。 code: 阅读全文
posted @ 2017-10-20 18:07 Cptraser 阅读(213) 评论(0) 推荐(0) 编辑
摘要: A. Search for Pretty Integers: 题目传送门 题目大意:给定N和M个数,从前一个数列和后一个数列中各取一个数,求最小值,相同算一位数。 一道水题,读入A、B数组后枚举i、j判断最小值即可,注意相同时只需要一位。 B. Maximum of Maximums of Mini 阅读全文
posted @ 2017-10-16 15:44 Cptraser 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 题目大意:给定一棵K叉树,一个节点下的K个节点的分数为i,求包含大于等于D的边的总分数为N的方案总数,mod 1e9+7。 这是一道很好的树形DP题,首先看N和K两个条件,可以轻易的得到方程: //f[i][j]表示总分为i,当前边分数到j的方案总数。 再看最后一个条件,我们仔细一想,不 阅读全文
posted @ 2017-10-14 22:26 Cptraser 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 由题目可得,在一条路上有N个加油站,在距离终点a[i](细节)的位置上,你需要通过长度为L的路,油箱的容量是无限的,但是初始只有P点油,经过每个加油站时可以选择加b[i]的油,问最少加油几次可以到达终点。 可以看出经过每一个加油站时可以有两个选择:加油或不加油,但过去了就不能回来。 假如 阅读全文
posted @ 2017-10-06 20:38 Cptraser 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 这是一道DP+最短路径的好题。 首先预处理每天每个点的最短路径。 用SPFA进行处理。即cost[i][j]为第i天到底j天的1到M点的最小花费。 就可以水水的DP。 设f[i]为第i天的最优方案,f[i]=min(f[i],f[j]+cost[j+1][i]*(i-j)+K); 即从第 阅读全文
posted @ 2017-09-29 18:52 Cptraser 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 在生活中们有时会遇到一些有关字符串匹配的问题。 这时打暴力往往显得很愚蠢,效率低下。 所以就需要一些算法和数据结构来提高效率。 Hash Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是 阅读全文
posted @ 2017-09-26 15:51 Cptraser 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 我们设f[i]表示用机器A加工,时间还剩下i时的最优加工时间。 对于每一个时间可以加工的物品,有以下几个选择: 1、用机器A加工 2、用机器B加工 3、A和B一起加工 所以得到方程: f[j]+=a[i][2]//用机器B加工,所以时间还剩j。 f[j]=min(f[j],f[j-a[i 阅读全文
posted @ 2017-09-26 09:56 Cptraser 阅读(189) 评论(0) 推荐(0) 编辑