程序设计思维与实践blog
白菜干条
这个作者很懒,什么都没留下…
展开
-
csp201809-3 元素选择器
题意:思路:这题的底层是一棵树,可以建立一棵树进行解题,但是如果仅仅用来求某些结点的祖先以及每个结点的信息,只需要定义结点结构体node,并且声明大小为 maxN 的 Node 数组,node中包含以下信息:par - 对应的父亲结点在输入数据中的第几行num - 本身结点在输入数据中的第几行level - 对应在第几层,通过一行数据中的前驱符号"…"来判断tag - 对应结点标签id - 对应结点id其中num、level、tag 以及 id 都可以通过输入直接得到,只需要对字符串原创 2020-06-15 15:52:21 · 182 阅读 · 0 评论 -
csp模测 - week16
题一:TT数鸭子题意:题目描述 这一天,TT因为疫情在家憋得难受,在云吸猫一小时后,TT决定去附近自家的山头游玩。TT来到一个小湖边,看到了许多在湖边嬉戏的鸭子,TT顿生羡慕。此时他发现每一只鸭子都不 一样,或羽毛不同,或性格不同。TT在脑子里开了一个map<鸭子,整数> tong,把鸭子变成了 一些数字。现在他好奇,有多少只鸭子映射成的数的数位中不同的数字个数小于k。输入描述:输入第一行包含两个数n,k,表示鸭子的个数和题目要求的k。接下来一行有n个数,aia_iai,每个数表示原创 2020-06-13 17:46:22 · 188 阅读 · 0 评论 -
csp模测 - week12
题一:瑞神的序列题意:思路:需要求出数列有几段,只需要遍历数列,每次判断与前一个数是否相同,若是不同则给 ans 加上1,遍历完成后得到的ans就是答案,输出即可。代码:#include <iostream>using namespace std;int n;int a[1010];int main(){ cin >> n; for (int i = 0; i < n; i++){ cin >> a[i]; } int ans =原创 2020-06-13 14:33:30 · 133 阅读 · 0 评论 -
week14 - 猫睡觉问题
题意:众所周知,TT家里有一只魔法喵。这只喵十分嗜睡。一睡就没有白天黑夜。喵喵一天可以睡多次!!每次想睡多久就睡多久╭(╯^╰)╮喵睡觉的时段是连续的,即一旦喵喵开始睡觉了,就不能被打扰,不然喵会咬人哒[○・`Д´・ ○]可以假设喵喵必须要睡眠连续不少于 A 个小时,即一旦喵喵开始睡觉了,至少连续 A 个小时内(即A*60分钟内)不能被打扰!现在你知道喵喵很嗜睡了,它一天的时长都在吃、喝、拉、撒、睡,换句话说要么睡要么醒着滴!众所周知,这只魔法喵很懒,和TT一样懒,它不能连续活动超过 B 个小时。原创 2020-06-12 20:20:39 · 101 阅读 · 0 评论 -
csp201609-3-炉石传说
题意:思路:对于英雄以及随从,可以用一个结构体character进行存储,先手和后手方用一个二维数组进行记录生命值以及攻击力,对于召唤随从以及进攻,分别定义一个函数进行实现。定义一个int型变量,用来维护当前的操作是先手方还是后手方,分别用0和1表示。对于召唤操作summon,只需将增加的随从在数组中插入并移动右边部分随从即可。对于进攻操作attack,只需将进攻对应的进攻方和防守方的血量进行变化,然后判断两者是否有死亡,若是有死亡,则需要删除数组中的元素,并移动右边部分随从。代码:原创 2020-06-07 12:49:45 · 99 阅读 · 0 评论 -
CSP201604-3 路径分析
题面:思路:题目乍一看,是一道关于树的问题,但是看完要求,发现其实和树没什么关系,这题的只需要对字符串进行标准化,根据要求对每个字符串得到一定格式的输出。首先有关于绝对路径和相对路径的要求,若不是以 / 符号开头,给字符串加上该符号,并且加上当前位置也就是最初输入的字符串。然后对于连续出现超过一次的 / 符号,删去重复出现的部分,仅保留一个 / 符号。对于 . 符号,仅出现在这种情况 /./,可以直接删掉一个 / 和一个 .。最后,对于 … 符号,把出现在最头部分的删去,若出现在中间,再删原创 2020-06-06 14:43:17 · 85 阅读 · 0 评论 -
week11 - B - 必做题11 - 2
题意:蒜头君的班级里有 n2n^2n2 个同学,现在全班同学已经排列成一个 n∗n 的方阵,但是老师却临时给出了一组新的列队方案为了方便列队,所以老师只关注这个方阵中同学的性别,不看具体的人是谁这里我们用 0 表示男生,用 1 表示女生现在蒜头君告诉你同学们已经排好的方阵是什么样的,再告诉你老师希望的方阵是什么样的他想知道同学们已经列好的方阵能否通过顺时针旋转变成老师希望的方阵1、不需要旋转则输出 02、顺时针旋转 90° 则输出 13、顺时针旋转 180° 则输出 24、顺时针旋转 2原创 2020-05-15 13:36:14 · 122 阅读 · 0 评论 -
week11 - A - 必做题 11 - 1
题意:蒜头君从现在开始工作,年薪 N 万。他希望在蒜厂附近买一套 60 平米的房子,现在价格是 200万。假设房子价格以每年百分之 K 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 N 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 N 万,房价 200 万)输入格式一行,包含两个正整数 N(10≤N≤50),K(1≤K≤20),中间用单个空格隔开。输出格式如果在第 20 年或者之前就能买下这套房子,则输出一个整数 M,表示最早需要在第 M 年能买下;否则输出"Imposs原创 2020-05-15 13:28:29 · 181 阅读 · 0 评论 -
week10 - C - 拿数问题
题意:YJQ 上完第10周的程序设计思维与实践后,想到一个绝妙的主意,他对拿数问题做了一点小修改,使得这道题变成了 拿数问题 II。给一个序列,里边有 n 个数,每一步能拿走一个数,比如拿第 i 个数, Ai = x,得到相应的分数 x,但拿掉这个 Ai 后,x+1 和 x-1 (如果有 Aj = x+1 或 Aj = x-1 存在) 就会变得不可拿(但是有 Aj = x 的话可以继续拿这个 x)。求最大分数。输入要求:第一行包含一个整数 n (1 ≤ n ≤ 10510^5105),表示数字里的元原创 2020-05-15 13:20:52 · 122 阅读 · 0 评论 -
week10 - B - LIS&LCS
题意:东东有两个序列A和B。他想要知道序列A的LIS和序列AB的LCS的长度。注意,LIS为严格递增的,即a1<a2<…<ak(ai<=1,000,000,000)。输入要求:第一行两个数n,m(1<=n<=5,000,1<=m<=5,000)第二行n个数,表示序列A第三行m个数,表示序列B输出要求:输出一行数据ans1和ans2,分别代表序列A的LIS和序列AB的LCS的长度输入样例:5 51 3 2 5 42 4 3 1 5输出原创 2020-05-15 13:12:22 · 121 阅读 · 0 评论 -
week10 - A - 签到题
题意:东东在玩游戏“Game23”。在一开始他有一个数字n,他的目标是把它转换成m,在每一步操作中,他可以将n乘以2或乘以3,他可以进行任意次操作。输出将n转换成m的操作次数,如果转换不了输出-1。输入要求:输入的唯一一行包括两个整数n和m(1<=n<=m<=5*10810^8108)。输入样例:120 51840输出要求:输出从n转换到m的操作次数,否则输出-1。输出样例:7思路:先计算m是否能整除n,若不能整除,直接输出-1,若能整除,则对整除得到的商进行除以3原创 2020-05-15 13:02:18 · 111 阅读 · 0 评论 -
week10 - 限时大模拟 - 团队聚会
题意:TA团队每周都会有很多任务,有的可以单独完成,有的则需要所有人聚到一起,开过会之后才能去做。但TA团队的每个成员都有各自的事情,找到所有人都有空的时间段并不是一件容易的事情。给出每位助教的各项事情的时间表,你的任务是找出所有可以用来开会的时间段。输入格式第一行一个数T(T≤100),表示数据组数。对于每组数据,第一行一个数m(2 ≤ m ≤ 20),表示TA的数量。对于每位TA,首先是一个数n(0≤ n≤100),表示该TA的任务数。接下来n行,表示各个任务的信息,格式如下YYYY MM原创 2020-05-15 09:41:02 · 119 阅读 · 0 评论 -
week9 - C - 签到题
题意:SDUQD 旁边的滨海公园有 x 条长凳。第 i 个长凳上坐着 a_i 个人。这时候又有 y 个人将来到公园,他们将选择坐在某些公园中的长凳上,那么当这 y 个人坐下后,记k = 所有椅子上的人数的最大值,那么k可能的最大值mx和最小值mn分别是多少。Input第一行包含一个整数 x (1 <= x <= 100) 表示公园中长椅的数目第二行包含一个整数 y (1 <= y <= 1000) 表示有 y 个人来到公园接下来 x 个整数 a_i (1<=a_i&l原创 2020-05-15 09:32:54 · 73 阅读 · 0 评论 -
week9 - B - 东东学打牌
题意:最近,东东沉迷于打牌。所以他找到 HRZ、ZJM 等人和他一起打牌。由于人数众多,东东稍微修改了亿下游戏规则:所有扑克牌只按数字来算大小,忽略花色。每张扑克牌的大小由一个值表示。A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K 分别指代 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13。每个玩家抽得 5 张扑克牌,组成一手牌!(每种扑克牌的张数是无限的,你不用担心,东东家里有无数副扑克牌)理所当然地,一手牌是有不同类型,并且有大小原创 2020-05-15 09:23:56 · 110 阅读 · 0 评论 -
week9 - A - 目录管理器
题意:自己写一个目录管理器,要求可以进行以下的操作。 命令 类型 实现 说明 MKDIR s 操作 在当前目录下创建一个子目录 s,s 是一个字符串 创建成功输出 "OK";若当前目录下已有该子目录则输出 "ERR" RM s 操作 ...原创 2020-05-15 09:14:19 · 102 阅读 · 0 评论 -
week8 - C - 班长竞选(求强连通分量、kosaraju算法应用)
题意:大学班级选班长,N 个同学均可以发表意见 若意见为 A B 则表示 A 认为 B 合适,意见具有传递性,即 A 认为 B 合适,B 认为 C 合适,则 A 也认为 C 合适 勤劳的 TT 收集了M条意见,想要知道最高票数,并给出一份候选人名单,即所有得票最多的同学,你能帮帮他吗?、输入格式:本题有多组数据。第一行 T 表示数据组数。每组数据开始有两个整数 N 和 M (2 <= ...原创 2020-04-17 13:49:19 · 119 阅读 · 0 评论 -
week8 - B - 猫猫向前冲(拓扑排序的应用)
题意:有一个比赛,每次由两个参赛人员进行比赛,现知道每场比赛的结果,求字典序最小的名次序列。输入要求:输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示猫猫的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即编号为 P1 的猫猫赢了编号为 P2 的猫猫。输出要求:给出一个符合要求的排名。输出时猫猫的编号之间有空格,...原创 2020-04-17 13:29:06 · 154 阅读 · 0 评论 -
week8-A-区间选点(差分约束的应用)
题意:给定一个数轴上的 n 个区间,要求在数轴上选取最少的点使得第 i 个区间 [aia_iai, bib_ibi] 里至少有 cic_ici 个点。输入格式:输入第一行一个整数 n 表示区间的个数,接下来的 n 行,每一行两个用空格隔开的整数 a,b 表示区间的左右端点。1 <= n <= 50000, 0 <= ai <= bi <= 50000 并且...原创 2020-04-17 13:18:23 · 106 阅读 · 0 评论 -
csp模测week8
题一:HRZ的序列题意:给出一串序列,求有没有一个数K,使得,序列中的一些数加上K,一些数减去K,一些数不变,使得整个序列所有数相等。输入格式:输入第一行是一个正整数 t 表示数据组数。 接下来对于每组数据,输入的第一个正整数 n 表示序列 a 的长 度,随后一行有 n 个整数,表示序列 a。输出格式:输出共包含 i 行,每组数据输出一行,如果存在这样的 K,输出“YES”,否则输出“...原创 2020-04-17 12:08:25 · 163 阅读 · 0 评论 -
week7-C-TT的美梦(spfa应用)
题意:有N个城市,编号1~N,每个城市有一个权值,从城市A前往城市B需要缴纳税款(wei(B)-wei(A))^3,求:从城市1出发,前往每个城市需要缴纳的税款分别是多少。输入要求:第一行输入 T,表明共有 T 组数据。(1 <= T <= 50)对于每一组数据,第一行输入 N,表示点的个数。(1 <= N <= 200)第二行输入 N 个整数,表示 1 ~ N...原创 2020-04-17 11:50:34 · 118 阅读 · 0 评论 -
week7-B-TT的旅行日记(Dijkstra算法的应用)
题意:要从一个地方A到达另一个地方B,可以乘坐经济线和商业线,商业线最多只能坐一次,计算从A到B需要的最短时间。输入要求:输入包含多组数据。每组数据第一行为 3 个整数 N, S 和 E (2 ≤ N ≤ 500, 1 ≤ S, E ≤ 100),即猫猫快线中的车站总数,起点和终点(即喵星机场所在站)编号。下一行包含一个整数 M (1 ≤ M ≤ 1000),即经济线的路段条数。接下...原创 2020-04-17 11:09:40 · 106 阅读 · 0 评论 -
A - TT 的魔法猫(Floyd算法应用)
题意:有一个比赛,一共 N 个选手,已知 M 种胜负关系,且胜负关系可以传递(若 A 胜 B,B 胜 C,则 A 胜 B)。求:有几对选手的胜负关系无法预测。输入要求:第 1 行:输入数据组数。每组数据第 1 行:输入两个数 N 和 M,N 为选手个数,M 为已知胜负关系个数;每组数据第 2 行至第 M + 1 行:输入两个数 A,B,表示 A 胜 B。输出要求:每组数据输出一行一个...原创 2020-04-06 16:03:54 · 118 阅读 · 0 评论 -
csp-2015-12-3 画图
题意:本题要求编程实现一个用 ASCII 字符来画图的程序,支持以下两种操作:画线:给出两个端点的坐标,画一条连接这两个端点的线段。简便起见题目保证要画的每条线段都是水平或者竖直的。水平线段用字符 -来画,竖直线段用字符 | 来画。如果一条水平线段和一条竖直线段在某个位置相交,则相交位置用字符 + 代替。填充:给出填充的起始位置坐标和需要填充的字符,从起始位置开始,用该字符填充相邻...原创 2020-04-06 14:30:14 · 95 阅读 · 0 评论 -
D-数据中心--CSP201812-4
题意:有一个加权无向图,求解一颗生成树,使得最大边权最小。输入要求:第一行输入一个正整数 n,n<=5e4第二行输入一个正整数 m,m<=1e5第三行输入一个正整数root,root<=5e4第四行至第 3+m 行每行包含 3 个整数 viv_ivi,uiu_iui,tit_iti,表示viv_ivi和uiu_iui间的边权为tit_iti,保证viv_i...原创 2020-04-03 14:44:08 · 81 阅读 · 0 评论 -
C - 掌握魔法の东东(最小生成树的应用)
题意:有 n 块田,编号 1~n,需要灌溉这些田,可以直接消耗一定的能量在一块田上直接灌溉,也可以消耗一定的能量在两块田之间建立传送门,使两块田的水可以共用。直接灌溉消耗的能量是 Wi,i是农田的编号(1<=Wi<=1e5),建立传送门消耗的能量是 Pij,i、j是农田编号(1<= Pij <=1e5, Pij = Pji, Pii =0),求灌溉这些农田的最小消耗。...原创 2020-04-03 14:30:21 · 70 阅读 · 0 评论 -
B-戴好口罩(并查集的应用)
题意:如果一个感染者走入一个群体,那么这个群体需要被隔离!小A同学被确诊为新冠感染,并且没有戴口罩!!!!!!需要尽快找到所有和小A同学直接或者间接接触过的同学,将他们隔离,防止更大范围的扩散。众所周知,学生的交际可能是分小团体的,一位学生可能同时参与多个小团体内。输入要求:多组数据。每组数据第一行为两个整数 n 和 m(n = m = 0表示输入结束,不需要处理),n是学生数量,m是...原创 2020-04-03 14:02:09 · 85 阅读 · 0 评论 -
A-氪金带东
题意:实验室里原先有一台电脑(编号为 1),最近氪金带师咕咕东又为实验室购置了 N - 1 台电脑,编号为 2 到 N 。每台电脑都用网线连接到一台先前安装的电脑上。但是咕咕东担心网速太慢,他希望知道第i台电脑到其他电脑的最大网线长度,但是可怜的咕咕东在不久前刚刚遭受了宇宙射线的降智打击,请你帮帮他。输入要求:输入文件包含多组测试数据。对于每组测试数据,第一行一个整数N (N <= 1...原创 2020-04-03 13:47:29 · 83 阅读 · 0 评论 -
滑动窗口(单调队列的应用)
题意:有一个长度为 n 的数列和一个大小为 k 的窗口,窗口可以在数列上来回移动。求:窗口在从左往右滑的时候,每次窗口内数的最大值和最小值分别是多少。例如下表中,数列是 [1 3 -1 -3 5 3 6 7],其中 k 等于 3。Window positionMinimum valueMaximum value[1 3 -1] -3 5 3 6 7-1...原创 2020-04-03 13:25:25 · 238 阅读 · 0 评论 -
直方图求最大矩形(单调栈的应用)
题意:给一个直方图,求直方图中最大矩形的面积。例如,下图直方图的高度从左到右分别是2, 1, 4, 5, 1, 3, 3, 他们的宽都是1,其中最大的矩形是阴影部分。输入要求:输入包含多组数据。每组数据先输入一个n(表示直方图中小矩形的个数)且 1 <= n <= 100000,再输入n个数h1h_1h1,…,hnh_nhn,满足 0 <= h1h_1h1 <=...原创 2020-04-03 12:54:37 · 360 阅读 · 0 评论 -
平衡字符串(尺取法)
题意:一个长度为 n 的字符串 s,其中仅包含 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符。如果四种字符在字符串中出现次数均为 n/4,则其为一个平衡字符串。现可以将 s 中连续的一段子串替换成相同长度的只包含那四个字符的任意字符串,使其变为一个平衡字符串,问替换子串的最小长度?如果 s 已经平衡则输出0。输入要求:输入长度为4的倍数的字符串输出要求:输出替换子串的最小长度s...原创 2020-03-24 10:49:44 · 460 阅读 · 0 评论 -
数组区间共同操作(前缀和与差分的应用)
题意:长度为 n 的数组(数组中元素∣ai∣|a_i|∣ai∣≤10610^6106),一共进行 q 次操作,1 ≤ n, q ≤ 2×10510^5105;每次操作给出 L,R,c,表示区间[L, R]中各个数均增加上 c(−10510^5105≤ c ≤10510^5105);求 q 次操作结束后,数组中各个元素值。输入要求:第1行输入数组长度 n 和操作次数 q;第2行...原创 2020-03-23 20:55:28 · 331 阅读 · 0 评论 -
csp模测
A题 咕咕咚的奇遇原创 2020-03-20 12:59:17 · 156 阅读 · 0 评论 -
差值中位数(二分法)
题意给出一个长度为 N 的数组 a,并用这个数组生成一个新数组 ans[i],满足ans[]=abs(a[i]-a[j])(i != j),求出数组 ans 的中位数。输入要求:多组输入,每次输入一个 N ,表示有 N 个数,之后输入一个长度为N的序列 a。输出要求:输出新数组ans的中位数sample input:41 3 2 431 10 2sample output:...原创 2020-03-19 22:51:27 · 2090 阅读 · 0 评论 -
四个数列,求和为零
题意有四个数列A,B,C,D,每个数列都有n个数字。现从四个数列中各取一个数,求:有多少中方案使得4个数的和为0。输入要求:第一行输入n,表示数列中数字个数接下来n行每行四个数,分别表示各数列中的第i个数字输出要求:输出不同组合的个数sample input6-45 22 42 -16-41 -27 56 30-36 53 -37 77-36 30 -75 -4626 ...原创 2020-03-19 22:31:41 · 581 阅读 · 0 评论 -
DDL的恐惧
题意有 n 个作业,每个作业都有自己的 DDL,如果没有在 DDL 前做完这个作业,那么老师会扣掉这个作业的全部平时分。求如何安排做作业的顺序,才能尽可能少扣一点分。输入要求:输入T组测试用例,先输入T,然后每组测试用例以一个正整数N开头,表示作业数量,然后两行,第一行包含N个整数,表示DDL,下一行包含N个整数,表示扣的分。输出要求:每组样例,输出最小的总扣分数,每个测试用例输出用一...原创 2020-03-19 22:18:13 · 153 阅读 · 0 评论