
题目
PMYCQACF
coding是为了更好的未来
展开
-
11.5 考题驾到
1.train 火车从始发站(称为第1 站)开出,在始发站上车的人数为a,然 后到达第2 站,在第2 站有人上、下车,但上、下车的人数相同,因 此在第2 站开出时(即在到达第3 站之前)车上的人数保持为a 人。 从第3 站起(包括第3 站)上、下车的人数有一定的规律:上车的人 数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直 到终点站的前一站(第n-1 站),都满足此规律。原创 2016-11-05 15:31:40 · 610 阅读 · 0 评论 -
拓扑(TOP)排序
今天要讲的是图论之中一个很重要的东西,叫做拓扑排序,又称top排序(下文中使用这个简称),但是我们得先介绍一下AOV网。 如果有想了解官方学术语言的,戳这里。这里,为了方便,我们使用一些简洁的定义,即用顶点表示活动,用边表示活动的先后顺序的有向图。 拓扑排序,是指在AOV网中,把所有的点按照它们的逻辑关系排成一个线性的序列,是每个点的前驱都排在它前面,称之为top序列。方法如下:选择一个入度为原创 2017-08-15 16:08:00 · 2882 阅读 · 0 评论 -
『洛谷T7835』士兵站队问题
题目描述有N名士兵(1<=N<=26),编号依次为A,B,C,……进行队列训练时,指挥官要把一些士兵从高到矮依次排成一行,但现在指挥官不能直接获得每个士兵的身高信息,只能获得“P1比P2高”这样的比较结果(P1,P2∈{A,B,…Z},记为P1>P2),如“A>B”表示A比B高。编一程序,根据所得到的比较结果求出符合条件的排队方案。注:比较结果中没有涉及到的士兵不参加排队。例如,设有3个士兵,A、B原创 2017-08-15 21:21:07 · 1107 阅读 · 0 评论 -
关节点及重连通图
这个内容为什么想放在这个时候就放出来呢?因为刚刚才把TOP排序讲完,所以我们跳过关键路径『有什么关联吗?』,直接进入关节点和重联通图。 一、关节点:又称割点,是维系一个图能够连通的节点(就是说没有这个节点,这个图就不连通),若从连通图中删除点V,就会使这个图割裂成多个子图,则称V点为该图的关节点。 二、重连通图:没有关节点的图。【补充:其充分必要条件为任意两点都在一个圈上!】以上是这两个重点的概原创 2017-08-22 23:50:48 · 3439 阅读 · 0 评论 -
【洛谷】P1540 机器翻译
原题这道题目就是一道十分简单的模拟(这还用说?)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;int flag[1010],a[1010];int main(){ int i,j,k,n,m,ans=0,del原创 2017-09-10 11:59:25 · 887 阅读 · 0 评论 -
【洛谷】P1541 乌龟棋
原题题目背景小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。题目描述乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。乌龟棋中M张爬行卡片,分成4种不同的类型(M张卡片中不一定包含所有4种类型的卡片,见样例),每种类型的卡片上分别标有1、2、3、4四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的原创 2017-09-13 22:17:01 · 345 阅读 · 0 评论 -
【洛谷】P1525 关押罪犯
原题题目描述S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。每年年末,警察局会将本年内监狱中的所有原创 2017-09-13 22:24:37 · 436 阅读 · 0 评论 -
【NOIOPJ】P7614 最低通行费
原题描述一个商人穿过一个 N*N 的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。输入第原创 2017-09-14 19:10:34 · 671 阅读 · 1 评论 -
后缀表达式转中缀表达式
这个专题很迷,因为这种东西很少使用,一般都是中缀转后缀(容易计算),但是有一些bt的题目总是喜欢这样倒着出题,所以适当的了解还是有必要的。题目描述给出按后缀表示法输入的一个算术表达式,表达式中只有26个大写英文字母和加减乘除四个运算符号,表达式的长度<=50,表达式以#号结束。请你编程求出它的等价中缀表达式。输入输出格式输入格式:输入文件只有一行,就是后缀表达式。输出格式:输出文件只有一行,就是原创 2017-08-24 09:16:38 · 559 阅读 · 0 评论 -
【洛谷】P1120 小木棍[数据加强版]
传送门这道题目因为加强了数据,所以博客以前的题解不能够满足这道题目的时间复杂度,当然还是使用暴力,但是得多一点剪枝。剪枝1:将木棍从大到小排序,这样搜索就可以少一些可能性。剪枝2:从最大的一根木棍开始枚举,一直到木棍长度之和/2,因为最糟糕的情况就是每一根木棍只与自己搭配,所以这种情况在最后输出,再就是两两搭配,所以答案就是总和/2,这样可以减去差不多一半的复杂度。剪枝3:如果前t−1t-1个原创 2017-08-29 22:50:48 · 715 阅读 · 0 评论 -
【洛谷】P1440 求区间最小值
传送门这道题目一眼看去,先想到的必然是暴力,但是数据范围m≤n≤2000000m≤n≤2000000太吓人,所以放弃这个想法,那么我们一步步分析样例是如何得来的:/*6 27 8 1 4 3 2077113*/因为第一个数前面没有数,输出0第二个数之前的最小数为7,输出7第三个数之前2个的最小数为7,输出7第四个数之前2个的最小数为1,输出1第五个数之前2个的最小数为1,输原创 2017-08-29 23:31:19 · 554 阅读 · 0 评论 -
【洛谷】P1582倒水
原题题目描述一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水。接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子。每次他选择两个当前含水量相同的瓶子,把一个瓶子的水全部倒进另一个里,然后把空瓶丢弃。(不能丢弃有水的瓶子)显然在某些情况下CC无法达到目标,比如N=3,K=1。此时CC会重新买一些新的瓶子(新瓶子容量无限,开始时有1升水),以到达目标。现在CC想知道,最少原创 2017-09-16 15:51:08 · 471 阅读 · 0 评论 -
9.16考试【广东省选】
作为一只蒟蒻,站在了一大堆大佬之中,所以对于本次考试我没有丝毫的信心,但是我依旧打算来一发题解报告本次考试有四道题目,都是广东省选的老题目,当然有的很水,有的很难,我们按照先易后难的顺序来发表。T4象棋比赛原创 2017-09-16 15:42:01 · 333 阅读 · 0 评论 -
树形DP入门(一)『ツリーとしては』
这次我们谈论的是树形DP,它是一种神奇的动态规划,它的模型建立在树上,所以称之为树形DP。树形DP的成立性:树是一种奇妙的结构,它一定满足最优子结构和无后效性(因为它是树啊!他的状态一定会由它的子树的来[或者说它一定会从它的父节点得来])。树形DP实现的方法:递归!!!因为它是一棵树,所以对应的有两种方式:从根到叶子结点:对应线性结构的从前往后。从叶子结点到根:对应线性结构的从后往前所以采用递原创 2017-09-01 13:09:25 · 353 阅读 · 0 评论 -
二叉平衡树(AVL树)
在了解AVL树前,需要具备以下两点只知识:普通二叉树 2. 二叉排序树这时,我们可以进入到平衡树的学习中了,但在学习之前,有一个问题,何为平衡树?很多的参考书中说到,平衡树就是每一个节点的平衡因子的值只能为0,±1。那么平衡因子又是什么?平衡因子,是左右子树节点个数的差。(这样就容易理解了吧!(⊙﹏⊙)) 这里涉及到了平衡树的插入操作,那么该如何对于每一个插入的数进行操作处理呢?这里的分类讨论原创 2017-07-28 15:19:41 · 595 阅读 · 2 评论 -
二叉排序树浅讲
二叉排序树是一种树形结构,这种树有如下几种性质若左子树不空,则左子树所有节点值均小于其根节点值若右子树不空,则右子树所有节点值均大于其根节点值其左右子树也分别是二叉排序树 有了这些性质,我们便可以证明出二叉排序树的中序遍历必然有序: 下图是一个普通的二叉排序树: 那么二叉排序树就可以在OI的道路上有所应用,当然以一些小牛的本领,自然只能够使用其排序,毕竟这只是二叉排序树浅讲……所以我原创 2017-07-26 15:02:36 · 491 阅读 · 0 评论 -
湖南长沙湖南长沙长郡中学长郡中学——循环简单普及题开业了开业了!
循环专题练习1、给出一个正整数,求它是几位数,并从个位开始分别打印出各位上的数字。2、编写程序,判断任一大于2的整数是质数还是合数。3、编写程序输入一系列整数,用0作结束标志,统计其中有多少个整数,多少个负数。4、编写程序,找出被2、3、5除余数都为1的前10个数5、Fibonacci数列问题:数列的头两个数分别为0,1,从第三个数开始,每个数皆为它的前面两个数之和,即:0,1,1,2,3,5,…原创 2016-11-03 19:40:46 · 812 阅读 · 0 评论 -
USACO checker Challenge 跳棋的挑战
检查一个如下的6 x 6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子。 1 2 3 4 5 61 | | O | | | | |2 | | | | O | | |3 | | | | | | O |4 | O | | | | | |5 | | | O | | | |6 | | | | | O | |上面的布局可以原创 2017-06-11 22:14:08 · 852 阅读 · 0 评论 -
USACO Score Inflation 总分
学生在竞赛中的得分越多我们越高兴。我们试着设计我们的竞赛以便人们能尽可能的多得分,这需要你的帮助。我们可以从几个种类中选取竞赛的题目,这里的一个"种类"是指一个竞赛题目的集合,解决集合中的题目需要相同多的时间并且能得到相同的分数。你的任务是写一个程序来告诉职员,应该从每一个种类中选取多少题目,使得解决题目的总耗时在竞赛规定的时间里并且总分最大。输入包括竞赛的时间M(1 <= M <= 10,00原创 2017-06-11 22:22:06 · 659 阅读 · 0 评论 -
USACO Healthy Holsteins 健康的好斯坦奶牛
农民JOHN以拥有世界上最健康的奶牛为骄傲。他知道每种饲料中所包含的的牛所需的最低的维他命量是多少。请你帮助农夫喂养他的牛,以保持他们的健康,使喂给牛的饲料的种数最少。给出牛所需的最低的维他命,输出喂给牛需要哪些种类的饲料? 给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少。维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解。INPUT FORMAT原创 2017-06-11 22:25:14 · 657 阅读 · 0 评论 -
USACO Overfencing 穿越栅栏
农夫John 在外面的田野上搭建了一个巨大的用栅栏围成的迷宫。幸运的是,他在迷宫的边界上留出了两段栅栏作为迷宫的出口。更幸运的是,他所建造的迷宫是一个“完美的”迷宫:即你能从迷宫中的任意一点找到一条走出迷宫的路。给定迷宫的宽W(1<=W<=38)及长H(1<=H<=100)。2*H+1行,每行2*W+1的字符以下面给出的格式表示一个迷宫.然后计算从迷宫中最“糟糕”的那一个点走出迷宫所需的步数。(即使原创 2017-06-11 22:28:27 · 858 阅读 · 1 评论 -
6.6解题报告
这次的题目分为4题,解题报告如下(按难度排序): 1.checker Challenge 跳棋的挑战 2.Score Inflation 总分 3.Healthy Holsteins 健康的好斯坦奶牛 4.Overfencing 穿越栅栏原创 2017-06-11 22:08:39 · 303 阅读 · 0 评论 -
温习(一)——快速幂
快速幂,是属于分治的一类习题,其思想如同分治,就是分而治之,所以看到题目的大数据,就要思考如何将大问题拆分成若干个相同解法的小问题,所以推导公式:(a^b)%k=a^(b/2)*a^(b/2)*a(b%2) 所以,这就是这道题目的一般性推导公式,这时程序就写出来了#include<stdio.h>#include<stdlib.h>#include<string.h>#include<m原创 2017-07-04 16:44:27 · 292 阅读 · 0 评论 -
数据结构(二)——队列
一、队列定义:队列是限定在一端进行插入,另一端进行删除特殊线性表。二、队列基本操作:入队出队三、队列例题: 1.例1:舞伴配对问题: 分析:这一题是一道经典的取模运算,每一次将编号往前加一位,到达n就取模。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int main(){ int原创 2017-07-05 09:16:46 · 455 阅读 · 0 评论 -
树状数组
树状数组是一个神奇的东西,它比线段树的代码更加简洁而有效。 1.基本概念——参见百度 2.基本操作: (1):lowbit(极为有趣):设节点编号为x,那么这个节点管辖的区间为2^k(其中k为x二进制末尾0的个数)个元素。因为这个区间最后一个元素必然为Ax, 所以很明显:Cn = A(n – 2^k + 1) + … + An 有了这个结论,我们就可以通过二进制来编写一段管辖范围的代码:i原创 2017-07-05 11:43:35 · 265 阅读 · 0 评论 -
矩阵快速幂
矩阵快速幂是一个很神奇的东西,你能够运用它来完成一些普通递推式无法完成的任务,当然了解矩阵快速幂之前,我们要先知道什么是矩阵乘法:矩阵乘法:基本规则:当且仅当两个矩阵的元素个数为n*m和m*k(即前一个矩阵的列与后一个矩阵的行要相等)工作方法:矩阵乘法实现代码如下:#include<bits/stdc++.h>const int Mod=1000000000+7;int n,m,l,p;st原创 2017-07-16 15:26:33 · 461 阅读 · 2 评论 -
并查集(题解)
这里是练习并查集的一些题目和代码: 1.POJ1611#include<iostream>#include<stdio.h>#include<stdlib.h>using namespace std;int f[100010];int gi(){ char c=getchar();int f=1,sum=0; while((c>'9' || c<'0') && c!='-原创 2017-07-30 16:11:30 · 349 阅读 · 0 评论 -
堆
堆是一棵完全二叉树,何为完全二叉树?参见。 有了这个定义,我们就可以将堆分成两种,一个叫小根堆,另一个叫大根堆,顾名思义,小根堆就是堆最小,大根堆就是根最大。 堆的性质:堆具有所有完全二叉树的性质堆的左右子树也是一个堆。 这里我们引入一个例题:【模板】堆,这一道题目就是一道裸题,很容易想到使用堆,那么堆有什么基本操作?#include<bits/stdc++.h>using names原创 2017-07-18 17:07:03 · 358 阅读 · 0 评论 -
【洛谷】P1626象棋比赛
题目描述有N个人要参加国际象棋比赛,该比赛要进行K场对弈。每个人最多参加两场对弈,最少参加零场对弈。每个人都有一个与其他人不相同的等级(用一个正整数来表示)。在对弈中,等级高的人必须用黑色的棋子,等级低的人必须用白色的棋子。每个人最多只能用一次黑色的棋子和一次白色的棋子。为增加比赛的可观度,观众希望K场对弈中双方的等级差的总和最小。比如有7个选手,他们的等级分别是30,17,26,41,19,38,原创 2017-08-02 23:01:28 · 1337 阅读 · 1 评论 -
[HDU]1520 Anniversary party
这道题目其实就是一个裸的树形DP,和洛谷P1352 没有上司的舞会一模一样,只是要加一个读入判断罢了[英文不好导致错了3回,每次都是Wrong Answer,就是没有加这个判断!!!]#include<bits/stdc++.h>using namespace std;int dp[6010][2],fa[6010],v[6010],n;void tree_dp(int i){ in原创 2017-09-01 23:12:33 · 353 阅读 · 0 评论