![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
===基础算法===
文章平均质量分 61
Loi_LXTT
这个作者很懒,什么都没留下…
展开
-
有关归并排序和逆序对
●虽然是一个比较小的简单算法,但是我今天才学会2333可能真的是太垃圾了。。没关系 总结一下: 板子:codevs 1688 求逆序对题面就不写了,数据范围1e5(数字数量和数字大小) 所以要开long long了一开始没开long long然后炸了这样子: 我最想说的,其实是在归并排序时,如何记录答案: 一开始我是这样想的: 对于要合并的有序序列A,B(A是原数列的左区间,B是右区间)如原创 2017-08-17 14:44:40 · 253 阅读 · 0 评论 -
【队内胡策 10.24 T3】洛圣都
题目来源:Codeforce867E(865D) Buy Low Sell High 去题面的传送门 第一反应是一个之前做过的DP,条件稍微改了一下,但是打了半天发现不对。好吧最后还是没有打出水分的DP 正解是贪心 很神奇的做法 首先来说一下做法,维护一个小根堆,从第一天到第n天for一遍,如果这一天的价格小于堆顶元素,直接加入堆。如果大于,ans+=该天的价格与堆顶元素的差,在堆里放入两原创 2017-10-25 11:30:45 · 320 阅读 · 0 评论 -
2017.10.16 队内互测 D4
题目来源: T1:codevs 2913 建筑抢修T2:codevs 1089 侦探推理T3:luogu 2246 T4:luogu 3927ps:T2没有重新做,太恶心了T1: —考试的时候脑子w了,瞪它了一个小时死活思考不下去,做完后面回来看这道题的时候,直接看不下去了。。最后随便贪心了一下结果就过了一个点。。。 其实这道题本身就是贪心。 优先选择结束时间早的,占用时间短的放在前原创 2017-10-16 21:40:24 · 379 阅读 · 0 评论 -
<贪心>ZJOI 2008 泡泡堂
可以交的题目链接1 可以交的题目链接2 QAQ贪心先把两队人从大到小排一遍序 每次比较两队的队首和队尾(队首是本队最强的,队尾是本队最弱的) 最好的情况下(我方得分最多时) ①如果我方的队首大于对方的队首,用我方队首打败对方队首,显然最优 ②我方的队尾大于对方队尾,说明我方所有的人都可以打败对方的队尾,所以消耗一个最弱的来打他,显然最优 ③如果我方队首和队尾都比对方弱,(怎么着都得输一原创 2017-10-17 08:15:15 · 362 阅读 · 0 评论 -
<划分型DP>【noip 2000】乘积最大
非高精版 高精版 dp[i][j]:前i个数添加j个乘号能得到的最大的乘积 转移时,要枚举前i个数中最后一个乘号的位置codevs上的数据比较水,连long long都不用开 codevs非高精版代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using原创 2017-09-29 11:04:57 · 335 阅读 · 0 评论 -
【队内胡策 10.24 T2】术式
题目来源:codevs 2178 表达式运算Cuties 去题面的传送门 表达式计算 需要处理负数以及括号多余的情况 考试的时候交的代码比较长,崩溃了好几组,后来发现应该先判断栈空。还wa了几组。 考完时候继续调,调了很久都是有bug。就是在把所有的括号都计算完了之后,剩下的运算符之前没有处理好,直接丢在栈里了。而且我是最后把栈清空了一遍,这样就导致剩下的运算符没有按照优先级排列,出现原创 2017-10-25 16:31:06 · 291 阅读 · 0 评论 -
【队内胡策 11.3】 T1 T2
再次把两个题写在一个博客里的原因是,这两道题简单。。 T1 暴力暴力暴力,不能再暴力的暴力,但是考试的时候打了很久,因为很多细节要处理最后还是wa了一个点qwq,原因见代码44、45行少了一个特判,意思是,第二个日期的月份为2时,如果不是2月29,那么特判的闰年是不应该加上的qwq代码:#include<iostream>#include<cstdio>#include<cstring>#原创 2017-11-03 16:54:19 · 339 阅读 · 0 评论 -
【队内胡策 10.26 】T1
QAQ蒟蒻我只做了六十分的暴力,六十分很好水O(n)做法: 每到遍历一个字符,查找在该字符前的所有已经遍历过的字符里,该字符作为最小值时的答案,和该字符作为最大值时的答案。我们统计一下到第i个位置,每个字符各出现了多少次,即sum[j]。但是,我们还要知道对于以该位置结尾的,以前面任何位置开头的子串中的答案。从1到i遍历一遍肯定会超时,这时想用什么方法,能够快速找到位置x,使得区间[x,i]的答案原创 2017-10-26 17:04:46 · 295 阅读 · 0 评论 -
<分块>[HNOI 2010] 弹飞绵羊
在线oj提交传送门 第一次打分块的代码,qwq原来也不是特别麻烦每一个点记录跳出所在块的步数,和跳出这个块之后落到哪一个点,每次修改,都把整个块的内容全部修改一遍,复杂度O(nlogn)注意: 1.修改时一定要暴力把整个块内所有受到修改影响的点修改一遍 2.本题中记录了一个last数组表示每一个块的最后一个元素。修改时,要从该点一直到上一个块的最后一个元素的下一个元素也就是本块的第一个元素全原创 2017-11-03 21:35:04 · 288 阅读 · 0 评论 -
【noip 2013】火柴排队
去题面的传送门 QAQ昨天队内胡策的T1,成功打次了 没做过火柴排队的我考完试先跑过来做这道题了 首先,对于两个序列,要使他们之间的距离最小,也就是Σ(ai+bi)^2最小,肯定是最大的和最大的对应,次大的和次大的对应,也就是说,把两个序列排序后,各个位上一一对应。但是还要保证交换次数最少,所以不能打乱顺序。 举个栗子: A序列:4 7 2 1 B序列:3 2 1 4 排序后: A:原创 2017-10-25 11:02:15 · 236 阅读 · 0 评论 -
【队内胡策 11.1】 T3
考试的时候打了八十分暴力QAQ虽然八十分过了,但是算法有bug。。数据没有卡我算法,然后就水过了8个点。。害怕。 正解: 二分+并查集 二分前mid个是否有矛盾的,特判一下全部符合的,答案为n+1 验证答案时,用并查集维护。 首先,如果已知一段区间[a,b]的最小值为x1,再出现一组猜测:[c,d]的最小值为x2。 ① 若x1 > x2且区间[c,d] 包含在[a,b]里,则自相矛盾。原创 2017-11-01 20:01:55 · 309 阅读 · 0 评论 -
<错排>codevs 1697 ⑨要写信
去题目的传送门题面很长,说白了,就是要你求错排n个数的方案数 表示看完错排的通项公式的推导过程之后,整个人都不好了。但是这个题不用通项公式,只知道递推式就好了。 递推式:f[n]=(n-1)*(f[n-1]+f[n-2]) 来一波递推式的推导过程: 当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置原创 2017-10-13 19:26:41 · 278 阅读 · 0 评论 -
D2 2017.10.10内测
论什么叫做的时候一脸懵逼,一讲题发现并不难2333 T1(题目来源:poj 2709) 第一眼感觉不难。 打出来了发现最后一组不对。 咦?输出了7 哪里出了问题? 仔细一想,发现原来可以各种三色的不同原料搭配来得到灰色的,也就是说最后一组数据,不一定非得固定的三种颜料*7才能凑成333,其他的颜色搭配也可以使用,这样有很多浪费,肯定不是最优。 暴力搜索什么的?好像不可取 然后我很原创 2017-10-12 10:13:55 · 364 阅读 · 0 评论 -
【zqsz&&loi 互测 11.6】 T1
原题题目来源:poj 1845 原题传送门 原题求a^b的约数个数,本题作了修改: 题目很明显是求首项为1,公比为m的等比数列的前t项和Solution 1:等比数列通项公式+快速幂最关键的是取模用到逆元 求逆元?exgcd?费马小定理?不行不行,题目中没有说m和t-1互质 qwq get到了dalao的求逆元的通式: 求:(a/b)%m 公式:(a/b)%m=(a%(m原创 2017-11-06 20:29:47 · 433 阅读 · 1 评论 -
【noip 1999】旅行家的预算
去题面的传送门 贪心 从当前位置查找可以到达的最大范围内,最近的价格小于当前价格的站点。如果没有,就在当前站加满油,一直走到不能走到下一个加油站为止。直到到达终点。 一开始想的贪心是如果没有比它小的,就在可到达范围内找一个最小的,到那个站去加油。但是这样肯定不是最优的,既然找不到,那我们就在当前便宜的站点尽可能多地加油。#include<iostream>#include<cstdio>#原创 2017-10-29 18:25:20 · 619 阅读 · 0 评论 -
<二分答案加验证||最小生成树>bzoj 1821 部落划分
去题面的传送门Solution 1:二分答案加验证 并查集维护分成的部落 小于答案的边必须分到同一个并查集里,最后并查集的数目如果小于k,那么答案偏小 这里有一个问题 二分时,如果把各个点之间的距离排一遍序,二分这个数组的话,会wa 原因是,举个栗子: 比如说各点的距离里面,有一段区间是:[11.2145,12.4000],如果直接二分这个区间,在验证到答案11.2145时,发现11.2原创 2017-10-23 11:25:20 · 293 阅读 · 0 评论 -
luogu 1766 液体滴落
去题面的传送门看上去一道模拟,应该不难。但是有很多细节要处理,调试了很长时间才过。 ①线段的端点不算作线段的一部分。也就是说在判断一条线段的横坐标跨度是否包含水滴的横坐标时,不能加等于号。 ②如果水滴在一个轨道上滑落时于另一个轨道相交,水滴将沿着原轨道下滑,不受影响 ③若其中一个轨道的端点恰好和另一个轨道相交,如样例中,由于端点是不包含在内的,所以相当等于水滴瞬间滑落到另一个轨道上 ④如果原创 2017-10-13 18:42:55 · 346 阅读 · 0 评论 -
【noip 2015】运输计划
去题面的传送门 题目的意思是:求将一棵树上的任意一条边权赋值为0时,所有航线的最长长度的最小值 想到二分答案 如何验证? 既然我们二分的答案是最长路线,也就是说,在将一条边权赋值为0之后,所有的路线长度应该都小于等于mid。但是只能删掉一条边,所以这条边是所有删边之前长度小于mid的路线的交边。问题转化为,能否找到一条边,被所有长度大于mid的路线经过。所以我们要统计每一条边被经过的次数。统原创 2017-10-23 14:55:00 · 410 阅读 · 0 评论 -
【noip 2011】选择客栈
去题面的传送门QAQ很巧妙的方法 O(n)就可以做 边读入边处理 记录: ①now:为离当前客栈最近的,花费不超过p的客栈的坐标 ②sum[x]:已经对答案有过贡献的(与它之后的客栈之间有最小花费不超过p的)颜色为x的客栈的数量 ③tot[x]:之前出现过的颜色为x的客栈的数量 ④h[x]:之前最后一次出现的颜色为x的客栈(与当前客栈颜色相同且距离当前客栈最近的客栈)的坐标如何记录答案?原创 2017-10-19 16:06:22 · 940 阅读 · 0 评论 -
<二分||线段树>【noip 2012】codevs 1217 借教室
这就是个题面两种做法啊,二分和线段树 一.二分+前缀和: 从第一天到第n天,一天一天地算,然后二分找有没有不符合的,虽然很暴力,但是可以做啊QAQ 代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000000+10;原创 2017-10-06 10:42:07 · 238 阅读 · 0 评论 -
【队内胡策 11.3】 T3
我以为是个DP啊,而且考试的时候没明白这里的二维背包指的是什么(回去重修语文)其实是个贪心,前缀和+枚举?对于一个n * m的格子(也就是背包),如果只放进大小为3 * 1的物品,一般情况下可以放进n * m/3种。特殊情况:n或m为2,且另一个%3==2,格子会剩下4个,只能用1 * 2的来填满,所以最多放(n*m-4)/3个。如果知道了放几个1 * 3的格子,就可以O(1)算出1 * 2的物品可原创 2017-11-03 17:09:49 · 353 阅读 · 0 评论