- 博客(43)
- 收藏
- 关注
原创 P2383 狗哥玩木棒
输入文件中的第一行是一个整数 n(1≤n≤10) 表示测试的组数,接下来 n 行表示每组的测试数据。每行的第一个数为 m(4≤m≤20),接下来 m 个数 ai(1≤ai≤1000) 表示木棒的长度。由题目意思可知只有当所有的木棒的和为4的整数倍才能构成正方形 可以用一个数组记录正方形的边长 从大到小枚举小木棒。现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢?狗哥又趁着语文课干些无聊的事了...
2025-05-20 08:47:29
328
原创 P2040 打开所有的灯
这个灯很奇(fan)怪(ren),点一下就会将这个灯和其周围四盏灯的开关状态全部改变。现在你的任务就是就是告诉pmshz要全部打开这些灯。pmshz在玩一个益(ruo)智(zhi)的小游戏,目的是打开九盏灯所有的灯,这样的游戏难倒了pmshz。九个数字,3*3的格式输入,每两个数字中间只有一个空格,表示灯初始的开关状态。1个整数,表示最少打开所有灯所需要的步数。再点一下左上角的灯【1,1】就变成了。点一下最中间的灯【2,2】就变成了。
2025-05-19 11:41:37
349
原创 P1535 [USACO08MAR] Cow Travelling S
设 S 为奶牛在 T 秒内从 (R1,C1) 走到 (R2,C2) 所能选择的路径总数,FJ 希望有一个程序来帮他计算这个值。Farmer John 在某个时刻看见贝茜在位置 (R1,C1),恰好 T(0<T≤15)秒后,FJ 又在位置 (R2,C2) 与贝茜撞了正着。你的任务是计算出,一头在 T 秒内从 (R1,C1) 移动到 (R2,C2) 的奶牛可能经过的路径有哪些。输出从 (R1,C1) 移动到 (R2,C2) 的方案数。
2025-05-19 11:18:25
531
原创 P2052 [NOI2011] 道路修建
/计算每条边的所需要的花费 用当前节点的连通块的点数 - 另外一条边的连通块的点数 的绝对值 * 这条边的权值 如何计算两个连通块的点数之差呢 确定当前连通块的点数cnt[i] 那么另外一个连通块的点数为 n-cnt[i] 那么他们之间的差就是 abs(cnt[i] - (n-cnt[i])) = abs(n-2*cnt[i])由于国家的数量十分庞大,道路的建造方案有很多种,同时每种方案的修建费用难以用人工计算,国王们决定找人设计一个软件,对于给定的建造方案,计算出所需要的费用。
2025-05-14 11:42:26
860
原创 P1330 封锁阳光大学
每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在这些道路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突。//遍历每条边(至少一条染色的边) 如果另外一端没有染色 则染上相反的颜色 如果两端都染色了 判断是否是相同颜色。//本题可以采用染色的思路 如果一条边的一端有河蟹 那么另外端必然没有 而如果一端没有河蟹另外一端一定有。if(col[j]==col[u]) //如果当前河蟹和上一个河蟹颜色相同则失败。
2025-05-14 11:37:29
537
原创 P1032 [NOIP 2002 提高组] 字串变换
/遍历当前字符串的长度 找到子串a[i]next.replace(j,a[i].size(),b[i]);if(str == a[i]) { // 如果字串和变换的串相同 就可以做变换操作。规则的含义为:在 A 中的子串 A1 可以变换为 B1,A2 可以变换为 B2⋯。若在 10 步(包含 10 步)以内能将 A 变换为 B,则输出最少的变换步数;共进行了 3 次变换,使得 A 变换为 B。
2025-05-13 11:48:57
935
原创 P3956 [NOIP 2017 普及组] 棋盘
但这个魔法不能连续使用, 而且这个魔法的持续时间很短,也就是说,如果你使用了这个魔法,走到了这个暂时有颜色的格子上,你就不能继续使用魔法;只有当你离开这个位置,走到一个本来就有颜色的格子上的时候,你才能继续使用这个魔法,而当你离开了这个位置(施展魔法使得变为有颜色的格子)时,这个格子恢复为无色。任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上、下、左、右四个方向前进。= g[a][b]);第一行包含两个正整数 m,n,以一个空格分开,分别代表棋盘的大小,棋盘上有颜色的格子的数量。
2025-05-13 11:44:40
833
原创 P9011 [USACO23JAN] Air Cownditioning II B提交答案加入题单复制题目
第 i 台空调需要花费 mi 单位的金钱来运行 (1≤mi≤1000) ,如果运行,第 i 台空调将牛栏 [ai,bi] 所有牛栏的温度降低 pi(1≤pi≤106)。对于 100% 的数据,1≤N≤20, 1≤M≤10, 1≤ai,bi,si,ti≤100, 1≤ci,pi≤106, 1≤mi≤1000。一种花费最少的可能解决方案是选择那些冷却区间为 [2,9] 、[1,2] 和 [6,9] 的空调,成本为 3+2+5=10 .
2025-05-13 11:29:04
700
原创 P1030 [NOIP 2001 普及组] 求先序排列
/找右子树的根 k+1->结尾都是中序遍历的右子树 后序遍历的从k->结尾-1。//找左子树的根 0->k-1是中序遍历的左子树 k是中序遍历的根节点。(约定树结点用不同的大写字母表示,且二叉树的节点个数 ≤8)。//最后一个字符就是根节点 也就先序遍历的第一个节点。共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
2025-05-13 11:25:50
328
原创 P8662 [蓝桥杯 2018 省 AB] 全球变暖
/如果连通块中有一个岛屿四个方向都是'#' 那么就不会被完全淹没。//st表示当前这个连通块是否会被全部淹没 如果其中有一个点四周全部都是'#'就不会被淹没。照片保证第 1 行、第 1 列、第 N 行、第 N 列的像素都是海洋。请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。
2025-05-12 11:51:41
370
原创 P1460 [USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins
他知道每种饲料中所包含的牛所需的最低的维他命量是多少。请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少。if(check(s) && s < ans){ //如果当前方案可以满足所有的牛需要的维他命最小量 并且种类数量小于当前的种类数量。j++){ //选了x种饲料 st[j]存放的是那种饲料。//记录所选饲料的种类能否满足当前这头牛所需要的最小维他命量。给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少。//存放饲料的种类和每种饲料包含维他命的量。
2025-05-12 11:48:58
795
原创 洛谷 P1440 求m区间内的最小值
一个含有 n 项的数列,求出每一项前的 m 个数到它这个区间内的最小值。若前面的数不足 m 项则从第 1 个数开始,若前面没有数则输出 0。//维护单调队列 队列中的元素单调递增。//队头元素就是最小值。n 行,每行一个整数,第 i 个数为序列中 ai 之前 m 个数的最小值。//hh队头 tt队尾。
2025-05-05 10:10:48
411
原创 洛谷 P1901 发射站
s.empty() && h[s.top()] < h[i]) { //如果当前元素大于栈顶元素 就让栈顶元素出栈 计算发射的能量值。某地有 N 个能量发射站排成一行,每个发射站 i 都有不相同的高度 Hi,并能向两边(两端的发射站只能向一边)同时发射能量值为 Vi 的能量,发出的能量只被两边。第 2 到 N+1 行,第 i+1 行有两个整数 Hi 和 Vi,表示第 i 个发射站的高度和发射的能量值。输出仅一行,表示接收最多能量的发射站接收到的能量值。答案不超过 32 位带符号整数的表示范围。
2025-05-04 22:17:22
180
原创 洛谷 P2866 [USACO06NOV] Bad Hair Day S
/想要找出一头牛可以看见那几头牛比较困难, 我们可以用单调栈来控制当前这头牛可以被几头牛看见 栈中的元素就是可以看见当前牛的个数 只需维护一个单调栈就可以找出所有可以看见当前牛的数量 如果当前牛小于栈顶元素就让他加入栈 否则就计算出当前牛可以被几头牛看见。的第 j 头牛,如果 hi>hi+1,hi>hi+2,⋯,hi>hj,那么认为第 i 头牛可以看到第 i+1 到第 j 头牛。
2025-05-04 22:16:07
434
原创 模拟单调栈
/找到栈中第一个大于当前的数的元素。寻找右边边第一个小于当前数的数。寻找右边边第一个大于当前数的数。寻找左边第一个小于当前数的数。寻找左边第一个大于当前数的数。
2025-05-04 10:24:18
351
原创 P3662 [USACO17FEB] Why Did the Cow Cross the Road II S
给定损坏信号灯的列表,请计算 FJ 需要修复的最少信号灯数量,以便存在至少 K 个连续的信号灯正常工作。//修复的最少信号灯数量,用一个bool数组记录损坏的信号灯,用前缀和数组记录前面有多少个正常的灯,枚举区间K 用区间K中的正常灯的数量加上需要修复灯的数量就是连续K个正常灯的数量#include<iostream>//求出修复的灯数量最少的区间 也就是求出区间中最大的正常灯的数量。请计算需要修复的最少信号灯数量,以便在道路上某处存在一个长度为 K 的连续正常工作信号灯块。
2025-04-23 10:21:08
357
原创 P2697 宝石串
/p数组记录G-R的差是否在数组中出现过 如果出现过就计算他们之间的差距 如果没出现就记录第一次出现的下标,last 用来记录字符串GR的差值 初始化防止负溢出。有一种宝石串,由绿宝石和红宝石串成,仅当绿宝石和红宝石数目相同的时候,宝石串才最为稳定,不易断裂。安安想知道从给定的宝石串中,可以截取一段最长的稳定的宝石串,有多少颗宝石组成。一行一个整数,表示最长的稳定的宝石串有多少颗宝石组成。一行,一个由 G 和 R 组成的字符串。
2025-04-23 10:14:19
386
原创 P1083 [NOIP 2012 提高组] 借教室
在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。面对海量租借教室的信息,我们自然希望编程解决这个问题。我们需要处理接下来 n 天的借教室信息,其中第 i 天学校有 ri 个教室可供租借。共有 m 份订单,每份订单用三个正整数描述,分别为 dj,sj,tj,表示某租借者需要从第 sj 天到第 tj 天租借教室(包括第 sj 天和第 tj 天),每天需要租借 dj 个教室。
2025-04-22 22:19:53
601
原创 P1015 [NOIP 1999 普及组] 回文数
/本题是一道模拟题 考察了进制转换高精度和回文字符串 首先做一个进制映射 将A-F映射成11-16 然后判断当前数是否是回文数 如果不是则将数字翻转并且实现高精度加法 并且记录使用的步数 最后输出结果即可。写一个程序,给定一个 N(2≤N≤10 或 N=16)进制数 M(100 位之内),求最少经过几步可以得到回文数。如果在 30 步以内(包含 30 步)不可能得到回文数,则输出。例如:给定一个十进制数 56,将 56 加 65(即把 56 从右向左读),得到 121 是一个回文数。
2025-04-20 22:26:41
284
原创 洛谷 P5198 [USACO19JAN] Icy Perimeter S
他制造了一台可以生产冰激凌球的机器,然而不幸的是形状不太规则,所以他现在希望优化一下这台机器,使其产出的冰激凌球的形状更加合理。一个冰激凌球是连通的,如果其中每个冰激凌的正方形格子都可以从这个冰激凌球中其他所有的冰激凌格子出发重复地前往东、南、西、北四个方向上相邻的冰激凌格子所到达。同时求得冰激凌球的面积和周长十分重要,因为 Farmer John 最终想要最小化周长与面积的比值,他称这是他的冰激凌的“冰周率”。在上图中,小的冰激凌球的面积为 2,周长为 6,大的冰激凌球的面积为 13,周长为 22。
2025-04-11 12:13:37
552
原创 洛谷 P2853 [USACO06DEC] Cow Picnic S
K(1≤K≤100) 只奶牛分散在 N(1≤N≤1000) 个牧场.现在她们要集中起来进餐。牧场之间有 M(1≤M≤10000) 条有向路连接,而且不存在起点和终点相同的有向路.她们进餐的地点必须是所有奶牛都可到达的地方。//记录有多少头牛能够到达这个牧场 如果牛的数量等于能到达这个牧场牛的数量时 就表示所有的牛都可以到这个牧场 那么这个牧场就可以作为聚餐地点。//如果这个牧场没有被走过就加入到队列中 并且达到这个牧场的牛的数量++p[cow[i]]++;//牛起始所在的牧场也是可以到达的牧场。
2025-04-11 12:03:13
875
原创 DFS 洛谷P1123 取数游戏
一个 N×M 的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻 8 个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少。if(st[x][y]==0){ //取此数的情况(需保证此数周围没有取其他数)void dfs(int x,int y){//搜索函数,表示搜索点(x,y)//从点(1,1)开始搜索。
2025-04-01 21:35:15
716
原创 DFS P2036 [COCI 2008/2009 #2] PERKET
当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的苦度为每一种配料的苦度的总和。本题可以类比指数型枚举 一共2个状态标记调料选还是不选 枚举完n个状态后更新所选的调料的酸苦度的差值的绝对值 题目强调 ,我们必须添加至少一种配料,因为没有任何食物以水为配料的。众所周知,美食应该做到口感适中,所以我们希望选取配料,以使得酸度和苦度的绝对差最小。另外,我们必须添加至少一种配料,因为没有任何食物以水为配料的。一行一个整数,表示可能的总酸度和总苦度的最小绝对差。
2025-03-31 22:50:07
267
原创 DFS B4158 [BCSP-X 2024 12 月小学高年级组] 质数补全
接下来 t 行,每行 1 个字符串 s 代表 Alice 的数字,仅包含数字或者 ∗,并且保证首位不是 ∗ 或者 0。例如纸条上的数字为 1∗(∗ 代表看不清的地方),那么这个质数有可能为 11,13,17,19,其中最小的为 11。//如果当前*处理完毕 判断该数是否是质数 如果是则输出 如果不是则继续枚举。请你帮助 Alice 补全这个质数,若有多解输出数值最小的,若无解输出 −1。输出 t 行,每行 1 个整数代表最小可能的质数,或者 −1 代表无解。//记录'*'的位置 从1-p。
2025-03-30 20:59:15
784
原创 DFS P3848 [TJOI2007] 跳棋
如图(b)中从A出发,可跳到B,或者到E,但不能直接到K。在一个n×n的棋盘上,布满了0和1,如图(a)所示(n=7),为叙述方便,将0用字母表示,如图(b)。第一行三个整数 n(1≤n≤100),x,y(起点坐标,上图(b)中A处坐标为1,3)跳过的距离为跳过1格个数加1,如从A到B,跳过距离为3,从B到F,跳过距离为2。(1)从某个0格出发,可以向上,下,左,右4个方向连续越过若干个(至少1个)//走过的路就不能在走。
2025-03-30 20:37:58
1035
原创 DFS P2392 kkksc03考前临时抱佛脚
因此要开始刷习题集,每科都有一个习题集,分别有 s1,s2,s3,s4 道题目,完成每道题目需要一些时间,可能不等(A1,A2,…,As1,B1,B2,…,Bs2,C1,C2,…,Cs3,D1,D2,…第 2 行,为 A1,A2,…,As1 共 s1 个数,表示第一科习题集每道题目所消耗的时间。本题包含 5 行数据:第 1 行,为四个正整数 s1,s2,s3,s4。,Ds4 共 s4 个数,意思均同上。第 4 行,为 C1,C2,…
2025-03-29 22:48:01
594
原创 动态规划-最长上升子序列模型
acwing1014 登山五一到了,ACM队组织大家去登山观光,队员们发现山上一共有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?
2025-03-23 09:32:12
908
原创 动态规划-最长上升子序列模型
否则f[i] = f[i-1];第二行包含N个不同的整数,每一个对应一幢建筑的高度h,按照建筑的排列顺序给出。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。他希望尽可能多地经过不同建筑的顶部,这样可以减缓下降时的冲击力,减少受伤的可能性。对于每一组测试数据,输出一行,包含一个整数,代表怪盗基德最多可以经过的建筑数量。
2025-03-23 09:12:22
362
原创 动态规划-数字三角型模型
/dp 状态计算: f[i][j] = Math.min(f[i-1][j] ,f[i][j-1])+g[i][j];//dp 状态表示:1.集合:表示所有从(1,1)走到(i,j)的方案 2.属性最小值。后面 N 行,每行 N 个不大于 100 的正整数,为网格上每个小方格的费用。一个商人穿过一个 N×N 的正方形的网格,去参加一个非常重要的商务活动。样例中,最小值为 109=1+2+5+7+9+12+19+21+33。而在经过中间的每个小方格时,都需要缴纳一定的费用。请问至少需要多少费用?
2025-03-23 08:26:20
270
原创 动态规划-数字三角形模型
/状态计算: f[i][j] = Math.max(f[i - 1][j], f[i][j - 1]) + g[i][j];每行数据有C个整数,按从西向东的顺序描述了该行每株花生苗上的花生数目M。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。对每组输入数据,输出一行,内容为Hello Kitty能摘到得最多的花生颗数。
2025-03-23 08:13:51
460
原创 朴素版dijkstra算法求最短路
/每次循环找到不在集合中的距离距离最近的点。//防止有重边 //如果是无向图需要加入g[b][a] = g[a][b]dist[j] = Math.min(dist[j], dist[t] + g[t][j]);
2025-03-08 21:18:16
363
原创 P2392 kkksc03考前临时抱佛脚
因此要开始刷习题集,每科都有一个习题集,分别有 s1,s2,s3,s4 道题目,完成每道题目需要一些时间,可能不等(A1,A2,…,As1,B1,B2,…,Bs2,C1,C2,…,Cs3,D1,D2,…,As1 共 s1 个数,表示第一科习题集每道题目所消耗的时间。本题包含 5 行数据:第 1 行,为四个正整数 s1,s2,s3,s4。第 5 行,为 D1,D2,…,Ds4 共 s4 个数,意思均同上。第 4 行,为 C1,C2,…
2025-02-18 22:00:06
674
原创 洛谷 P2404 自然数的拆分问题
任何一个大于 1 的自然数 n,总可以拆分成若干个小于 n 的自然数之和。现在给你一个自然数 n,要求你求出 n 的拆分成一些数字的和。每个拆分后的序列中的数字从小到大排序。然后你需要输出这些序列,其中字典序小的序列需要优先输出。i++){ //一共存放u个数。if(sum == n){ //满足条件总和等于输入的数。//u表示当前枚举的位置 start表示从几开始枚举。//u位置存放数据i。
2025-02-18 21:26:27
352
原创 洛谷 B3624 猫粮规划
机器猫又不想变得太胖又不想变得太瘦,所以指定了一个目标区间 [l,r][l,r]。显然,可能有很多种选择食物的方式可以达成这个目标,因此机器猫想知道方案总数。机器猫掏出 nn 份食物,第 ii 份食物含有的能量为 w[i]w[i]。//剪纸 如果当前的总重量已经超过了右边界 就直接返回。第二行,nn 个正整数,表示每一份食物含有的能量 w[i]w[i]。//在范围内方案是加一。第一行,三个正整数 n,l,rn,l,r。//x表示当前枚举到哪一个猫粮。
2024-12-04 08:51:15
426
原创 洛谷 P10098 [ROIR 2023 Day 2] 地铁建设
换句话说,当电压为 xx 单位电压,如果第 ii 个发动机处于第一模式下,它以 ai×xai×x 的单位功率运行;如果处于第二模式下,它以 ai×zi+bi×(x−zi)ai×zi+bi×(x−zi) 的单位功率运行。每个发动机有两种模式,假设所有发动机接收到的电压都为 xx,则当 x≤zix≤zi 时第 ii 个发动机在第一模式下工作,否则它在第二模式下工作。//如果功率大于了p表示x大了。
2024-11-25 22:25:58
987
原创 洛谷 B3881 [信息与未来 2015] 拴奶牛
/二分答案 计算出最近距离的最大值 l最小为1就是两头牛在相连的位置上 l-1防止边界溢出,r最大时就是2头牛的相距的最大距离 r+1防止边界溢出。//i指针一直向后移动,j指针记录当前2头牛的距离满足大于等于当前枚举的最大值就更新j指针的位置。例如 n=4,k=6n=4,k=6,木桩的位置为 0,3,4,7,8,90,3,4,7,8,9,此时为下图。//如果可以放的牛的数量超过了给定的牛的数量 表示 最大值小了 l右移动,否则左移。// i-j就是用来维护当前区间的两头牛的位置。
2024-11-22 10:03:55
1271
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