自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mathon

你若是天才,我便是疯子

  • 博客(25)
  • 收藏
  • 关注

原创 斜率优化dp小结

单调队列优化在写斜率优化之前,我们来回顾一下单调队列优化的dp 1. 对于如下形式的dp方程 dp[i]=min{dp[j]+f(j)}(0<j<i)dp[i] = min\{dp[j] + f(j)\} (0 < j < i) 我们直接用一个变量维护(0, i)中dp[j] + f(j)的最小值即可2.对于如下形式的dp方程 dp[i]=min{dp[j]+f(j)}(i−m<j<i)dp

2016-05-10 21:02:45 8719 1

原创 约瑟夫环问题

约瑟夫环问题问题描述: n个人围成一个圆圈依次编号为0,1,…,n-1,从第一个人开始,依次报数1, 2,…,k-1,报到k的人退出,从退出的下一个人开始继续从1报数,仍然报到k的人退出,问最后留下的人是谁。朴素解法:这是一个c语言入门题,我们可以用数组或者链表来模拟整个过程得到最终结果。但是这样复杂度为O(n^2),当n较大时没法算出结果。数学解法:先来模拟一下过程,当n = 8,k = 3

2016-03-13 12:33:00 651

原创 SOJ 3711 Mountain Road

SOJ3711 题意:这件题意的有点坑。有一条单向道,依次有车到达路的两边,同一方向的车经过同一个地点的时间间隔不能少于10s,不同方向的车,必须等到道路没车才能通过。并且同一个方向的车不能改变车的顺序。之所以说题意有点坑是因为题目中有这样一句话”provided it is not slowed down by other cars in front“,如果把这句话理解为每辆车只能匀速通过会出现

2015-11-06 15:40:00 410

原创 SOJ 2142 Cow Exhibition

题意:有N头牛(0<N≤100)(0<N\leq100),每头牛有两个属性smartness(Si)和funness(Fi),现在需要从这N头牛中选出一部分牛,使得这些牛的smartness之和和funness之和最大,并且他们的smartness之和 以及 funness之和不能为负值. 输出最大的 smartness之和 + funness之和. 分析:设每头牛的Ai = Si + Fi, 如

2015-11-06 14:28:26 440

原创 SOJ 2142 Cow Exhibition

题意:有N头牛(0<N≤100)(0<N\leq100),每头牛有两个属性smartness(Si)和funness(Fi),现在需要从这N头牛中选出一部分牛,使得这些牛的smartness之和和funness之和最大,并且他们的smartness之和 以及 funness之和不能为负值. 输出最大的 smartness之和 + funness之和. 分析:设每头牛的Ai = Si + Fi, 如

2015-11-06 14:28:07 333

原创 SOJ 1685 Chopsticks

题意:有N支筷子,要求其中选出M套筷子,每一套筷子有A,B,C三支,并满足A<=B<=C,并称(A−B)2(A-B)^2为每套筷子的’badness’,现在要求这M套筷子的’badness’总和最少,求最少的总和是多少.分析:现在我们先不考虑C,我们只考虑每套筷子只有两支,并使得’badness’总和最少应该满足什么条件, 现在我们假设有a1,a2,a3,a4四支筷子,并且a1<=a2<=a3<=a

2015-11-03 11:24:25 566

原创 SOJ 2505 The Country Fair

题意: John 去参加国家展览,每个展台i在P[i]时刻都会有一个抽奖活动,从展台i走到展台j需要花费T[i][j]的时间,John在时刻0在1号站台,john想尽量多的参加抽奖活动,问他最多可以参加多少个抽奖活动.分析:这道题可以想成John从s号展台出发,然后最后走到e号展台,使其中路线当中抽奖过的展台越多越好.这样可以转化为一个最短路问题,考虑这样建图,如果John在i号展台抽奖,那么他必须

2015-11-03 10:41:47 323

原创 SOJ 2113 数字游戏

