
上海计算机学会四星题通关
文章平均质量分 50
上海计算机学会四星题通关
长春高老师信奥工作室
专注中小学生C++编程和竞赛,有相关问题可以给我私信。
展开
-
上海计算机学会2021年10月月赛C++丙组T5黑白翻转棋
有一种叫做黑白翻转棋的游戏,棋盘由 n×m 个方格组成,每个方格上放置一枚棋子,每一枚棋子一面为黑,一面为白。一开始,棋子可能是黑色的,也可能是白色的。小爱可以按照任意顺序翻转任意数量的棋子,但游戏规则规定,选择翻动某一枚棋子时,与这个棋子的方格共享边界的其它棋子也必须被同时被翻转。小爱可能在一个步骤中,同时翻转五个棋子(棋子在中间)、四个棋子(棋子在边界上)或三个棋子(当棋子在角上)。翻转方案的前一行、前两行、前一行左移一位、前一行右移一位,及棋盘盘面的前一行异或后即下一行的结果。否则输出最少翻转次数。原创 2024-01-06 15:12:14 · 661 阅读 · 0 评论 -
上海计算机学会2021年10月月赛C++乙组T2树上归零
给定一棵有 n 个结点的树,1 号点为根。树上每个点都有一个值,其中第 i 个点的值为 ai。小爱想通过若干步操作将树上的所有值全部变为 00,每步操作可以选择树上任意一个结点 u,然后将 u 的子树上的所有值增加 1,或者将 u 的子树上的所有值减少 1。第二行:n−1 个整数 p2,…,pn ,表示 22 号点到 n 号点各自的父亲编号;内存限制: 256 Mb时间限制: 1000 ms。第三行,n 个整数 ai,表示每个点的初始值。单个整数:表示最少的操作步数使得所有值归零。原创 2023-11-22 07:48:43 · 273 阅读 · 0 评论 -
上海计算机学会2021年4月月赛C++乙组T4逆序排列
逆序对是指在一个数列中iaj的一对数。给定一个正整数n,再给定一个自然数k,请问有多少长度为n的排列(即从1到n中的每个整数出现且仅出现一次的序列),它们的逆序对数量恰好为k?由于答案可能很大,取答案模1,000,000,007的余数。原创 2023-06-12 17:50:23 · 345 阅读 · 0 评论 -
上海计算机学会2021年7月月赛C++乙组T2最小配对
给定两个长度为n的数列 a1,a2,⋯,an与 b1,b2,⋯,bn。从第一个数列中取出一个数,再从第二个数列中取出一个数,相加后组成一个和,共有n×n种组合。请输出其中最小的n个组合所形成的和。原创 2023-06-12 21:13:32 · 372 阅读 · 0 评论 -
上海计算机学会2020年7月月赛C++丙组T4倍数区间
内存限制: 256 Mb时间限制: 1000 ms。原创 2023-07-02 10:36:44 · 317 阅读 · 0 评论 -
上海计算机学会2020年5月月赛C++乙组T3切割钻石
内存限制: 256 Mb时间限制: 1000 ms。原创 2023-07-02 10:44:42 · 300 阅读 · 0 评论 -
上海计算机学会2020年9月月赛C++乙组T2 5G通讯
一条直线上有n个点,第i个点的坐标为xi。给定一个限制d,若两点距离不超过d,那么它们可以直接通讯。请统计有多少对点可以直接通讯。原创 2023-07-02 11:00:01 · 507 阅读 · 0 评论 -
上海计算机学会2020年9月月赛C++乙组T1 最大圆弧
给定n个整数 a1,a2,⋯,an,它们组成了一个圆环。请在这个圆环上,找出一段连续的区间,使得这段区间的数字之和达到最大。空集和圆环本身都可以算圆环的子区间。由于是圆环,an和a1也被视作是相邻的。原创 2023-07-02 11:46:20 · 529 阅读 · 0 评论 -
上海计算机学会2020年8月月赛C++丙组T5分形三角
定义分形三角如下:只有1层的分形三角是由_,\,/构成一个单独的三角形;n层分形三角由三个n−1层分形三角构成,它们以品字形排列。给定一个整数n,请输出一个层数为n的分形三角。原创 2023-07-04 13:17:43 · 445 阅读 · 0 评论 -
上海计算机学会2021年3月月赛C++乙组T2正规数(二)
如果一个正整数的所有素因子均不超过5,则它被称为正规数(Regular Number)。例如60是一个正规数,因为60=2^2⋅3⋅5,1000也是一个正规数,因为1000=2^3⋅5^3。前十五个正规数为:1,2,3,4,5,6,8,9,10,12,15,16,18,20,24给定一个n,请输出第n个正规数。原创 2023-07-04 13:45:26 · 828 阅读 · 0 评论 -
第二届上海市青少年算法竞赛中学组T2公平分割
小爱和小艾正在协商分割n件物品。小爱知道每件物品的价值与价格,而小艾只知道每件物品的价格。他们约定,首先由小爱负责将这些物品分成两堆,然后小艾挑选拿走一堆,剩下的就是小爱的。由于小艾只知道每件物品的价格,所以他一定会挑走价格之和较大的一堆,若两堆物品的价格之和一样大,他会客气地让小爱做出选择。小爱既知道每件物品的价值,也知道每件物品的价格,所以她可以在分割物品的时候,故意制造一个局面,使得小艾拿走价格大但价值低的一堆物品,请计算并输出小爱可以留下的物品的最大价值之和。原创 2023-07-04 13:49:38 · 311 阅读 · 0 评论 -
上海计算机学会2020年8月月赛C++乙组T1数山峰(一)
在平面直角坐标系上有n座像山峰一样的图案。每座山峰是一个直角等腰三角形,它们的底边都是坐标系的X轴,第i座山峰的峰顶坐标为 (xi,yi)。如果一座山峰的峰顶在另一座山峰的内部,或者恰好在山峰的边界上,那么这座山峰就被遮蔽了。给定每个山峰的峰顶坐标,请统计有多少山峰是能被看见的。原创 2023-07-04 14:43:46 · 554 阅读 · 0 评论 -
上海计算机学会2021年3月月赛C++乙组T3再铺地砖
存在两种规格的地砖,一种是 1×1 规格的,也就是恰好可以覆盖一个方格,另一种是 1×2 规格的。2.边界为i-2:有三种情况,一是两块1x2横放,二是一块1x2,两块1x1,1x2放上边,三同二,1x2放下边,即a[i-2]*3;a[i]=2*(a[i-1]+a[i-2]+....a[1]+1)+a[i-2],把前边的2*()变成前缀和,即可。1.边界为i-1:有两种方案,一是单块1x2,二是两块1x1.即a[i-1]*2。可以得出2*(1+a[1]+a[2]+a[3]....a[i-3])种方案。原创 2023-11-06 13:06:31 · 770 阅读 · 0 评论 -
上海计算机学会2021年10月月赛C++丙组T4淘气合影
在五次排序中任意两个孩子x,y最多有2次顺序是不正确的,一次是x捣蛋,一次是y捣蛋,以此可以确定,如果x有三次及以上排在y前边,那么x的正确顺序就是排在y前边,否则x应该排在y后边,按这个逻辑对孩子们进行一次自定义排序,集合获得正确顺序。有 n 个孩子,他们的编号为 1 到 n,老师根据身高把他们排成一条直线(每个人的身高与他的编号顺序无关),打算拍一张集体照。,其中在第 i 张照片中,排在队伍中第 j 名的孩子编号为 ai,j。注意,每一轮的流程中,都可能有新的孩子出来捣乱。第一行:一个整数 n;原创 2023-11-06 13:19:47 · 300 阅读 · 0 评论 -
上海计算机学会2021年12月月赛C++乙组T3串联计数
给定一个 n,表示存在 n 个符号 α1,α2,⋯,αn,如果用 == 或原创 2023-11-06 13:39:57 · 207 阅读 · 0 评论 -
上海计算机学会2021年4月月赛C++乙组T3平安数
若一个整数在十进制下不含 13 作为子串,则称它为平安数,例如 123 是平安数,但 2132 不是平安数。给定一个 n,请计算从 1 到 n 有多少个平安数。单个整数:表示 1 到 n 之间有多少整数的十进制表示不含 13 子串。内存限制: 256 Mb时间限制: 1000 ms。13、113以及130到139都不是平安数。单个整数:表示 n。原创 2023-11-06 23:15:19 · 303 阅读 · 0 评论 -
上海计算机学会2020年4月月赛C++乙组T3水果忍者
比较当前值(不切当前水果),不转向(上次同向dp[j-tl][fx]+1),转向(上次不同向dp[j-tl-6][ffx]+1),三者最大值。01背包定义dp[j][0]为体力为i时身体朝左侧所能切到的最多水果,dp[i][1]为身体朝右侧所能切到的最多水果。假设她拥有 m 点体力,可以自由决定切哪些水果,请问她最多能切掉多少只水果?注:因为开始时面向右侧,所有左侧最早切到水果的体力值为6加体力消耗。内存限制: 256 Mb时间限制: 1000 ms。的水果,需要消耗 3 点体力,而切一个来自。原创 2023-11-06 13:47:25 · 452 阅读 · 0 评论 -
上海计算机学会2020年11月月赛C++乙组T3数三角形
使用map统计不同斜率直线的数量,分别统计没有平行线的直线数量sum和有平行线的直线组数p及每组平行线的数量a[i]。第二行到第 n+1 行:第 i+1 有三个整数 ai,bi 和 ci 表示第 i 条直线的方程参数。由于答案可能很大,输出答案模10^9+7的余数。输入保证任意三条直线不会共点。单个整数:表示由这些直线构成的三角形数量模 10^9+7 的余数。给定二维坐标系下的 n 条直线,其中第 i 条直线的方程形式为为。内存限制: 256 Mb时间限制: 1000 ms。第一行:单个整数 n;原创 2023-11-07 01:01:55 · 233 阅读 · 0 评论 -
上海计算机学会2021年5月月赛C++乙组T2异或延展
1.异或具有前缀和特性,即从l到r的异或结果等于从1到l-1的异或结果和从1到r的异或结果异或的结果,即xl⊕xl+1⊕⋯⊕xr=(x1⊕x2⊕⋯⊕xl-1) ⊕ (x1⊕x2⊕⋯⊕xr)2.循环特性:即将x1,x2,⋯,xk后边再排列x1,x2,⋯,xk时,得到的前缀和结果跟前边的k个结果相同。第四行到第 q+3 行:每行两个整数 li 与 ri,表示对一个区间的询问。第二行:k 个整数表示 x1,x2,⋯,xk;内存限制: 256 Mb时间限制: 1000 ms。原创 2023-11-06 14:32:32 · 241 阅读 · 0 评论 -
上海计算机学会2021年8月月赛C++乙组T3前缀中位数
使用对顶堆,保证大顶堆所有数小于等于小顶堆所有数,对于奇数个数,保证大顶堆始终比小顶堆多一个数,大顶堆堆顶即为答案。给定一个整数序列 a1,a2,⋯,an,计算出前一个数,前三个数,前五个数直到前 n 个数的中位数。所谓一些数的中位数,就是这些数字排序后位置在最中间的数。共 (n−1)/2 行:第 i 行表示前 2i−1 个数字的中位数。第二行:n 个整数表示 a1,a2,⋯,an。内存限制: 256 Mb时间限制: 1000 ms。第一行:单个整数表示 n,保证 n 是奇数;原创 2023-11-06 15:07:14 · 288 阅读 · 0 评论 -
上海计算机学会2021年5月月赛C++乙组T1火柴数字(一)
给定一个整数 n,用完 n 根火柴可以组成多少个不同的正整数?注意正整数的首位不能为 0。输出方案数模 1,000,000,007 的余数。单个整数:表示方案数模 1,000,000,007 的余数。咋一看像完全背包,但是完全背包是组成是没有顺序的。内存限制: 256 Mb时间限制: 1000 ms。可行的方案是111,14,41,6,9,77。四根火柴可以表示11或者4,所以有两种。内外循环变一下,就可以了。单个整数:表示 n。原创 2023-11-06 17:05:57 · 894 阅读 · 0 评论 -
上海计算机学会2021年10月月赛C++乙组T1确定排名
小爱通过私下交流,得到 m 条线索,其中第 i 条线索可以确定,第 xi 号学生的分数高于第 yi 号学生。如果想要确定第i号学生的排名,那么就要知道有多少学生比他成绩高,有多少学生比他成绩低,如果能确定关系的人数加他自己等于总人数,则该名学生的排名就是确定的。第二行到第 m+1 行:第 i+1 行有两个整数 xi 和 yi,表示第 xi 号学生的分数高于第 yi 号学生。1与2高于3,3又高于4与5,所以只有3的排名是确定的。内存限制: 256 Mb时间限制: 1000 ms。原创 2023-11-06 17:52:28 · 404 阅读 · 0 评论 -
上海计算机学会2021年8月月赛C++乙组T1编辑距离
则有三种可能,删掉s[i],删掉t[j],修改s[i],使之变成t[j],对应的取dp[i-1][j],dp[i][j-1],dp[i-1][j-1]三者最小值加1(本次操作),为最短编辑距离。若s[i]=t[j] 则无需修改修改s[i],使之变成t[j],直接取dp[i-1][j-1]与另外两种情况加一的最小值。初始化dp[0][i]=i;dp[i][0]=i,即其中一个字符串为空时,最短编辑距离为另一个字符串的长度。dp[i][j]代表为到s[i],t[j]的字符串的最短编辑距离。原创 2023-11-06 18:28:19 · 186 阅读 · 0 评论 -
上海计算机学会2021年9月月赛C++丙组T5分数化小数
给定一个以十进制表示的分数 a/b,保证 a原创 2023-11-06 18:56:53 · 336 阅读 · 0 评论 -
上海计算机学会2020年4月月赛C++乙组T2环型运输
若我们取x点为开始点,则x点不需要向x+1点运输a[x]物资,则x-1点需要运送的物资变为|a[x-1]-a[x]|,同理其他点需要运输的物资变为|a[i]-a[x]|,则总的运输量为|a[1]-a[x]|+|a[2]-a[x]|+......+|a[n]-a[x]|。某个国家有若干个城市,每个城市生产或者消费一定量的物资,已知国家的生产和消费的总量恰好是相等的。物资的前缀和a[i]表示从1城市到i城市需要运到i+1到n城市的物资总量。内存限制: 256 Mb时间限制: 1000 ms。原创 2023-11-06 19:40:32 · 440 阅读 · 2 评论 -
上海计算机学会2020年3月月赛C++乙组T4巧背圆周率
分成(314159)(265358)(979)(323846),总难度为10+10+4+10=34。分成(271828)(182845)(904523)(536),总难度为40。想要背诵一段很长的数字,比如圆周率,可以将这些数字分割成一个个。内存限制: 256 Mb时间限制: 1000 ms。现在给定一个由数字构成的字符串 s,请找出一个分割。分成(1212)(2222),总难度4+1=5。的规律做不同的记忆训练。最少 3 个数,最多 6 个数,各种。一个由数字构成的字符串 s。设 s 的长度为 n,则。原创 2023-11-06 20:11:09 · 486 阅读 · 0 评论 -
上海计算机学会2021年10月月赛C++乙组T4子集和(二)
任何一个子集和都有一个补集,比如从1,2,3里面选了1这个子集,那么2,3就是补集。子集的所有数的和与它补集的和相加就是所有数的和。给定 n 个整数 a1,a2,⋯,an,这些数可以组成 2n−1 个集合(不算空集)。由于 ai 可能重复,为方便起见,规定它们组成的集合中允许出现重复的元素。分别计算每个集合的元素之和,请从中找到这些和的中位数。用01背包找出能合成sum/2以下(包括)最大的数,用和减去这个数(即补集和),即为答案。第二行:n 个整数 a1,…单个整数:表示这些集合之和的中位数。原创 2023-11-06 20:42:33 · 287 阅读 · 0 评论 -
上海计算机学会2021年5月月赛C++乙组T3分数排序
从左边0/1,右边1/1开始,中间插入(0+1)/(1+1)=1/2,然后在0/1和1/2中间插入(0+1)/(1+2)=1/3,在1/2和1/1中间插入(1+1)/(1+2)=2/3.....重复这个过程,直到分子大于n为止。对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,以Fn表示。如F5为:1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5.原创 2023-11-06 21:34:38 · 245 阅读 · 0 评论