算法题解
文章平均质量分 62
包括但不限于参加算法竞赛训练里遇到的题目题解,包括PTA,CF,ICPC,VJ里的题目,也包括练习编程的题解,Leetcode,牛客。
oliveQ
这个作者很懒,什么都没留下…
展开
-
蓝桥杯-数论基础-最大比例
题目X星球的某个大奖赛设了M级奖励。每个级别的奖金是一个正整数。并且,相邻的两个级别间的比例是个固定值。也就是说:所有级别的奖金数构成了一个等比数列。比如:16,24,36,54其等比值为:3/2现在,我们随机调查了一些获奖者的奖金数。请你据此推算可能的最大的等比值。输入格式:第一行为数字N,表示接下的一行包含N个正整数第二行N个正整数Xi(Xi<1 000 000 00...原创 2019-03-17 16:34:22 · 544 阅读 · 0 评论 -
蓝桥杯-动态规划-牌型种数
牌型种数小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?请填写该整数,不要填写任何多余的内容或说明文字。题解及代码#include<bits/stdc++.h>usin...原创 2019-03-10 16:05:26 · 428 阅读 · 0 评论 -
蓝桥杯-2017年省赛部分题解
K倍区间题解及代码/*求区间[l,r]的和是k的倍数的个数。求区间和,我们可以通过前缀和来求出。我们规定sum[i]表示第1个元素到第i个元素的和。那么sum[r] - sum[l-1]就是区间[l,r]的和。区间[l,r]的和是k的倍数即(sum[r] - sum[l-1])%k == 0 即sum[r]%k == sum[l-1]%k那么,我们求出每个前缀和,在求的过程中取模,两个相...原创 2019-03-17 17:04:31 · 401 阅读 · 0 评论 -
蓝桥杯-专题-简单图论(大臣旅费&网络寻路)
很久没写题了,最近就刷刷蓝桥杯,本来图论写的少,就接触过初级的最短路,现在就是练练手1.大臣旅费题目很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。...原创 2019-03-07 15:50:11 · 673 阅读 · 0 评论 -
蓝桥杯-基础训练-逻辑判断
题目A、B、C、D、E、F、G、H、I、J 0、1、2、3、4、5、6、7、8、9共10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束: false分析 1. 如果A参加,B也参加; A&amp;&amp;!B 2. 如果C不参加,D也不参加; !C&amp;&amp;D 3. A...原创 2019-03-06 10:18:01 · 328 阅读 · 1 评论 -
ICPC-思维-CFJamie and Binary Sequence+No to Palindromes!【刷题记录】
https://codeforces.com/contest/916/problem/BJamie and Binary Sequence没有一丝丝防备,被审题给坑了(看完题解,折服于贪心)大家肯定会想到分解成二进制数,然后进行每一位拆分,使得1的个数刚好等于k,但是题目不是构造题。。。。要求1.y最小:所有幂次的最大值最小所以在1的数量符合条件的情况下,每一位幂次要么全往后移(使得y...原创 2018-12-13 19:28:11 · 185 阅读 · 0 评论 -
ICPC-思维-CF#525div2 A+B+C+D
https://codeforces.com/contest/1088A给你数值x,x*x&gt;x , x/x==1&lt;x(x&gt;=2)ll n,m,t; cin&gt;&gt;n; if(n&lt;2)cout&lt;&lt;-1&lt;&lt;endl; else cout&lt;&原创 2018-12-05 11:41:30 · 272 阅读 · 0 评论 -
ICPC-思维-CF#522div1 A+B
https://codeforces.com/contest/1078A#include<bits/stdc++.h>using namespace std;void solve(){ double x1,y1,x2,y2; double a,b,c; scanf("%lf%lf%lf",&a,&b,&c); scanf(...原创 2018-12-03 19:02:39 · 188 阅读 · 0 评论 -
ICPC-思维-CF#55div2 A+B+C+D
https://codeforces.com/contest/1082退役了,就写写题解报告过日子了。A翻书:给你起点S,终点E,跳动间隔d,可以往前或者往后。但是到边界1或者N时,直接在边界上停止,再继续从边界跳到终点。问需要跳的步数。1.判断S-E是否可以直接到达(用取余判断)2.判断S-1-E方式可以成立吗?(用取余判断)3.判断S-N-E方式可以成立吗?(用取余判断)4.以上...原创 2018-11-30 22:45:19 · 177 阅读 · 0 评论 -
ICPC-思维-HDU6267
找规律1 2 3 4 5n=5 24 48 60 68 74n=4 6 12 15 17n=3 2 4 5n=2 1 2n=1 1发现对于n从4到5,sum[1]变化了4倍;从3到4,sum[...原创 2018-11-21 18:47:47 · 319 阅读 · 0 评论 -
ICPC-思维-CF#342div2 A(!)+B+C
http://codeforces.com/contest/625A这个题,好恶心。题解说:(剩钱-c)/(b-c)才是可以进行第二种交换的次数#include<bits/stdc++.h>using namespace std;#define ll long long#define mem(a,b) memset(a,b,sizeof(a))const ll mod=...原创 2018-11-20 20:58:05 · 182 阅读 · 0 评论 -
ACM-思维-CF#521div3 B+C+D+E+ (ECR#53div2的C 二分答案)
#521div3https://codeforces.com/contest/1077#53div2-Chttps://codeforces.com/contest/1073/problem/C进入正文521B找到使得101不存在的最少改变序列。就是离线处理这个序列,贪心的遇到101就改掉第二个1为0,然后一直On查找至结束 int t; cin>>t; ...原创 2018-11-19 21:06:50 · 451 阅读 · 0 评论 -
ACM-思维-CF520-div2-A+B+C+D
http://codeforces.com/contest/1062A:这题被我读错题意了,于是卡死在test7…这里的意思是擦除一段连续区间里的一些元素(不是一些区间),找到最长的连续区间即可,但是要特判头尾是不是1和1000这个也算连续区间的长(写得好的可能不用特判吧…)#include&lt;bits/stdc++.h&gt;using namespace std;#define ...原创 2018-11-15 11:33:50 · 409 阅读 · 0 评论 -
ACM-思维-D.Mr. Panda and Geometric Sequence
传送门 http://codeforces.com/gym/101775/problem/D训练赛的时候被我误认为是数位dp了,结果没来得及模改。。。。看了网上的题解才意识到可以进行预处理,根本不需要数位dp,55555大致就是,预处理出1e15中所有的相关数值,然后排序去重,二分查找位置,r减去l-1就是对应的数量#include<bits/stdc++.h>using n...原创 2018-11-14 22:48:04 · 450 阅读 · 0 评论 -
ACM-思维题-CF334div2 C Alternative Thinking 找规律
这里有题面给你一个01串,可以将其中的部分连续子串进行反转(0变1,1变0),问最长01交替子串?一开始看错题了,以为只能0变为1,特判了好多,结果发现其实就是:先计算这个串里 最大(可不连续)的01交替子串 + 2(最多可以增加的数量)最后和总长度比较,取最小#include &lt;bits/stdc++.h&gt;using namespace std;i...原创 2018-11-05 22:38:44 · 768 阅读 · 0 评论 -
ICPC-贪心 HDU1789
给你几个任务点的期限和罚分 如何最小化总罚分按罚时排序,再按日期排序,贪心的方法:这题我一开始想要从a[i]的位置往后找(比较deal和vim),后来发现特别不好实现,所以后来变成a[i]的日期作为桶,往前找可行的日期,一找到就标记,这个贪心我也不知道为什么成立。。。。#include<iostream>#include<string.h>#include<string>#include<c原创 2018-05-09 22:14:44 · 160 阅读 · 0 评论 -
ACM-数据结构-哈夫曼树 wpl计算(最小堆heap+vector)
题意:给你一个n,接下来输入n个数字:表示对应字符的出现次数(即权值),依此权值大小,建成哈夫曼树(最小堆),求哈夫曼树的wpl。STL的heap的应用 一·头文件 algorithm 二·STL中与堆相关的4个函数 1.建立堆make_heap()make_heap(_First, _Last, _Comp)默认是建立最大堆的。对int类型,可以在第三个参数传入greater<int>(原创 2018-04-06 18:45:56 · 2253 阅读 · 0 评论 -
ACM-数据结构-并查集 poj2236 Wireless Network
题意:给你n个点,d的限制距离,下面有多行修复要求或者查询要求。 详细看链接 题解:设定一个flag标记,当仅当两个都被修复过,且距离小于等于d的时候可以进行并查集的连接操作。 代码:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=10005;struct no原创 2018-04-08 22:05:00 · 116 阅读 · 0 评论 -
ACM-字符串-水题 string.find 暴力水题HDU1238
题意:找多个串中的公共部分,这个公共部分的定义,包括顺序和逆序关键词:string.find reverse 最短串 暴力(n^3) 枚举子串 substr串个数<100 串长<100链接:来自VJ代码如下:(暴力太久不写也会手生呢!)#include<iostream>#include<cstring>#include<algorithm>#include<cstdi原创 2018-01-06 20:22:30 · 213 阅读 · 0 评论 -
ACM-字符串-KMP HDU4763 Theme Section 深刻理解next数组
KMP模板套了那么久,没真正理解next可不行!string s;next[i]:字符s[i] 与 (aaxoaaaaa)真前缀 失配时指向串的位置(跳转数组)某种意义上:next[i]等于P[0]...P[i - 1]最长的相同真前后缀的长度例如: a a x o a a a a anext:-1 0 1 0 0 1 2 2 2 * * **1:若这里的a失配原创 2018-01-08 21:57:47 · 271 阅读 · 0 评论 -
ACM-数论-HDU6265积性函数
http://acm.hdu.edu.cn/showproblem.php?pid=6265大胆猜测:这个函数是积性函数F(n)=F(p1^k1) * F(p2^k2) * F(p3^k3) * …原式:F(p^k) = p^(k-1) * (p+k*(p-1))#include<bits/stdc++.h>using namespace std;#defi...原创 2018-11-19 16:38:30 · 243 阅读 · 0 评论 -
ACM-基础-二分查找+分段 2018浙江省赛ZOJ4029
题目链接23 2100 1000 10000100 104 52323 223 12312 31232 324 2 3 51136645619没有看题目的童鞋,请仔细看完题目再来/*1.先将a数组排序2.求 a/幂 的前缀和z就是表示对于每个p 需要求出 :每个ai/(ai的幂)的和对于每个和zi=是a[n-1]/幂1 + a[n-2...原创 2018-05-11 22:12:40 · 352 阅读 · 0 评论 -
ACM-数论-矩阵快速幂 HDU5015&HDU2276
HDU2276题目链接 HDU5015题目链接 2276 矩阵:(只有左边和本身有关联(1),其他都无关(0)) 第一个样例1 0 0 0 0 0 11 1 0 0 0 0 00 1 1 0 0 0 00 0 1 1 0 0 00 0 0 1 1 0 00 0 0 0 1 1 00 0 0 0 0 1 1代码:#include<iostream>#include<string.原创 2018-05-05 15:15:45 · 228 阅读 · 0 评论 -
ACM-数论-矩阵快速幂 POJ3233 矩阵快速幂
这里是题面这个是写得最好的题解下次再来补坑注意一点:矩阵开long long 会超时,矩阵必须开到60+,不然会RE#include<iostream>#include<cstdio> #include<string.h>using namespace std;typedef long long ll;int g;int mod;struct mx{ int v[65][65]转载 2018-05-03 19:56:54 · 228 阅读 · 0 评论 -
ACM-数论-矩阵快速幂 HDU6030
这里是题面r:red b:blue【题意】 有一串珍珠,长度为n(1e18) 每个珍珠要不染色成红色,要不染色成蓝色。 要求任何连续素数长度的珍珠,都必须是红色个数&gt;=蓝色个数 让你求出有多少种对这串珍珠的染色方案。 一开始以为要打质数表,但是后来发现不需要,套路特别像斐波那契数列。 要求任何连续素数长度的珍珠,都必须是红色个数&gt;=蓝色个数 1.用f[...原创 2018-04-29 17:06:15 · 327 阅读 · 0 评论 -
ACM-数论-质因子分解 LightOJ1336
这里是题面重点内容 式1: 式2: 分析1.这里的偶数不好找,所以转换思维-----找奇数的个数2.式2为奇数,代表每个乘号两旁都是奇数3.质数中,除2以外,其他的质数都是奇数,这也是为什么我们推论1是找奇数的个数4.先将2这个质因子提取出来,那么剩下的就都是奇质因子5.(p^(e1+1)-1)/(p-1)就是等比数列求和公式(1+p^1+p^2...p^e1),可知求和里每项都是原创 2018-04-23 19:53:59 · 325 阅读 · 0 评论 -
ACM-数论- 威尔逊定理 hdu2973
这里是题面题解:这个阶乘和(p-1)/p就想到了威尔逊定理(p-1)!=p-1 (mod p)当3*k+7为质数时:那么(3*k+6)!+1/(3*k+7)就是整数temp,后面的就是小于temp的一个数,取整即temp-1,答案就是1当3*k+7为和数时:自己试一些数字进去,发现答案就是0或者0.x,取整后就是0由此推断得出结论 当3*k+7为质数,那么答案要加一,否则不变.代码:#原创 2018-04-23 19:30:10 · 552 阅读 · 0 评论 -
ACM-数论-唯一分解定理 Sum of Consecutive Integers
连续的数(n>2)相加的和等于m,求这个连续的数模式的种数 样例:InputInput starts with an integer T (≤ 200), denoting the number of test cases.Each case starts with a line containing an integer N (1 ≤ N ≤ 1014).OutputFor each cas原创 2018-04-22 17:18:41 · 702 阅读 · 0 评论 -
ACM-数论-组合(暴力巧妙) 2018C/C++-A幸运数
题意:一些数字,只含有3,5,7的因子,形成一个数列:3,5,7,9,15,21,25,27,35,45,49,63,75,81,105,125....然后给这些数字排序得到不同的次序,即: num[1]=3 num[5]=15 num[11]=49 然后给你num[x]=59084709587505,求x是多少?思路:这个还有个类似的情况是丑数(2,3,5)大家可以看看这个 其实数列就3原创 2018-04-03 22:08:19 · 656 阅读 · 0 评论 -
ACM-数论-矩阵快速幂 解斐波那契数列Yet another Number Sequence(UVA)
题意:就是求某斐波那契数列的第n个数值,同时要进行取余运算,避免爆数据。value of n ranges in [0, 1000000000] value of m ranges in [1, 4]input40 1 11 30 1 42 40 1 22 40 1 21 4output8942967711946矩阵快速幂的原理 详情点链接这里介绍比较全,我主要讲一下这题的我踩原创 2017-12-21 22:40:06 · 445 阅读 · 0 评论 -
ACM-数论-分解因子 阶乘的后尾0个数Trailing Zeroes (III)
阶乘的定义:N! = 1*2*…*N 题意:给你一个后尾0的个数,要你求,这可能是哪个数的阶乘,只求其最小值分析:1.这个 10=2*5 且 任意连续的5个数值以内,2的倍数一定大于5的倍数所以,这题求后尾0 变成了求某5倍数的阶乘的 5的因子个数2.对此,后尾0数目高达1e8,5的倍数可能的数据,我是预估在1e10左右。所以必须化n->logn(即可以二分解决),即从1-1e10进行二分原创 2017-12-21 22:14:52 · 258 阅读 · 0 评论 -
ACM-图论-CF54div2 D Edge Deletion(最短路-链式前向星)
题目传送门:http://codeforces.com/contest/1076/problem/D作为弱鸡选手,还是和队友学了一波最短路优化,之前只会n^2的dijsktra,现在学了更省时间的模板和不同的数据结构,纪念一波。这个题目要删边,至多保留k个,但是要求留下来的边,保证某些点从源点出发的最短路的值不变,同时这些点的数量越多越好。首先,我们需要建图,这里加入前向星的数据结构。其次...原创 2018-11-14 17:10:34 · 210 阅读 · 0 评论 -
ACM-图论-dijkstra 旅游规划(25 分) PTA
帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额原创 2018-04-20 19:49:43 · 715 阅读 · 0 评论 -
ACM-图论-Dijsktra Poj1062
我是看了别人的题解,以下附上链接: 点这里看具体题解 中文题:我就解释一下样例输入:输入第一行是两个整数M,N(1 <= N <= 100),依次表示地位等级差距限制和物品的总数。接下来按照编号从小到大依次给出了N个物品的描述。每个物品的描述开头是三个非负整数P、L、X(X < N),依次表示该物品的价格、主人的地位等级和替代品总数。接下来X行每行包括两个整数T和V,分别表示替代品的编号和"优转载 2017-12-14 23:50:13 · 186 阅读 · 0 评论 -
ACM-图论-SPFA poj3268模板题
这题可以用dijsktra/SPFA,我是用dijsktra先A的,然后再用SPFA试了一下,又调出来A了。本题题意:每个点到终点的最短路(包括返回的路程),找到各条最短路中的最大值。小重点/不TLE的方法题目模式:去了再回来(有向图)题解理解:各点去终点:(取反向后,即终点(源点)到各点距离(dp/dis[i]表示)终点回各点:(原来的edge取向,算终点(源点)到各点的距离(dp/dis[原创 2017-12-13 09:57:50 · 217 阅读 · 0 评论 -
ACM-图论-最短路dijsktra poj2253
这题折磨了我一整天,一直撞南墙,疯狂改不同的小地方,再提交,最后,看别人的代码,发现是精度问题!!!!!double(%lf)计算—->float(%f)输出题意:青蛙(单源点)分步跳跃到(终点) 每条路(源到终)定义权值为:各个路段中的最大值 求所有路中,权值最小的路,输出权值dis[n] 模板题,dijsktra; 希望好心的英语大佬可以给我说一下,题目中怎么表达是float输出而不是d原创 2017-12-12 21:50:50 · 365 阅读 · 0 评论 -
ACM-图论-最短路dijkstra poj1797模板题
最短路的解法: 1.邻接矩阵//n比较小,点少边多(n^2) 2.邻接表//n比较大,点多边少(log n) 今天的代码是ACM/ICPC算法训练教程上的代码P209优先队列+邻接表+局部dp判断+贪心的思想题意分解: 1->n(iterator i)可以走的路中,可以运载的最大量是多少//某条可行路的最小值,这条路中每个点的dis,随i的增加,dis[i]不断更新为整条路的最小值(优先队列转载 2017-12-10 21:59:45 · 274 阅读 · 0 评论 -
ICPC-模拟-CF#514 div2 C
http://codeforces.com/contest/1080/problem/C纪念一下这个模拟,看了题解的,用了一点点容斥#include<bits/stdc++.h>#include<cstdio>#include<string>#include<string.h>using namespace std;#define ll...原创 2018-11-28 12:23:55 · 140 阅读 · 0 评论 -
ACM-模拟-找规律 HDU5573二进制应用
原理就是二进制的转换 0001==8-4-2-1(奇数) 01011==(16-8)+(4-2)+1 (奇数)(首位不变) 01010==((16+1)-8)+(4-2)+1(偶数)(首位加一) 对于二进制数 16==32-16==16==64-32-16 所以,我们转换n的二进制,然...原创 2018-08-31 16:11:49 · 212 阅读 · 0 评论 -
ACM-基础-二分查找 HDU6288 2018字节跳动杯C题
题目链接二分查找答案 我当时真的第一次见这种题型。 代码 1.1e18 unsigned long long 肯定可以装下K 2.【n】^a*【log2(n)】^b肯定爆unsigned long long(k) 所以只能除法解决 3.注意取对数时,分母可能是0(不能整除0) 4.直接ans存储答案,不要费心力去判断取L还是取R#include<bits/stdc++...原创 2018-06-08 17:49:49 · 574 阅读 · 0 评论