题意:丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你所得的k最大或者最小。 例如,对于下面这圈数字(n=4,m=2): 当要求最小值时,((2-1) m

2015-11-03 10:20:11 456

原创 Codeforces 592D Super M

题意:给出一颗节点数为n的树,其中有m个点必须要访问到,起点可以任意,每一次只能从当前点走到相邻点,每个点可以重复走,每走一步需要花费一个单位的时间,求把m个点走完最少需要花费的时间,并使得起点的编号最小. 分析:这道题比赛的时候并没有一点思路,赛后看了官方的题解才知道怎样做,代码写的很挫,没想到wa了一发改了一个小地方后直接AC,还是有点小激动. 1.根据观察可以发现,起点一定是m个点中的一个

2015-11-01 21:16:25 581

原创 Codeforces 590B Chip 'n Dale Rescue Rangers

题意: 一艘飞船相对空气的最大速度是V,一开始风速是F⃗ 1\vec F_1(x1,y1), T秒后风速变为F⃗ 2\vec F_2(x2, y2),求从s点(a1,b1)到e点(a2,b2)的最短时间.输入保证飞船相对空气的最大速度大于风速. 分析: 这道题很巧妙的利用了向量的性质,当最短时间t≤Tt \leq T的时候很明显可以直接计算出答案,现在考虑t>Tt > T的时候, 设飞船前T

2015-10-27 23:51:11 491

原创 SOJ 4438 Censor (字符串,kmp,hash,经典)

题意:两个字符串w, p。 执行以下操作,1.如果p中含有w,将第一个遇到的w删除,剩下的连接起来。2.如果p中还有w重复1,否则输出处理后的字符串。思路:可以用一个栈来处理这个问题,其中匹配可以采用kmp算法,也可以用hash。代码://kmp#include <bits/stdc++.h>using namespace std;const int maxn = 5000000 + 5

2015-09-10 15:14:58 691

原创 Codeforces 156c Cipher

题意:给一个字符串s,有两种操作,对于1<=p<|s|,1.s[p]++, s[p+1]–2.s[p]–,s[p+1]++。如果进行操作后 s[p]或者s[p+1]不为小写字母,则操作非法。可以进行无数次这样的操作,通过这两个操作可以变化出多少种不同的字符串。思路:可以发现无论进行多少次这样的操作,字符串s每一位的ascii码值之和都不会改变,并且对于任意两个长度相同并且每一位的ascii码值之和

2015-09-09 19:42:20 884

原创 Codeforces 156b Suspects

题意: 询问n个嫌疑人,每个人有两种回答,+i和-i, +i表示第i个人是罪犯,-i表示第i个人不是罪犯,每个人能且只能回答一次,已知有m个人说的是实话,问第i个人说的是实话还是谎话,或者不能确定.思路: 这个题其实重点就是根据有m个人说实话去判断谁是罪犯. 朴素的思路就是假设第i个人是罪犯,然后扫描所有人的回答,检测是否有m个人在说实话.但是这样复杂度是O(n2)O(n^2). 接下来就是如果去

2015-09-08 22:46:12 723

原创 Codeforces 156D Clues (图论, 并查集, 卡特兰数)

题意:给出一个森林,问用最少的边将其连接成一颗树有多少种连接方式.思路:这道题是一个推导公式的题,涉及到树的生成数计数的问题,但是我现在仍然不知道题目中的n^p是怎么用得到的,先挖个坑在这儿,以后明白了再来填坑.代码:#include <bits/stdc++.h>using namespace std;const int maxn = 100000 + 5;int par[maxn];

2015-09-07 19:57:43 793

原创 Codeforces 482C Game with strings

题意:给你n个长度为l的字符串,1<=n<=501<=n<=50,1<=l<=201<=l<=20,选出一个字符串,每一次操作你可以知道这个字符串某个位置的字符,问多少次可以操作可以唯一确定这个字符串是哪个。求出对于所有字符串,可以唯一确定一个字符串的操作数的期望。思路:这是一个概率题,概率题最重要的就是不重复不遗漏。因为这里l的长度只有20,所以可以考虑枚举每一次猜的哪个位置。比如对于abc,a

2015-09-07 16:24:32 639

原创 Codeforces 487b Strip, dp + RMQ(经典)

题意:有一个长度为n的数列,问是否能把这个数列切成连续的几段,使得 1.每一段长度大于等于l;2.每一段中的最大值和最小值之差小于等于s。如果能输出能切成的最小的段数,不能输出-1。思路:非常经典的dp题目,假设dp[i]表示a1...aia_1...a_i这个序列能切成的最小段数,如果不能dp[i] = INF。现在问题是 1.如何找到状态转移方程。考虑如果l = 3, s = 1,如果ai

2015-09-06 10:21:05 509

原创 Codeforces 460d Littel victor and set

题意:给出一个范围[l,r],以及一个数k,让从[l,r]这个区间中选不超过k个数a1, a2, a3…an,使f = a1^a2^a3…^an最小。思路:就是一个找规律的数学题。可以先从两个的入手,然后再从4个的入手,最难得其实是3个数的情况,但是仔细分析不难观察到其规律,代码已经很能说明思路了就不再反复写了。代码:/*************************************

2015-09-04 16:15:07 367

原创 Codeforces 460C Present

题意:有n多初始高度不同的花,每次浇水可以浇相邻的w朵花,每一次浇水花都会长高一个单位,可以浇m次,问怎样浇水才能使最低的那朵花最高。最高是多少。思路:很显然的最大化最小值问题。仔细观察可以发现并没有一个可以直接算出答案的思路,但是考虑到如果如果最低能够达到H的高度,那么比H低的高度也肯定都可以满足,如果不能够达到H的高度,比H高的高度也就不能达到,所以如果给定一个高度H,可以很方便的判断是否所有

2015-09-04 13:53:52 1242

原创 HDU5418

HDU5418 Victor and World题意:很裸的旅行家问题思路:旅行家问题裸模板代码:这里贴三分代码,一份记忆化搜索,一份dp,一份dp的小优化.\\记忆化搜索#include <bits/stdc++.h>using namespace std;typedef long long LL;const int INF = 0x3f3f3f3f;const int maxn

2015-08-28 11:11:34 526

原创 Codeforces 567E President and Roads

@(题解)[Codeforces|Dijkstra|最短路|最短路径数|好题|567E]Codeforces 567E President and Roads题意:给出一个有向图,给出起点s,和终点t,总是从s沿着最短路径走到t,对于每一条边询问是否一定会经过这条边,如果是输出yes。如果不是,能否通过把减少这条边的权值(但不能减少到0)使这条边成为沿着最短路走一定会经过的边。如果能,输出需要

2015-08-13 20:09:29 447

原创 BestCoder Round 50 (div 2)

Distribution moneyRunThe mook jong1001 Distribution money题意:给出一串数字,让你找出其中出现次数超过一半的数,找到则输出它,没有则输出-1思路:一开始看到题,还以为是曾经做过的用栈来解决的那个问题。但是此题不同的是,不能保证一定存在超过一半的数,所以不能直接用那个思路。还有此题的数字个数比较少,并且每个数字的范围是0-10000,所以

2015-08-09 11:11:37 495

原创 Dining (POJ No.3281) 网络流经典题

题意:有N头牛,F种食物,D种饮料,每头牛都有自己喜欢的食物和饮料,每种饮料和食物只能分配给一头牛。问:最多有多少头牛能同时得到自己喜欢的食物和饮料。思路:挑战上面的例题,真的很经典,虽然知道是网络流不看书上给的思路怎么也想不到这道题应该这样建图。最开始我的想法是,给牛和喜欢的食物建立一条容量为1的边,同时和喜欢的饮料建立一条容量为1的边,s(源点)和每一种食物建立一条容量为1的边,每一种饮料和t

2015-08-07 21:39:29 1034 1

原创 Codeforces Round #Pi (Div. 2)_D. One-Dimensional Battle Ships

题意:抽象的概括就是,给出一个1*n的表格,然后依次占用其中一些格子,有k个1 * a的方块,依次给出占用的格子位置,问什么时候这个表格不能够放下这k个方块(要求方块两两之间不能重叠,不能相邻,不能放在被占用的格子上)。思路:思路真的很简单,就是用一个set维护占用的格子的位置,然后新占用一个格子就计算出原来这个区域能放下的方块数和占用后新生成的两个区域能够放下的方块数,计算出总的能够放下方块数的

2015-08-06 15:02:33 455

原创 网络流&二分图学习总结

网路流最大流问题:给出一个联通的不带边权的有向图,给出源点s和汇点t,将边当作一条有容量限制(单位时间内只能流固定容量的水)的带方向(水流只能从向边的方向流动)的水管。求解单位时间内从s到t最多能流动多少水量。Ford-Fulkerson算法:思路: Ford-Fulkerson算法是一种贪心算法,该算法的核心在于当流量f经过边e的时候,同时建立e的一条容量为f的反向边,然后利用满足f(e) <

2015-08-04 22:19:11 630

原创 POJ1087(网络流,二分图匹配)

题意:一间房间里面有多重插头,每种类型的插头只有一个,每种设备对应一个插头,部分设备对应的插头没有,但给出了一些不限制数量的插头转换器,求出不能工作的设备的最小数量。思路:ac的第一道二分图匹配的题。二分图匹配就是特殊的网络流问题,所以用网络流的模板就可以轻松解决。虽然属于入门的网络流,因为构图问题仍然wa掉了两次,还需多练习,代码依然写的太渣。代码:#include <iostream>#

2015-08-01 09:10:06 523

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除