YbtOJ
SSL_lyw
蒟蒻中学生一枚
弱弱弱弱弱弱到不行的菜鸡
展开
-
【ybtoj】逆序对
逆序对题目描述解题思路将a数组离散化Code#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int n, tot;int a[1000100], p[1001000], c[1000100];void lsh(){ for(int i=1; i<=n; i++) p[i]=a[i]; sort(p+1, p+1+n); tot=uni原创 2022-02-18 18:47:17 · 262 阅读 · 0 评论 -
【ybtoj】重复子串
【ybtoj】重复子串题目描述样例输入abcdaaaaababab.样例输出143解题思路这道题的数据规模很大,直接暴力会超时,find函数也会超时,只能使用KMP算法代码#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;char s[10000005];int len, p[1000原创 2021-12-25 08:39:31 · 405 阅读 · 0 评论 -
【ybtoj】单源最短路径
【ybtoj】单源最短路径题目描述样例输入4 6 11 2 22 3 22 4 11 3 53 4 31 4 4样例输出0 2 4 3解题思路dij加上堆优化,在随机数据下可以考虑SPFA,但在构造数据下还是用dij比较稳。代码#include<iostream>#include<cstring>#include<cstdio>#include<queue>#define pa pair<int,int>原创 2021-12-18 09:02:42 · 213 阅读 · 0 评论 -
【ybtoj】新的开始
【ybtoj】新的开始题目描述发展采矿业当然首先得有矿井,小 F 花了上次探险获得的千分之一的财富请人在岛上挖了n口矿井,但他似乎忘记考虑矿井的供电问题……为了保证电力的供应,小 F 想到了两种办法:在这一口矿井上建立一个发电站,费用为v(发电站的输出功率可以供给任意多个矿井)。将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为p。小 F 希望你帮他想出一个保证所有矿井电力供应的最小花费。输入格式输出格式输出仅一个整数,表示让所有矿井获得充足电能的最小花费。样例输入4 5原创 2021-08-08 19:54:21 · 212 阅读 · 0 评论 -
【ybtoj】繁忙都市
繁忙都市题目描述城市 C 是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市 C 的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向的,且把所有的交叉路口直接或间接地连接起来。每条道路都有一个分值,分值越小表示这个道路越繁忙,越需要进行改造。但是市政府的资金有限,市长希望进行改造的道路越少越好,于是他提出下面的要求:1.改造的那些道路能够把所有的交叉路口直接或间接地连通起来。2.在满足要求1原创 2021-08-08 19:36:58 · 138 阅读 · 0 评论 -
【ybtoj】银河英雄传说
【ybtoj】银河英雄传说题目描述解题思路这是带边权的并查集。用并查集维护战舰是否在同一列,以每一列的第一艘战舰作为集合代表,用一个dis数组记录边权。Code#include <iostream>#include <cstdio>#include <cmath>using namespace std;int n, x, y, xx, yy, fa[50010], num[50010], dis[50010];char c;int find(i原创 2021-08-08 16:08:27 · 113 阅读 · 0 评论 -
【ybtoj】并查集
【模板】并查集题目描述有n个元素,你需要完成集合的合并和判断两个元素是否在同一集合中这两种操作。输入格式第一行包含两个整数n,m,表示共有n个元素和m次操作。接下来m行,每行包含三个整数zi,xi,yiz_i,x_i,y_izi,xi,yi.当zi=1z_i=1zi=1时,讲xix_ixi与yiy_iyi所在的集合合并。当zi=2z_i=2zi=2时,判断xix_ixi与yiy_iyi是否在同一集合内,是的话输出“Y”,否则输出“N”。输出格式对于每一个zi=2z_i=2zi原创 2021-08-08 15:01:39 · 208 阅读 · 0 评论 -
[ybtoj]前缀统计
前缀统计题目描述样例输入3 2abbcabcabcefg样例输出20数据范围解题思路字典数模版Code#include<iostream>#include<cstdio>using namespace std;int n,m,sum,c[1000005],t[1000005][30];string s; void insert(){ int o=0,len=s.size(); for(int i=0;i<len;i++)原创 2021-07-11 19:28:51 · 138 阅读 · 0 评论 -
【ybtoj】移位包含
移位包含题目描述对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如 CDAA 是由 AABCD 两次移位后产生的新串 BCDAA 的子串,而 ABCD 与 ACBD 则不能通过多次移位使得其中一个字符串是新串的子串。输入格式一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字。输出格式如果一个字符串是另一字符串通过若干次循环移位产生的新原创 2021-07-08 08:22:50 · 129 阅读 · 0 评论 -
【ybtoj】数字反转
数字反转题目描述给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。输入格式输入共1行,一个整数N。输出格式输出共1行,一个整数,表示反转后的新数。解题思路我用了两种方法:第一种不用字符串,不需要处理首位是0。第二种是用字符串,需要处理首位是0的情况。注意,两种都需要预处理负数的情况。(太水了吧 )code第一种方法#include<iostream>#include&l原创 2021-06-19 08:46:59 · 112 阅读 · 0 评论 -
【ybtoj】荆轲刺秦王
荆轲刺秦王题目描述输入格式第一行五个整数n,m,c1,c2,dn,m,c_1,c_2,dn,m,c1,c2,d,代表地图的大小为n*m隐身的使用限制次数为c1c_1c1,瞬移的使用次数为c2c_2c2,和一次瞬移的距离d。接下来n行,每行m个元素。每个字符为“S”或“T”或“.”或一个正整数ai,ja_i,_jai,j代表一个格点,具体含义详见题目描述。输出格式若荆轲无法到达秦王所在点,则输出一行一个 -1。否则输出一行三个整数t,u1,u2t,u_1,u_2t,u1,u2原创 2021-06-19 08:17:16 · 196 阅读 · 0 评论 -
【ybtoj】立体推箱子
立体推箱子题目来源解题思路这道题有点恶心,主要是长方体的状态难处理,你要考虑它是站着还是躺着,而且躺着还分竖着躺和横着躺,卡在这里很久。后来豁然开朗,用一个t来表示长方体的状态,t=0表示站立在(x,y)上,t=1表示横着躺,右半部分在(x,y)上,t=2表示竖着躺,下半部分在(x,y)上。接下来就直接BFS就好了Code#include<cstdio>#include<cstring>using namespace std;int n,m,x1,y1,px[2500原创 2021-06-13 15:31:32 · 208 阅读 · 0 评论 -
【ybtoj】山峰和山谷
山峰和山谷题目描述给定一个n*n的网格状地图,每个方格(i,j)有一个高度wi,jw_i,_jwi,j。如果两个方格有公共顶点,则它们是相邻的。定义山峰山谷如下:均由地图上的一个联通块组成。所有方格高度都相同。周围的方格(即不属于山峰或山谷但与山峰或山谷相邻的格子)高度均大于山谷的高度,或小于山峰的高度。求地图内山峰和山谷的数量。特别的,如果整个地图方格的高度均相同,则整个地图即是一个山谷,也是一个山峰。输入格式第一行一个正整数n,表示地图的大小。接下来n行,每行n个整数表示地图。原创 2021-06-13 08:40:58 · 222 阅读 · 0 评论 -
【ybtoj】走迷宫
走迷宫题目描述现在有一个N*N的地图,问从起点(sx,sy)(sx,sy)(sx,sy)到(tx,ty)(tx,ty)(tx,ty)最少要走几步。输入格式输出格式仅有一个数,表示答案。样例输入501111001111000111101111001 1 5 5样例输出8解题思路考虑BFS(广度优先搜索)。可以用dx,xy等常数数组预先保存移动一步坐标的变化情况,简化代码Code#include <cstdio>#include <iostre原创 2021-06-12 19:38:52 · 223 阅读 · 0 评论 -
【ybtoj】虫食算
虫食算题目来源解题思路这道题其实和数独游戏差不多,但是它的合法条件更复杂,要符合加法运算。同样是要剪枝Code#include<cstring>#include<cstdio>using namespace std;int n,tot,c[30],cc[30],ans[30];char a[30],s[5][30];bool check(){ int o=0; for(int i=n;i>=1;i--) { int x=ans[s[1][i]原创 2021-06-12 19:03:13 · 155 阅读 · 0 评论 -
【ybtoj】数独游戏
数独游戏题目描述数独是一种传统益智游戏,你需要把99的数独补充完整,使得图中每行、每列、每个33的九宫格内数字1~9均恰好出现一次。请编写一个程序填写数独。输入格式输入包含多组测试用例。每个测试用例占一行,包含81个字符,表达数独的81个格内数据(顺序总体由上到下,同行由左到右)。每个字符都是一个数字或一个 .(表示尚未填充)。您可以假设输入中的每一个谜题都只有一个解决方案。文件结尾处包含单词 end 的单行,表示输入结束。输出格式每个测试用例,输出一行数据,表示填充完全后的数独。原创 2021-06-12 18:57:34 · 281 阅读 · 0 评论 -
【ybtoj】拔河比赛
拔河比赛题目描述学校组织了一场拔河比赛,为了拔河比赛的公平性,老师提出以下要求:(1)拔河比赛两边人数最多相差1(2)每个队员都有体重,我们要使两边比赛的人体重和相差最小。现在有N个队员,老师想让你帮忙分配,并且把分配后两边体重和只差最小值输出。输入格式首先输入T,表示有T组样例。每个样例:首先输入人数N,占一行。后面跟着N个数,表示N个人的体重W1W_1W1 ~ WnW_nWn。输出格式每组数据输出一行,一个整数表示两边体重只差的绝对值。样例输入1355 50 100原创 2021-06-12 17:02:14 · 1011 阅读 · 0 评论 -
【ybtoj】最大均值
最大均值题目描述给定正整数序列A,求一个平均数最大的,长度不小于L的(连续的)子段。输入格式第一行两个整数N和L。接下来N行,每行输入一个正整数AiA_iAi。输出格式输出一个整数,表示平均值的最大值乘以1000再向下取整之后得到的结果。输入样例10 66 4210385941输出样例6500解题思路注意到答案具有单调性,考虑二分答案,判定“是否存在一个长度不小于L的子串,平均值不小于mid”。Code#include <iostream>原创 2021-06-12 16:43:41 · 299 阅读 · 0 评论 -
【ybtoj】防具布置
防具布置题目描述输入格式第一行是一个整数T,表示有T组互相独立的测试数据。每组数据的第一行是一个整数N。之后N行,每行三个整数Si,Ei,DiS_i,E_i,D_iSi,Ei,Di,代表第i组防具的三个参数,数据用空格隔开。输出格式对于每组测试数据,如果防线没有破绽,输出一行 There’s no weakness.。否则在一行内输出两个空格分隔的整数P和C,表示在位置P有C个防具。当然C应该是奇数。输入样例321 10 12 10 121 10 1 1 10 1原创 2021-06-12 15:22:21 · 147 阅读 · 1 评论 -
【ybtoj】数列分段
数列分段题目描述对于给定的一个长度为N的正整数数列A,现在将其分成M段,并要求每段连续,且每段和的最大值最小。输入格式第1行包含两个正整数N,M。第2行包含N个空格隔开的非负整数AiA_iAi。输出格式仅包含一个正整数,即每段和最大值最小为多少。输入样例5 34 2 4 5 1输出样例6解题思路题目描述中有类似“最大值最小”的含义,我们马上就知道这答案具有单调性。设最优解为S,因为S的最优性,如果要求每段和都<S,则肯定不能分成连续的M段,需要分成更多连续段。如果每原创 2021-06-12 08:44:55 · 428 阅读 · 0 评论 -
【ybtoj】国王游戏
国王游戏题目描述恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这n位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少,注意,国王的位置始终原创 2021-06-11 20:32:10 · 134 阅读 · 0 评论 -
【YbtOJ】数的划分
数的划分题目描述将整数nnn分成kkk份,且每份不能为空,任意两个方案不相同(不考虑顺序)。例如:n=7,k=3n=7,k=3n=7,k=3,下面三种分法被认为是相同的:1,1,5; 1,5,1; 1,1,5.问有多少种不同的分法。输入格式两个整数,nnn和kkk 。输出格式输出不同的分法数。输入样例7 3输出样例4样例说明四种分法为:1,1,5; 1,2,4; 1,3,3; 2,2,3.思路设f(i,j)f(i,j)f(i,j)表示整数iii分成jjj风的方案数,显原创 2021-03-20 07:29:59 · 655 阅读 · 0 评论 -
【YbtOJ】基础算法第一章例题2 奇怪汉诺塔
奇怪汉诺塔题目描述汉诺塔问题,条件如下:这里有 A、B、C 和 D 四座塔。这里有 个圆盘, 的数量是恒定的。每个圆盘的尺寸都不相同。所有的圆盘在开始时都堆叠在塔 A 上,且圆盘尺寸从塔顶到塔底逐渐增大。我们需要将所有的圆盘都从塔 A 转移到塔 D 上。每次可以移动一个圆盘,当塔为空塔或者塔顶圆盘尺寸大于被移动圆盘时,可将圆盘移至这座塔上。 请你求出将所有圆盘从塔 A 移动到塔 D,所需的最小移动次数是多少。输入样例无输入输出格式对于每一个整数n(1<=n<=12)原创 2021-02-13 15:42:11 · 187 阅读 · 0 评论 -
[YbtOJ]基础算法第一章例题1错排问题
错排问题题目描述输入格式一行整数n输出格式一个整数,表示答案输入样例2输出样例1解题思路这道题是一道递推,我们先来求递推式:设f(n)f(n)f(n)表示n个数的合法排列个数第一步,我们先考虑第n个元素,将其放在位置k上,一共有n-1中放法(k≠n)(k≠n)(k=n)第二步,考虑第k个元素,这时候有两种可能:(1)把第k个元素放在位置n,那么对于除n外的n-1个元素,由于第k个元素放在了位置n,所以剩下n-2个元素的错排,有f(n-2)种放法。(2)不把第k个元原创 2021-02-13 15:04:38 · 191 阅读 · 0 评论