- 博客(25)
- 收藏
- 关注
原创 HDU 5745 La Vie en rose(bitset+dp)
题目:传送门 题意:给你一个p模式串,根据1、2两条规则变形,然后在s串中找符合p模式串的位置。 题解:bitset就相当于一个bool类型的数组,但是它可以方便的进行位运算,比如int类型最多进行32位的位运算,bitset可以进行任意位的位运算,具体资料以及各种操作的复杂度可以百度。然后讲讲dp部分,dp[now][i]存的是now位置i状态下满足条件的位置。另外开一个bitset数组a[26...
2018-07-10 11:32:28
221
原创 GYM 101485D Debugging(记忆化搜索)
题目题意:一段程序中有一个bug,现在用在程序中插入printf的方式来debug。程序一共n行,编译运行到出错的时间是r,插入一次printf花费的时间是p。求使用最优策略时输出最坏时间来找到崩溃线。思路:一个长度为k的代码块可以分成2,3,4,···,k个代码块,相当于二分,三分,四分,···,k分。bug出现在其中某一块,再对这块进行划分。答案要求最坏时间,那么划分块中最长的块作为bug出现的
2018-02-24 16:06:50
327
原创 数论模板
扩展欧几里得:LL extgcd(LL a,LL b,LL &x,LL &y){ if(b==0) { x=1,y=0; return a; } LL g=extgcd(b,a%b,y,x); y-=(a/b)*x; return g;}快速幂:LL powmod(LL a,LL b,LL
2018-02-02 17:51:56
228
原创 Codeforces Round #460 (Div. 2) D. Substring(拓扑排序)
题目链接题意:有一个n个点m条边的有向图,每个节点有一个字母,路径的权值是路径上相同字母的最大个数。求最大的路径权值。思路:因为只有26个字母,所以直接假设其中一个字母为相同字母数最大的字母。枚举每一个字母,通过拓扑排序找到最大权值,取其中的最大值就是答案。当图中存在环时,答案就是无穷大,输出-1;代码:#include<bits/stdc++.h>using namespace std;#de
2018-02-01 13:55:53
230
原创 UVALive - 4856 OmniGravity(哈希+枚举)
题目:传送门思路:题意是改变重力方向,四个方块移动的所有状态数量。就是简单的枚举,但是方块的移动以及状态的判断和存储比较繁琐。下面是代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<string>#include<vector>#include<map>#include<set>
2017-09-09 10:39:42
247
原创 AtCoder Grand Contest 019 C - Fountain Walk (LIS)
题目:传送门思路:想要走最短距离,肯定是两点之间的曼哈顿距离最短,并且走过最多的喷泉。因为是最短,所以只能往终点方向移动,求一下起点到终点之间喷泉y坐标的最大单调序列,就能知道最多经过多少喷泉。有一种特殊情况,就是起点到终点的每一行或者每一列都有可走的喷泉(如下图),这样就要多算1/4个圆周。 代码如下:#include<iostream>#include<cstdio>#include<cs
2017-08-27 11:24:05
1206
原创 UVALive 6042 Bee Tower (dp)
题目:传送门思路:题目要求能从地面开始跳到最高的塔,在满足这个条件的前提下移动塔,并求出移动塔的最小花费。那么先找到最高的塔,然后向左右两边遍历,看看是否能到达地面,然后用dp求解最小移动花费。#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<map>#inc
2017-08-26 12:01:13
286
原创 UVALive 7525 - Laser Game(最短路)
题目:传送门思路:主要就是难在模型转换,只要看破,这道题就是很简单的最短路。s点t点以及每束光线的源点建立边,边的权值就是穿过这条边的光束数量。之后就是spfa跑一下s到t的最短路。在判断线段和射线相交的时候卡了很久。。。之前用一般式,连案例都跑不出,后来才想到斜率不存在的时候没有判断╮(╯▽╰)╭,然后直接换了参数方程写就不用判断斜率了。下面是代码:#include<iostream>#incl
2017-08-23 01:40:08
218
原创 HDU6165 FFF at Valentine(并查集+tarjan缩点+拓扑排序)
题目: <—传送门思路:刚开始用bfs,dfs暴搜T了n发,然后换了个思路用拓扑排序做然后又wa了n发。。。看了官方题解才想到思路有漏洞,顺便学了新姿势缩点。主要是判断两个点之间是否有路径,如果拓扑排序当前层存在两个及以上入度为0的点,那么这些点一定不存在通路。直接拓扑的话会碰到强联通子图,所以要把强联通子图都缩成一个点,然后新建一张图,跑一遍拓扑排序判断一下,就能得出答案。多加了一个并查集判断给
2017-08-23 00:02:38
938
原创 51nod 1013 3的幂的和
题目:传送门思路:求这样一个公式3^0 + 3^1 +…+ 3^(N) mod 1000000007,简单的计算可以得出f(n)=f(n-1)*3+1。这个递推公式可以用矩阵来做,然后用快速幂得出答案。构造这样一个矩阵∣∣∣3101∣∣∣\left| \begin{array}{ccc}3 & 0 \\1 & 1 \end{array} \right| ,答案在矩阵的左下角。当N=0时:∣∣∣
2017-07-23 15:21:48
261
原创 51nod 1459 迷宫游戏(最短路)
题目:传送门思路:求最少时间前提下最大分数,就是在时间相同的时候取积分最大的。在求最短路的时候,加一个maxw记录最大积分,只有当最短路更新时或者最短路相同积分较大时更新最大积分。下面是代码:#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<vector>#include<algorithm
2017-07-23 10:56:13
226
原创 Stoer-Wagner算法(最小割集)
算法步骤: 设最小割cut=INF, 任选一个点s到集合A中, 定义W(A, p)为A中的所有点到A外一点p的权总和. 对刚才选定的s, 更新W(A,p)(该值递增). 选出A外一点p, 且W(A,p)最大的作为新的s, 若A!=G(V), 则继续2. 把最后进入A的两点记为s和t, 用W(A,t)更新cut. 合并st,即新建顶点u, 边权w(u, v)=w(s, v)+
2017-07-21 17:16:45
1825
原创 Dinic模板(最大流最小割)
#include<iostream>#include<cstdio>#include<cstring>#include<vector>#include<queue>#include<algorithm>#define N 5005#define LL long long#define MAXLL 0x3f3f3f3f3f3f3f3fusing namespace std;struc
2017-07-21 14:08:31
330
原创 2017金马五校赛 M.风力观测(线段树)
题目传送门思路:闲来无事补补题,看到这道题貌似是线段树,感觉自己能做出来,在打完初代代码加上无数遍的debug之后,终于让我过了 这题的主要难点在求历史风力最大绝对值,所以要把风力变化的最大值(正方向最大值)和最小值(负方向最大值)记录下来(下面都以最大值最小值来解释)。这里直接单点更新应该是会超时的(我也没试过,不过这种成段更新的,应该是不能这样处理),所以要延迟更新。我这里用lazy来记录
2017-07-12 23:20:12
292
原创 哈夫曼编码的一个实际应用(压缩与解压)
在课堂上,我们学习了哈夫曼编码的原理和实现方法,上实验课时也动手实现过,后来我们又追加介绍了哈夫曼编码的实际压缩和解压缩的实现方法,并且在课堂上也演示了,但当时我们却忽略了一个环节,那就是实际文件存储时,二进制是比特位,而存储的单位一般是字节,显示时又是按照十六进制的。现在给你一个由字典里的字符组成的原文,用哈夫曼方法把该原文压缩成十六进制码。 Input
2017-07-12 17:06:26
10901
1
原创 2017金马五校赛 F.A序列(LIS)
题目传送门思路:求A序列(先是单调递增然后单调递减),相当于求当前位置的最长递增子序列和反方向的最长递增子序列,取其中小的乘以2减1就是最长的A序列。就是求两次LIS问题,然后遍历找最大A序列。下面是代码:#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<stack>#include<al
2017-07-12 11:05:14
365
原创 2017金马五校赛 K.购买装备(二分)
题目传送门思路:题目要求在最多装备的基础上属性值最小值要最大,典型的求最大化最小值问题。这里求最多装备数量是简单的,接着就是二分答案求最大化最小属性值。在这mark了一下,可以去看看这篇文章传送门关于提高cin/cout的效率 分别是scanf/加速后的cin/普通cin,效果还是挺明显的。下面是代码:#include<iostream>#include<cstdio>#include<c
2017-07-11 23:14:44
303
原创 勾股数(数论)
最近好久没有写博客了╮(╯_╰)╭,堆积了一堆题,打cf之前没事做就写一下博客\(≧▽≦)/(主要是因为懒癌晚期( ̄△ ̄;))题目: 勾股定理是我们中华名族的骄傲,可惜在很多书上都不是这样命名的。今天我们来算算勾股数,也就是说给定一个正整数N,找出所有小于N的三个正整数a,b,c,满足:a*a+b*b=c*c,且a<=b< c以及a,b,c三者的最大公约数为1。 Input 本
2017-07-11 22:49:59
1630
原创 找有最多个约数的数(数论)
题目: 一个数的素数因子分解是数论里面的基本问题,我们在课堂上专门讨论过这样的问题,大家也做过实验。不过今天我们要讨论的问题更加简单,只讨论某一个数的约数,假定给你任意一个数,让你找出这个数的所有约数,如6,它有1、2、3、6一共4个约数,显然这是一个非常简单的问题,但我们今天要稍微变化一下,我们请你在一定范围内找出约数最多的那个数,有点麻烦的是这个数的数值本身可能不算小。 Input
2017-07-11 22:24:13
2550
原创 POJ 3190 Stall Reservations (贪心+优先队列)
题目链接:http://poj.org/problem?id=3190题目大意:这里有N只 (1 <= N <= 50,000) 挑剔的奶牛! 他们如此挑剔以致于必须在[A,B ]的时间内产奶(1 <= A <= B <= 1,000,000)当然, FJ必须为他们创造一个决定挤奶时间的系统.当然,没有牛想与其他奶牛分享这一时光 帮助FJ做以下事: 使每只牛都有专属时间的最小牛棚数 每只牛在哪个
2017-07-03 23:33:06
340
原创 Codeforces Round #422 (Div. 2) D. My pretty girl Noora(数论)
题目链接:http://codeforces.com/contest/822/problem/D题目大意:大学选美大赛有n个候选人,将进行分组评选,每组人数要相同。f(n)被定义为n个候选人最小的比较次数,比如n=2最小比较次数是1,n=3最小比较次数是3(三个人只能放在一组,所以比较次数为3*2/2),n=4最小次数为3(先是两两比较,然后胜者再进行比较,选出冠军,所以比较次数为2+1)·····
2017-07-03 05:06:49
378
原创 隐匿行踪(最短路)
题目 在数码世界的某次战争中,年轻的狮子兽收到了一封密函,密函中指出需要让他从当前坐标赶往另一个坐标去狙击敌人的精英部队。但是狮子兽知道,整个战场都有可能被敌方的飞行兽从上往下侦查到,因此需要注意隐匿自己的行踪。 狮子兽虽然年轻,但他对战场非常了解,他知道在战场上存在N个无法被飞行兽侦查到的浮空圆盘,只要在浮空圆盘内部(包括圆盘边界,下同)就不会被飞行兽侦查到(浮空圆盘可能重叠)。
2017-07-03 00:02:07
528
原创 POJ3009 Curling 2.0(DFS)
题目链接:http://poj.org/problem?id=3009题目大意:一块石头在冰面上滑行,冰面上有一些障碍物,只有遇到障碍物的时候才会停止,并且击碎障碍物,击碎之后就可以在上面滑行。如果超出边界,那么游戏结束。当石头贴着障碍物时,石头将不能向障碍物的方向滑行。最后求从出发点到目标点的最小移动次数,超出10次就当做无法完成。思路:DFS,刚开始没有判出界wa了一次。。。下面是代码:#inc
2017-07-02 23:43:32
261
原创 马农???(穷举+哈希)
算法课上的一道作业。题目 在观看完战马检阅之后,来自大草原的两兄弟决心成为超级”马农”,专门饲养战马。兄弟两回到草原,将可以养马的区域,分为N*N的单位面积的正方形,并实地进行考察,归纳出了每个单位面积可以养马所获得的收益。接下来就要开始规划他们各自的马场了。首先,两人的马场都必须是矩形区域。同时,为了方便两人互相照应,也为了防止马匹互相走散,规定两个马场的矩形区域相邻,且只有一个交点。最后,互
2017-07-02 22:32:39
1169
原创 POJ1979 Red and Black(DFS)
题目地址:http://poj.org/problem?id=1979思路:DFS,暴力搜,把搜过的标记一下就行了。下面是代码:#include<iostream>#include<cstring>#include<algorithm>using namespace std;int w,h,ans;char map[25][25];int dir[4][2]={1,0,-1,0,0,1,0
2017-07-02 21:45:23
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人