08 2017 档案

摘要:Noip2016 day2t3 蚯蚓 蚯蚓在noip好像是个神宠。这次是被切了,开三个队列,q[3][1000010],q[0]代表没有被切的,q[1]表示切的p部分,q[2]表示(1-p)部分,q[1],q[2]能够保证单调不增,q[0]从大到小排序,每次比队首即可,这里用懒惰标记的思想,用add 阅读全文
posted @ 2017-08-25 10:18 WeiAR 阅读(113) 评论(0) 推荐(0) 编辑
摘要:P2084 进制转换 注意处理末尾的0,否则会多输出+ 阅读全文
posted @ 2017-08-24 08:55 WeiAR 阅读(106) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2017-08-23 19:43 WeiAR 阅读(1) 评论(0) 推荐(0) 编辑
摘要:矩阵乘法 1 3 1 1 = 10+4+14+6=34 2 4 * 3 1 阅读全文
posted @ 2017-08-23 17:30 WeiAR 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-08-23 15:41 WeiAR 阅读(126) 评论(0) 推荐(0) 编辑
摘要:P1649 [USACO07OCT]障碍路线Obstacle Course 裸的dfs,今天学了一个新招,就是在过程中进行最优性减枝。 阅读全文
posted @ 2017-08-23 15:38 WeiAR 阅读(352) 评论(0) 推荐(0) 编辑
摘要:P1113 杂务 这道题我爆0啦,有点dp的小味道,显然,一个工程的完成时间由最慢的人决定(可以同时进行),m[i]代表完成杂物i所需的最少时间,m[i]=max(m[i],m[j]+v[i]),j是需要在i之前完成的杂物,最慢的也要完成,所以要取最大。虽然题目中说准备工作只可能在杂务1..k-1中 阅读全文
posted @ 2017-08-23 14:47 WeiAR 阅读(216) 评论(0) 推荐(0) 编辑
摘要:洛谷P2241 统计方形(数据加强版) 我的做法是在求矩形时(包括正方形),用的是长从1~m,宽从1~n枚举的,但是数学方法往往能起到四两拨千斤的效果,其实矩形的个数就是Cn+22 * Cm+22.因为确定一个矩形只需要确定它的两个端点就可以了,为啥要n+1,m+1呢?因为矩形边长可以为1,就是另一 阅读全文
posted @ 2017-08-23 08:40 WeiAR 阅读(420) 评论(0) 推荐(0) 编辑
摘要:洛谷P1372 又是毕业季I 对于答案a,k*a是最接近n的,即a=n/k(下取整),所以直接输n/k即可。 我的方法是 二分查找 n/k真的没有想到唉。 我找的最大公约数,如果当前的mid对应的个数比k大,就往大了找,否则往小里找,对于边界问题,要加一些特判。 阅读全文
posted @ 2017-08-23 08:28 WeiAR 阅读(100) 评论(0) 推荐(0) 编辑
摘要:P1887 乘积最大3 基本不等式,那m个数要尽可能相等,若除不尽,剩的均匀分到m上即可。 阅读全文
posted @ 2017-08-22 17:12 WeiAR 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目:跳跃版图 题目描述 有一个 n×n 的格子,每个格子中有一个非负整数。你的目标是从左上角跳到右下角,每步只能向右或向下跳。格子中的数代表从该格开始跳跃的前进步数,如果某次跳跃会跃出格子界限则该跳跃是禁止的。注意 0 是一个绝对终点,因为从这里无法再移动。 你的任务是统计有多少种合法路径。上图 阅读全文
posted @ 2017-08-22 16:30 WeiAR 阅读(159) 评论(0) 推荐(0) 编辑
摘要:P1769 淘汰赛制_NOI导刊2010提高(01) 我进行了分组,1组和2组打,3组和4组打, 举个例子,在8进4的比赛中6在2组,和1组的打,1胜出的概率*6打败1的概率,求和之后,再*当前6从上一轮胜出的概率,最后求最大即可。 阅读全文
posted @ 2017-08-22 16:26 WeiAR 阅读(449) 评论(0) 推荐(0) 编辑
摘要:deque双端队列 deque <int>q; q.front(); q.back(); q.push_back(); q.push_front(); 阅读全文
posted @ 2017-08-21 20:50 WeiAR 阅读(111) 评论(0) 推荐(0) 编辑
摘要:P2784 化学1(chem1)- 化学合成 还是spfa,距离数组初始化为-1,松弛操作改为*就好了,一开始老是超时,后来加了一个visit数组就过了,这个重复造成的效率浪费还是蛮大的,以后都要加。 阅读全文
posted @ 2017-08-21 20:42 WeiAR 阅读(199) 评论(0) 推荐(0) 编辑
摘要:对图的新认识 对于任意的一个图,图中所有点的度数之和为边数*2,在图中每走一次,有三种情况 1.奇点数没变(一种是真没变,一种原奇点减少一个,又新添了一个奇点) 2.奇点数增加2 3.奇点数减少2 连通图中奇点个数一定为偶数,证明如下: 我们来模拟建图的过程 1.一开始所有点都是0,显然偶数 2.加 阅读全文
posted @ 2017-08-21 20:37 WeiAR 阅读(127) 评论(0) 推荐(0) 编辑
摘要:洛谷P1146 硬币翻转 一开始做得很好,自己分析了小数据,发现了一些规律,但是我太心急了,没仔细观察和思考,然后看了题解,以后以比赛形式做题,不能看题解,翻n-1次不就是翻1次吗?效果一样的,因为要字典序最小,我们就从前往后翻即可。 阅读全文
posted @ 2017-08-20 22:26 WeiAR 阅读(283) 评论(0) 推荐(0) 编辑
摘要:关于线性筛法 线性是指O(n)内筛掉所有合数,还有一种方法叫埃氏筛法,我先证明埃氏筛法效率低,也就是会有重复。 证明如下: 埃氏筛法的原理是找到一个素数后,它的1~n倍就会被筛掉,任何一个合数都可以被拆成一个质数*另一个数的形式,我们对每一个质数对应的可能的(合)数都枚举了,这就保证了所有可能的合数 阅读全文
posted @ 2017-08-20 21:07 WeiAR 阅读(2122) 评论(0) 推荐(0) 编辑
摘要:Scanf(“%d:%d:%d”,&*,&*,&*) 阅读全文
posted @ 2017-08-20 14:38 WeiAR 阅读(146) 评论(0) 推荐(0) 编辑
摘要:模拟赛记录 8.20 7:30~9:30 数学 入门难度 6道题 300分 8.21 7:40~9:50 图论 普及 6道题 500分 8.22 学长模拟赛 7:40~10:00 提高+ 300分 80分 8.23 图论 普及/提高- 8:40~11:30 300分 180分 8.24 字符串 入门 阅读全文
posted @ 2017-08-20 09:32 WeiAR 阅读(129) 评论(0) 推荐(0) 编辑
摘要:P3414 SAC#1 - 组合数 组合数的性质,求(1<<(n-1))%mod即可。其实要快速幂。 阅读全文
posted @ 2017-08-19 17:21 WeiAR 阅读(111) 评论(0) 推荐(0) 编辑
摘要:洛谷P1832 A+B Problem(再升级) ·给定一个正整数n,求将其分解成若干个素数之和的方案总数。 先说我的垃圾思路,根本没有验证它的正确性就xjb写的,过了垃圾样例,还水了20分,笑哭。。。其实差一点就想到正解了,完全背包,我的思路是把背包的物品缩小到了一种,而正解的物品应该是1~n的所 阅读全文
posted @ 2017-08-19 09:48 WeiAR 阅读(244) 评论(0) 推荐(0) 编辑
摘要:Catalan数 虽然早就听说了catalan数,但是并不真正理解,昨天做了一个出栈次序的题,学了一下,关于卡特兰数,有很多应用,目前我掌握(说是掌握,也是未必)是出栈次序问题,有n个数,h(n)=C2nn-C2nn-1, 到目前为止,出栈数一定要小于等于入栈数,不然没有进来怎么出去,也就是不合法的 阅读全文
posted @ 2017-08-19 08:58 WeiAR 阅读(277) 评论(2) 推荐(0) 编辑
摘要:洛谷P1968 美元汇率 一开始看错题了。。。或者说理解错题意了,额不,我自己都没手推样例,是我太浮躁了,态度不认真,改改改。。。一个裸贪心,如果昨天的马克数大于今天的,就转换一次,就是在昨天将美元换成马克,在今天将马克换成美元,你手里的美元数就会增加。 小技巧:可以将ans乘100,最后再除100 阅读全文
posted @ 2017-08-18 17:07 WeiAR 阅读(270) 评论(0) 推荐(0) 编辑
摘要:洛谷P1802 5倍经验日 简单的背包,因为输了也有经验,所以预处理求和,f[i]+=sum,并在此基础上01背包,c[i]为差值,注意赋值时,i从0开始,背包的声韵体积可以为0. 阅读全文
posted @ 2017-08-18 10:51 WeiAR 阅读(146) 评论(0) 推荐(0) 编辑
摘要:关于二分查找的边界问题 二分查找首先要满足单调性,对于这种方式,l==r,l是第一个大于差找位置的位置,举例, 在1 2 3 4 5中查找3,l==r==4,根据需要输出l或l-1. 阅读全文
posted @ 2017-08-18 10:43 WeiAR 阅读(1057) 评论(0) 推荐(0) 编辑
摘要:codevs线段覆盖5 离散化+二分查找,按右端点排序,f[i]代表1~i的满足不覆盖的最大值,对于第i条线段,要么选,要么不选,所以方程为f[i]=max(f[i-1],f[find(i)]+e[i].v);find(i)是从右往左数第一个与i不相交的线段的下标,ans为f[n]; 阅读全文
posted @ 2017-08-18 10:16 WeiAR 阅读(142) 评论(0) 推荐(0) 编辑
摘要:背包五讲 1. 01背包,一种物品数量只有一个,要么选要么不选,v从后向前保证了只可能选一次。 2. 完全背包,物品的数量不限,v从小到大,就免除了数量的限制。 3 多重背包,给定物品的数量,num,多加一维,i->num,循环num次,满足了数量,记得不要j*w[type],这样就相当于等差数列求 阅读全文
posted @ 2017-08-17 16:01 WeiAR 阅读(162) 评论(0) 推荐(0) 编辑
摘要:关于二进制 二进制是个好东西,二进制多用于位运算中,而且它的这一个特性能让O(n)优化到O(log2n),用1,10,100,1000....进行组合,能组成所有的数字,因为每个数都可以用二进制来表示,比如1010110,就可以用1000000,10000,100,10的组合表示,经典用法,倍增的R 阅读全文
posted @ 2017-08-17 11:07 WeiAR 阅读(191) 评论(0) 推荐(0) 编辑
摘要:对四边形不等式优化dp的理解 四边形不等式适用于优化最小代价子母树问题,即f[i][j]=max/min(f[i][k-1]+f[k][j])+w[i][j],类似枚举中间点的dp问题,典型例题石子归并; 如果w函数满足区间包含的单调性和四边形不等式,那么函数f也满足四边形不等式,如果f满足四边形不 阅读全文
posted @ 2017-08-17 10:31 WeiAR 阅读(269) 评论(0) 推荐(0) 编辑
摘要:dp看似像递推,但是有一点不一样,虽然都是先处理完子过程并由此退出最终的,但是dp满足任何过程的最优性,dp用子过程最优来保证最终结果的最优性。 阅读全文
posted @ 2017-08-16 19:42 WeiAR 阅读(119) 评论(0) 推荐(0) 编辑
摘要:洛谷P1018 乘积最大 当时看到这个题很懵逼,暴力不好打,也不是很有效,dp也没思路。。然后看了题解。。f[i][j]表示在序列中前i个数中加入j个乘号的最大乘积,要在序列中枚举从j-1到i的第j个乘号所在的位置,这里要前缀和优化,答案就是f[n][k]。 阅读全文
posted @ 2017-08-16 19:38 WeiAR 阅读(228) 评论(0) 推荐(0) 编辑
摘要:今天做dp时,第一遍好像是这么回事,打了程序之后也A了,但不一定真的明白,比如它是最优解,那它比其他方法好在哪里,或者它是如何满足题目的条件的,一定不可似懂非懂,要彻底弄会,然后多练习,加强理解。 阅读全文
posted @ 2017-08-16 18:46 WeiAR 阅读(204) 评论(0) 推荐(0) 编辑
摘要:洛谷1002 过河卒 在满足能走的条件下,f[i][j]表示从左上角走到(i,j)的方案数,方程为f[i][j]=f[i-1][j]+f[i][j-1]. 阅读全文
posted @ 2017-08-16 17:03 WeiAR 阅读(134) 评论(0) 推荐(0) 编辑
摘要:Vector,动态数组,很像优化之后的二维数组 V[1] 1 2 3 4 V[2] 52 5 5 1 4 1 每个后面都可以再push_back(); Vector<int>v[1000]; 阅读全文
posted @ 2017-08-15 17:39 WeiAR 阅读(85) 评论(0) 推荐(0) 编辑
摘要:洛谷P1351 联合权值 数学方法+枚举中间点,因为两两之间都要乘,故等价于(a+b+c)^2-a^2-b^2-c^2.这里用vector存的相连的点。 阅读全文
posted @ 2017-08-15 17:35 WeiAR 阅读(98) 评论(0) 推荐(0) 编辑
摘要:洛谷P2420 让我们异或吧 先bfs求根节点到每个点的路径异或值,因为a^c^b^c=a^b,所以输出d[x]^d[y]即可。 阅读全文
posted @ 2017-08-15 15:50 WeiAR 阅读(113) 评论(0) 推荐(0) 编辑
摘要:洛谷P2024 食物链 经典并查集,开3倍并查集,x,x+n表示x吃,x+2*n表示吃x,冲突就ans+1,否则不断更新,主要更新捕食关系时要满足环形。 阅读全文
posted @ 2017-08-15 11:09 WeiAR 阅读(260) 评论(0) 推荐(0) 编辑
摘要:T3.寻找克尔苏加德(search.cpp/pas/in/out) 四人小分队终于来到了纳克萨玛斯最后一层,在这里,克尔苏加德的的王座上,留着……一张纸条。正当铜须要拿起纸条,突然,一道淡蓝色光芒飘入了他的眼中…… 我是克尔苏加德,人类,来到我的城堡就要接受我的审判,来找我吧,卑微的蝼蚁!铜须如是说 阅读全文
posted @ 2017-08-15 11:01 WeiAR 阅读(201) 评论(0) 推荐(0) 编辑
摘要:T2.回文密码(password.cpp/pas/in/out) 时间限制:1s 空间限制:256MB 伊利斯.逐星:多亏了你的相助,我们通过了第一层。那些蜘蛛真是另令人作呕。现在,我们来到了城堡二层,但是……恐怕又要麻烦你了。 布莱恩.铜须:你猜猜我们看到了什么?乌瑟尔!我的好朋友,他的尸体就这么 阅读全文
posted @ 2017-08-15 10:57 WeiAR 阅读(1318) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> #include <cstring> #define inf 2147483647 #define N 100 阅读全文
posted @ 2017-08-14 22:33 WeiAR 阅读(156) 评论(0) 推荐(0) 编辑
摘要:关于函数 y=xx的分析: 由图像得,y在负无穷大到0图像处处不连续,故y的定义域为(0,正无穷大); 故该函数不就是y=e^(lnxx)吗? 1.定义域:我们变形一下,y=e^(xlnx),显然是0到正无穷。 2.导函数:复合函数求导法则即可,在此不加赘述。 阅读全文
posted @ 2017-08-13 21:38 WeiAR 阅读(3515) 评论(0) 推荐(0) 编辑
摘要:#include<bits.stdc++.h>using namespace std;int main(){ srand((unsigned)time(NULL)); rand()%100+1; return 0;} 阅读全文
posted @ 2017-08-12 11:31 WeiAR 阅读(178) 评论(0) 推荐(0) 编辑
摘要:@echo off:loop*********fc **.out **.out&& goto loop 阅读全文
posted @ 2017-08-12 11:29 WeiAR 阅读(110) 评论(0) 推荐(0) 编辑
摘要:Cube Stack 有一点lazy思想,设三个数组cnt代表它以下的有多少个元素(直到栈底),top[x]代表x所在栈的栈顶元素,dad[x]代表x所在栈的栈底元素,先寻找父亲,然后递归更新累加cnt,找父亲的时候更新cnt,对于一个元素,再用之前一定要找父亲,这样才会是真的cnt。 阅读全文
posted @ 2017-08-12 11:04 WeiAR 阅读(169) 评论(0) 推荐(0) 编辑
摘要:Permutation 日照夏令营D2T2,赛场上40分,因为当时用的阶乘把康托展开算出来了,由于n很大,后6个点爆了。其实不用算,比如a是第x个排列,b是第y个排列,而想x、y能拆成rank数组,x+y实际上就是它们对应位上rank数组的值相加,因为最后要求的是排列,所以根本用不到阶乘。这里用的是 阅读全文
posted @ 2017-08-12 07:56 WeiAR 阅读(241) 评论(0) 推荐(0) 编辑
摘要:一笔画问题 相关概念简介: 奇点:与它相连的边的个数为奇数的点;偶点同理。 1.如果图中没有奇点,则从任意点开始走,最后也一定会回到该点; 2.如果图中有2个奇点,则从两个奇点中任意点开始走,最后一定会回到另一个奇点; 3.其他情况一定不能完成一笔画问题 证明: 对于图中经过点,每经过一次与它相连的 阅读全文
posted @ 2017-08-11 10:53 WeiAR 阅读(348) 评论(0) 推荐(0) 编辑
摘要:康托展开 简介:对于给定的一个排列,求它是第几个,比如54321是n=5时的第120个。(对于不是1~n的排列可以离散化理解) 做法: ans=a[n]*(n-1)!+a[n-1]*(n-2)!+~~~~a[1]*0!.(a[n]表示在给定的排列中,还没出现的,而且比当前值小的数的个数) 如果说对于 阅读全文
posted @ 2017-08-11 10:41 WeiAR 阅读(164) 评论(0) 推荐(0) 编辑
摘要:待完成题目: P1040 加分二叉树,次短路,数论列表,图论列表,动态规划列表。 P1347 排序 P2671 求和 2.电路稳定性(cir.pas/c/cpp) 【问题描述】 有一个电路,上面有n个元件。已知i损坏耳断开的概率是pi(i=1…n,0≤pi≤1)。求电路断路的概率。 元件的连接方式十 阅读全文
posted @ 2017-08-11 08:42 WeiAR 阅读(210) 评论(0) 推荐(0) 编辑
摘要:要看清是输出“YES”还是“Yes”,多可惜啊,不要惯性思维,还有数组要开大一点,如果出现迷负数或是-1要看一看是不是数组越界,开大一点,唉,一定不要出现a[-1]的笑话了。。。。 阅读全文
posted @ 2017-08-10 21:12 WeiAR 阅读(75) 评论(0) 推荐(0) 编辑
摘要:今天的营救这道题用了三种解法,今后也不再只追求A,还要各种A。 阅读全文
posted @ 2017-08-10 16:44 WeiAR 阅读(112) 评论(0) 推荐(0) 编辑
摘要:洛谷P1396 营救 多种解法: 1.spfa,只是松弛操作时更新的是路径上最大值的最小值;(最慢。。24ms) 2.Kruskal 从小到大加边,直到getfather(s)==getfather(t),然后输出当前边权;(最快。。4ms) 3.Bfs+二分答案,二分出来mid,然后用边权小于mi 阅读全文
posted @ 2017-08-10 16:36 WeiAR 阅读(163) 评论(0) 推荐(0) 编辑
摘要:洛谷P1455 搭配购买 把需要一起购买的物品放到并查集里,每一个并查集的标志是根节点,把v和w都累加,然后对根节点做01背包。 阅读全文
posted @ 2017-08-10 11:56 WeiAR 阅读(180) 评论(0) 推荐(0) 编辑
摘要:现在做题还是有侥幸心理,只过了样例就交,以后要写一组小数据试试,甚至写个暴力对拍。 阅读全文
posted @ 2017-08-09 17:59 WeiAR 阅读(86) 评论(0) 推荐(0) 编辑
摘要:并查集+离散化 阅读全文
posted @ 2017-08-09 09:34 WeiAR 阅读(212) 评论(0) 推荐(0) 编辑
摘要:Kruskal算法证明 易证,对于一个无向加权连通图,总是存在一棵或以上的有限课生成树,而这些生成树中肯定存在至少一棵最小生成树。下面证明Kruskal算法构造的生成树是这些最小生成树中的一棵。 设T为Kruskal算法构造出的生成树,U是G的最小生成树。如果T==U那么证明结束。如果T != U, 阅读全文
posted @ 2017-08-09 09:22 WeiAR 阅读(557) 评论(1) 推荐(0) 编辑
摘要:#include<bits/stdc++.h> using namespace std; int a[10001],b[10001]; int n; int main() { cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; b[i]=a[i]; } sort(b+ 阅读全文
posted @ 2017-08-09 09:17 WeiAR 阅读(126) 评论(0) 推荐(0) 编辑
摘要:日照夏令营D1T3 等式 很简单的一道题,贪心,先处理对的,把它们放到一个并查集里,如果两个数父亲相同而读入的是0,就输出NO,否则YES。这里要离散化。 阅读全文
posted @ 2017-08-09 09:16 WeiAR 阅读(150) 评论(0) 推荐(0) 编辑
摘要:Lemon 评测软件用法(陈国凯手把手教的) MYL学妹提供的软件,感谢。 阅读全文
posted @ 2017-08-08 22:50 WeiAR 阅读(1560) 评论(0) 推荐(0) 编辑
摘要:洛谷P2652 同花顺 这是在2017日照夏令营的D1T2,我认为质量相当高的一道题,第一次在赛场上做的时候爆零了,当时态度不很端正,暴力不想打,想投机取巧骗分,还是不要把希望压在不确定的事情上,有多少分实实在在拿着就拿着,然后能力之外的再尽可能获得更多。言归正传,这个用类似枚举的思路来做,枚举一个 阅读全文
posted @ 2017-08-08 20:03 WeiAR 阅读(258) 评论(0) 推荐(0) 编辑
摘要:洛谷P1747 好奇怪的游戏 马走日翻版,注意方向不要打错,还有就是题目要求最小,要加min。 阅读全文
posted @ 2017-08-08 09:20 WeiAR 阅读(141) 评论(0) 推荐(0) 编辑
摘要:洛谷P1886 滑动窗口这个题与P1440 求m区间内的最小值很像,只要在这个题基础上再另维护一个递减的单调队列就好了. #include <iostream> #include <cstdio> #include <queue> #include <algorithm> #include <cma 阅读全文
posted @ 2017-08-08 07:32 WeiAR 阅读(147) 评论(0) 推荐(0) 编辑
摘要:void Cout(int x) { if(x>9) Cout(x/10); putchar(x%10+'0'); } 阅读全文
posted @ 2017-08-07 16:58 WeiAR 阅读(90) 评论(0) 推荐(0) 编辑
摘要:void Cin(int &x) { char c=getchar();x=0; int y=1; while(c'9') { if(c=='-') y=-1; c=getchar(); } while(c='0')x=x*10+c-'0',c=getchar(); x*=y; } 阅读全文
posted @ 2017-08-07 16:57 WeiAR 阅读(92) 评论(0) 推荐(0) 编辑
摘要:洛谷P1440 求m区间内的最小值 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 以上代表我此时的心情,调了一个小时。。。。只因为顺序,维护一个单调递增队列就好了,这里n很大,输出要优化 阅读全文
posted @ 2017-08-07 16:55 WeiAR 阅读(201) 评论(0) 推荐(0) 编辑
摘要:洛谷P1725 琪露诺 交了15遍,差点砸电脑,我对自己无语了,为什么不好好想,耐下心来。。第一感觉是dp,然后没仔细想,瞎觉得好像不是,然后没管住自己,看了标签,果然是dp,后悔自己为何没好好想想。不过自己写出了转移方程,很好,然后编程的时候没有按方程转移,再次无语。。最后确定答案时,范围卡小了, 阅读全文
posted @ 2017-08-07 14:50 WeiAR 阅读(157) 评论(0) 推荐(0) 编辑
摘要:洛谷P1714 切蛋糕 O(mn)的枚举,按框的长度枚举,A了两个点,TLE了3个。Ans=max(ans,s[i]-s[j]); 然后进行单调队列优化,ans=max(ans,s[i]-min(s[j));i-m<=j<=i-1;用一个单调递增的单调队列来维护s[j]的最小值,每次直接取队首元素就 阅读全文
posted @ 2017-08-07 10:25 WeiAR 阅读(173) 评论(0) 推荐(0) 编辑
摘要:洛谷P1638 逛画展 很经典的一道类似有一个头,一个尾,然后头和尾移动,从前往后扫一遍的题,我以前做过一道类似的,很相似,不过我不记得了,唉,可惜。正解是枚举区间的左右端点,右端点不断移动直到正好框住k种,此时,(r-l)与(j-i)比较,更新l,r,最后i++,直到i==n. 我一开始也没想到这 阅读全文
posted @ 2017-08-07 08:09 WeiAR 阅读(159) 评论(0) 推荐(0) 编辑
摘要:洛谷1025 简单dp f[i][j]表示把数i分成j分的方案数,则最终答案为f[n][k]。把f分为两种状态,第一种为分出来的数中最小值为1,即f[i-1][j-1];另一种为最小值大于一,怎么办呢?可以先在j个位置上放1,再划分,即f[i-j][j],所以转移方程为f[i][j]=f[i-1][ 阅读全文
posted @ 2017-08-05 18:02 WeiAR 阅读(207) 评论(0) 推荐(0) 编辑
摘要:洛谷1091 合唱队列 觉得自己就是个ZZ,打眼一看,没思路,一看数据,n<=100,这不会是大法师吧。。。于是打暴力,快一小时(加上30分钟下课~~哦,下课时和陈国凯聊了一会QQ,%%%学神,mac啊)也没调出来,信心倍挫,然后放弃,看题解,哦cao,是最长上升子序列,然后秒掉了。。。。。。。。。 阅读全文
posted @ 2017-08-05 17:44 WeiAR 阅读(407) 评论(0) 推荐(0) 编辑
摘要://拓扑排序 #include using namespace std; queueq; int n,m; int in[1000]; bool b[1001]; struct node { int n; node *next; }*e[1000]; int main() { cin>>n>>m; node *p; int x; for(int ... 阅读全文
posted @ 2017-08-05 15:12 WeiAR 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-08-05 14:53 WeiAR 阅读(174) 评论(0) 推荐(0) 编辑
摘要:等价表达式 栈的经典题目,开两个栈,一个存符号,一个存数字; 分情况讨论: 1.如果当前读到的运算符优先级小于栈顶,就进行一次运算,直到大于等于; 2.如果读到数字用类似读入优化的方法读入进来; 3.如果当前符号为“(”则直接入栈; 4.如果当前符号为“)”则进行运算直到碰到“(”; 5.小技巧 在 阅读全文
posted @ 2017-08-05 09:59 WeiAR 阅读(546) 评论(0) 推荐(0) 编辑
摘要:void work(){ char c=getchar(); while(c=='\n') c=getchar(); while(c!='\n') { a[++len]=c; c=getchar(); }} 阅读全文
posted @ 2017-08-03 14:53 WeiAR 阅读(112) 评论(0) 推荐(0) 编辑
摘要:2 ->0.5 10 ->0.4 100-> 0.25 1000->0.168 10000->0.1229 100000->0.09592 1000000->0.078598 10000000->0.0664579 100000000->0.0576146 阅读全文
posted @ 2017-08-03 14:10 WeiAR 阅读(834) 评论(0) 推荐(0) 编辑
摘要:这是一个栈的入门题,我用了STL,很懒,不想用数组模拟栈,开了4个栈,也是醉了。 In:表示进来的队列 Out:表示出站的队列 To:模拟进站与出站 还有一个用来掉头(进来的时候) 我来举一个小例子 比如出站序列为 5 4 1 2 3 In 栈底 5 4 3 2 1 Out 3 2 1 4 5 首先 阅读全文
posted @ 2017-08-03 14:05 WeiAR 阅读(172) 评论(0) 推荐(0) 编辑