自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

PK__PK的博客

AC之路长的超乎你的想象

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

原创 广东工业大学ACM程序设计大赛 旋转矩阵

题目链接:点击打开链接题意:旋转矩阵题解:可以定义右旋为+1,左旋为+3,最终结果对 4 取模就知道旋转结果。右旋 2 次、左旋 1 次可以 当做右旋 2、3 次处理,所以只要写出矩阵右旋 操作的函数就可以了。矩阵右旋坐标转换公式: a[i][j]=b[j][n-1-i],a 是原矩阵,b 是右旋的矩阵, n 是总行数,m 是总列数(a[n][m])。注意“-” 和“|”也要变形#in

2018-03-29 16:21:18 432

原创 广东工业大学ACM程序设计大赛 等式

题目链接:点击打开链接题意:给定n,求1/x + 1/y = 1/n (x题解:首先看一下最直观的思路。两层for循环去暴力去找x和y。然后用个ans来统计。时间复杂度太高。会时间超限。那么就去考虑有没有什么优化。然后我们发现除了去变形这个式子就没有其他方法了。1/x+1/y=1/n -->   两边乘上xyn,这一步很容易想到。nx+ny=xy -->  因为x,

2018-03-29 15:41:17 343

原创 广东工业大学ACM程序设计大赛 回旋星空

题目链接:点击打开链接题意:计算回旋图标的个数,即选中三颗星星,分别作为回旋图标的起点,拐点和终点,假设现在有三个 星星分别为i,j,k,如果d(a[i],a[j]) == d(a[j],a[k])则表示找到了一个回旋图标,其中d(x,y)表示这两个点的欧氏距离 为了给它很大的希望(i,j,k)和(k,j,i)被认为是两个不同的回旋图标为了形象解释题意。灵魂画师已上

2018-03-28 17:20:43 349

原创 广东工业大学ACM程序设计大赛 psd面试

题目链接:点击打开链接题意:  忽略字母大小写,输入的字符串去掉最长的回文子序列后还有多长?题解:很明显的最长回文子序列(LPS)的模板题。说一下LPS的解法。分为两种:第一种:反转字符串后和原字符串求最长公共子序列(博主不知道证明)。第二种:DP【i】【j】表示以 i 位置为起点,j 位置为终点的字符串的最长共回文子序列。初始化:        DP【i】【i】

2018-03-28 16:49:09 304

原创 广东工业大学ACM程序设计大赛 跳台阶

题目链接: 点击打开链接题意:有一个n级台阶的楼梯,小明一次可以向上跳1步,两步,甚至是n步,请问小明跳到n级台阶有多少种跳法?题解:因为每次都可以走1-n步。所以我们最直观的想法是当你要上第 i 台阶时,你有如下几种方案你直接从i 走1步 走到i+1也可以从i-1 走2步走到 i+1也可以从i-2 走3步走到i+1………………………………也可以从0走n步走到i+1

2018-03-28 09:29:36 406

原创 2018 蓝桥杯省赛 A 组模拟赛 取石子

题目链接:点击打开链接题意:蒜头君和花椰妹今天都很无聊。两个人相约一起玩游戏。蒜头君取出了一堆奇形怪状的石子,并且把它分成了三堆。他和花椰妹轮流从里面取石子,取出最后一颗石子的人胜利。花椰妹觉得这样没意思,于是她要求加入一个限制条件:每个人每次只能取出 1,3,71,3,7 或 99 颗石子。石子数目不够的时候不能多取,如还剩 22 颗石子的情况下,只能拿走 11颗,而不能选择 3,7

2018-03-27 20:55:27 472

原创 2018 蓝桥杯省赛 A 组模拟赛 划分整数

题目链接:点击打开链接题意:把n这个整数划分为不多于k个正整数相加的形式,那么一共有多少种分解的方式呢?题解:对于要划分的n来说,和k有以下三种关系1. n 很明显n最多只能划分成n个数字。所以当ndp【i】【j】 = dp【i】【i】;2.当n == k时分成两种情况。第一种就是把n分成n份,很明显是就只有一种第二种是至少有一个数为0。就是把n分成k-1份

2018-03-27 20:45:51 312

原创 2018 蓝桥杯省赛 A 组模拟赛 蒜头君的数轴

题目链接: 点击打开链接题意:首先给你一个n,表示有n个坐标。然后你可以向点和点之间加入点(整数)。让点与点之间的距离都相等。你可以忽略一个两点之间的距离,问最少加多少个点。题解:首先考虑一种最直观的解法。那就是暴力枚举。第一层for循环去枚举忽略的点,第二层for循环去枚举每个点的距离,第三个for循环去计算用这个距离能往其他两个点里面加多少个点。然后看一眼数据范围是N场上没想出来。

2018-03-27 16:16:01 181

转载 ACM对拍程序详解

转载地址:https://blog.csdn.net/wyt734933289/article/details/47400433在打acm比赛时,如果一个程序实在不知道错在哪,而剩下时间还挺充足,对拍是一个很好的手段,对拍的意思就是当前你的一个程序交上去发现答案错误了,但又不知道错哪,条件允许的话,你可以写成另一个暴搜的程序得出答案,和你wa输出的答案相匹配,看哪里错了。平时训练也可以这么找出

2018-03-27 09:50:45 482

原创 2018 蓝桥杯省赛 A 组模拟赛 蒜头君下棋

题目链接:点击打开链接题意:一个n*M的棋盘上让你放马,马和马之间不能攻击。问能放多少匹马。题解:最开始是以为是一道搜索题。然后一看数据范围。瞬间懵逼。发现这道题,是个规律题。而且规律错综复杂。死活没有思路。然后我们队里的dalao告诉我。你看一眼国际象棋的棋盘你就能明白这道题了。然后我就看了一下棋盘,发现如下规律当 n == 1 || m == 1 时结果为 n和m的最大值。

2018-03-27 09:49:14 512

原创 2018 蓝桥杯省赛 A 组模拟赛 最强团队

题目链接:点击打开链接题意:给你一些数字,再给你一种运算 a^b^c = result .让你从这些数字中任选三个不同的a,b,c。求出result最大。题解:暴力三重for循环。直接搞定。答案:258237代码:#include using namespace std;const int maxn = 50;int a[maxn] = {258055 ,69760 ,1

2018-03-26 21:01:29 1387

原创 2018 蓝桥杯省赛 A 组模拟赛 末尾零的个数

题目链接:点击打开链接题意:N! 末尾有多少个 00 呢?N! = 1 \times 2 \times \cdots \times NN!=1×2×⋯×N。题解:如何会在乘法计算出出现0.那就是当相乘的式子中出现一个偶数和一个包涵因子为5的数时。我们又能发现一个问题。在结成运算中偶数的个数一定比5多的多。那么这道题我们就知道了思路,就是统计这个阶乘运算中有多少个5。知道思路

2018-03-26 20:55:42 327

原创 2018 蓝桥杯省赛 A 组模拟赛 快速幂

题解:点击打开链接题意:一个数的整数次幂,是我们在计算中经常用到的,但是怎么可以在 \mathcal{O}(\log (n))O(log(n)) 的时间内算出结果呢?代码框中的代码是一种实现,请分析并填写缺失的代码,求 x^y \mod pxymodp的结果。题解:首先需要明白快速幂的思想。不懂得小伙伴看一下我的这篇博客:https://blog.csdn.net/pk__

2018-03-26 20:47:25 364

原创 2018 蓝桥杯省赛 A 组模拟赛 连连看

题目链接:点击打开链接题意:每次消掉两个方格的时候,都有会获得一个分数,第 ii 次消的分数为 i \timesi× 方格的值。优操作情况下,获得的分数最多为多少。题解:把大的数字留在最后消除。小的数字尽可能早的消的。所以消的顺序为2 1 1 2 3 4 5.答案:89不会正确的解法。

2018-03-26 20:34:23 239

原创 2018 蓝桥杯省赛 A 组模拟赛 矩阵求和

题目链接:点击打开链接题意:我们把矩阵中的每条边的中点连起来,这样形成了一个新的矩形,请你计算一下这个新的矩形的覆盖的数字的和。题解:模拟。把不在中点连接的点删去,然后统计和。当行数51时i行比i-1行少二。然后模拟过程。结果:26020201代码:#includeusing namespace std;const int maxn = 505;int main(){

2018-03-26 20:19:46 461

原创 2017第八届蓝桥杯省赛-大学B组 k倍区间(数论)

标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i 之和是K的倍数,我们就称这个区间[i, j]是K倍区间。  你能求出数列中总共有多少个K倍区间吗?  输入-----第一行包含两个整数N和K。(1   以下N行每行包含一个整数Ai。(1    

2018-03-22 21:02:40 482

原创 2017第八届蓝桥杯省赛-大学A组 分巧克力(二分)

儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。   小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。    为了公平起见,小明需要从这 N块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:    1. 形状是正方形,边长是整数    2. 大小相同  例如一块6x5的巧克力可以切出6

2018-03-22 15:32:29 409 1

原创 2017第八届蓝桥杯省赛-大学A组 包子凑数

标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。 每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再

2018-03-22 15:01:15 603

原创 2017第八届蓝桥杯省赛-大学A组 正则问题(字符串处理,dfs)

描述:考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。输入一个由x()|组成的正则表达式。输入长度不超过100,保证合法。输出这个正则表达式能接受的最

2018-03-22 11:31:06 612

原创 2017第八届蓝桥杯省赛-大学A组 最大公共子串(LCS)

题意:最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少。比如:”abcdkkk” 和 “baabcdadabc”, 可以找到的最长的公共子串是”abcd”,所以最大公共子串长度为4。下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。请分析该解法的思路,并补全划线部分缺失的代码。#include #incl

2018-03-22 10:17:11 174

原创 2017第八届蓝桥杯省赛-大学A组 字母组串(简单递归)

由 A,B,C 这3个字母就可以组成许多串。 比如:”A”,”AB”,”ABC”,”ABA”,”AACBB” ….现在,小明正在思考一个问题: 如果每个字母的个数有限定,能组成多少个已知长度的串呢?他请好朋友来帮忙,很快得到了代码, 解决方案超级简单,然而最重要的部分却语焉不详。请仔细分析源码,填写划线部分缺少的内容。#include // a个A,b个B,c个C

2018-03-22 10:12:42 732

原创 2017第八届蓝桥杯省赛-大学A组 方格分割(深搜dfs)

标题:方格分割 6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。 如图:p1.png, p2.png, p3.png 就是可行的分割法。 试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。 请提交该整数,不要填写任何多余的内容或说明文字。回忆满满=-=。这是大一第一次参加蓝桥杯B组

2018-03-22 10:04:26 491

原创 L2-013. 红色警报

题目链接:点击打开链接题意:中文题意。没什么可解释的题解:判断连通块个数,用并查集维护,然后拆掉一个就重建一次图,再统计连通块数量,和之前比较。上代码:#includeusing namespace std;int f[505];int vis[505];struct P{ // 结构体记录每条边的起点和端点 int x; int y;}a[5005];//并查

2018-03-20 14:15:55 171

原创 L2-012. 关于堆的判断

题目链接:点击打开链接题意:先给出一些数字,然后建最小堆。然后再给出一些语句,判断是否正确。题解:考察了最小堆的建立,除了输入比较麻烦,其余的都很简单,不知道什么是堆的可以看一下博主这篇文章:http://blog.csdn.net/pk__pk/article/details/79622093上代码:#include#include#include#includeus

2018-03-20 11:44:53 157

原创 堆的教学(原理,实现,应用)

堆:和队列还有栈,一样是一种基础的数据结构。但是栈和队列是线性的数据结构。而堆是一棵树,并且是一个完全二叉树,不仅如此。这颗二叉树还有一些小特殊。举一个例子把。堆(特殊的完全二叉树):观察这棵树,我们会发现所有的父节点都比子节点要小。符合这样的特点的完全二叉树我们称之为最小堆。反之。如果所有父节点都比子节点要大,这样的二叉树我们称之为最大堆。知道了一些基本概念。我们来考虑一些问题。

2018-03-20 11:39:01 453

原创 L2-011. 玩转二叉树

题目链接:https://www.patest.cn/contests/gplt/L2-011题意:前序,中序,推镜像层序。题解:层序输出时,右节点先入队列,左节点后入。就ok了代码详情:#include #include #include using namespace std;const int INF = -99999999; const int N = 100

2018-03-16 10:38:47 171

原创 L2-009. 抢红包

题目链接:https://www.patest.cn/contests/gplt/L2-009题意:中文题意不翻译了。题解:模拟一下发红包的过程,用结构体存数据,然后结构题排个序,就ok了#include#include#include#includeusing namespace std;const int N = 10005;struct node{ int id;

2018-03-15 21:36:31 149

原创 L2-010. 排座位

题目链接:https://www.patest.cn/contests/gplt/L2-010题意:两个人之间有两种关系。敌对和朋友。只要不是敌对关系就可以坐在同一张桌子。问任意两个人关系。题解:加一个数组记录两个人的敌对关系,然后朋友的话就用并查集维护一下。题目有点坑,不复答案中英文。就过不去,就很难受。#include#include#include#includeusin

2018-03-15 21:18:38 166

原创 L2-008. 最长对称子串

题目链接:点击打开链接题意:求一个字符串的最长对称字串题解:Manacher算法,跑一遍,不会Manacher算法的可以看我这篇博客:http://blog.csdn.net/PK__PK/article/details/79566540代码:#include #include #include using namespace std;#define MAX 100000

2018-03-15 20:44:11 171

原创 Manacher算法(马拉车算法)讲解

Manacher算法:是一种高效的找出一个字符串中回文序列的最大值的算法。时间复杂度为O(n);我们正常的对于字符串的回文串的求法。是对从i向两端延伸。时间复杂度过不去很多题。所以manacher算法的优势就要展现了。我们可以思考一个问题我们是否能不用每次都从i点来向两边扩展。答案是可以的。我们可以利用前面算好的回文串长度来优化当前回文串长度的查找。在详细讲这个算法之前。来明晰一些要用...

2018-03-15 15:41:35 4430 7

原创 L2-006. 树的遍历

题目链接:点击打开链接题意:中序和后序重建二叉树,输出前序。题解:我之前写了一篇博客,很详细的教学。大家可以看一下:http://blog.csdn.net/pk__pk/article/details/79553615我这边直接上AC代码:#include <iostream>#include <algorithm>#include <queue> us...

2018-03-15 13:12:52 189

原创 二叉树的重建

本篇博客主要讲解:如何已知前序后序重建二叉树,还有中序后序重建二叉树。在讲解之前,先罗列一下二叉树的基本概念(已经会的同学可以跳过)。二叉树在图论中是这样定义的:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连

2018-03-14 19:21:22 404 1

原创 L2-005. 集合相似度

题目链接:点击打开链接题意:比较难理解,简而言之就是求任意两个集合的交集比上并集。题解:去重用set,然后暴力一边过。#include#includeusing namespace std;int main(){ set se[55]; set::iterator it; int t,n,x,y,cot1,cot2; cin>>t; for(int i=1;i<=t;i

2018-03-13 18:03:24 150

原创 L2-003. 月饼

题目链接:点击打开链接题意:中文不翻译题解:水题#include#include#includeusing namespace std;struct node{ double k; double s; double p;}a[1005];bool cmp(node a,node b){ return a.p > b.p;}int main(){ int n,m

2018-03-13 11:20:01 150

原创 L2-002. 链表去重

题目链接:点击打开链接题意:中文题意;题解:强模拟。详细看代码注解(详细):#include #include #include #include #include using namespace std;struct node //记录初始链表 { int key; int next; // 下一个的位置 }a[101000];s

2018-03-13 10:42:17 237

原创 L2-001. 紧急救援

题目链接:点击打开链接题意:中文题意不解释了。题解:用dijkstra算法来解决。但是需要几个数组来记录一些其他的东西。需要详细了解dijkstra的详细过程,然后在更新值的时候更新其他值。详细看代码注解(详细):#includeusing namespace std;const int maxn = 505;const int INF = 1e9;int e[maxn]

2018-03-13 10:00:05 206

原创 Codeforces Round #469 (Div. 2) C. Zebras

题目链接:点击打开链接C. Zebrastime limit per test1 secondmemory limit per test512 megabytesinputstandard inputoutputstandard outputOleg writes down the hi

2018-03-11 15:33:51 388

原创 Codeforces Round #469 (Div. 2) B. Intercepted Message

题目链接:点击打开链接B. Intercepted Messagetime limit per test1 secondmemory limit per test512 megabytesinputstandard inputoutputstandard outputHacker Zho

2018-03-11 15:17:58 157

原创 Codeforces Round #469 (Div. 2) A. Left-handers, Right-handers and Ambidexters(水)

题目链接:点击打开链接A. Left-handers, Right-handers and Ambidexterstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard

2018-03-11 15:06:48 344

原创 Educational Codeforces Round 39 (Rated for Div. 2) C. String Transformation

题目链接:点击打开链接C. String Transformationtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are

2018-03-11 14:57:56 834

空空如也

空空如也

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

TA关注的人

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