竞赛
考级
我和“睡务局💤”的小伙伴都在ACGO等你,快用这个专属链接加入我们吧!https://www.acgo.cn/application/1894674357457756160 目前25个人
莉莉重度依赖(≧∇≦)ノ
https://www.acgo.cn/application/1905536700624973824 复制链接自己进
零散(づ ̄ 3 ̄)づ
戳我关注+做题 戳我加团
奇怪的FKC(松鸦羽-松鸦星)
✌👌👍👎☜☞☝☟✋☺😐☹💣☠⚐🏱✈☼☼💧❄✞🕆🕈✠✡☪ 📂📄🗏🗐🗄⌛🖮🖰🖲📁 ♊❞✏@✁👓🕭♈🕮🖂🕿✆♉🖃❀❝☯☸❀❝🖴🕯🖳✂📪.📭🖫✇✍ॐ✿ 这样子 ,大家可能看不懂,可以去W.D. GASTER The WingDings Translato看一下,具体是这样的: a b c d e f g h i j k l m n o ✌ 👌 👍 👎 ☜ ☞ ☝ ☟ ✋ ☺ 😐 ☹ 💣 ☠ ⚐ p q r s t u v w x y z 1 2 3 4 🏱 ✈ ☼ 💧 ❄ 🕆 ✞ 🕈 ✠ ✡ ☪ 📂 📄 🗏 🗐 5 6 7 8 9 0 ` - = [ ] ; ' , / | 🗄 ⌛ 🖮 🖰 🖲 📁 ♊ 📫 🖬 ☯ ☸ 🖴 🕯 📪 📭 ✿ ~ ! @ # ¥ % … & * ( ) — + { } ❞ ✏ @ ✁ ¥ 🕭 ⑤ 🕮 🖂 🕿 ✆ ◻ 🖃 ❀ ❝ : " < > ? | 🖳 ✂ 🖫 ✇ ✍ ✿ 有漏掉的可以在评论区告诉我。(大小写一样)
🕈.👎.☝✌💧❄☜☼
ACGO讨论区发帖规范 * 请大家注意,即日起,我们将对不符合分区主题的帖子进行适当的提醒或下架。我们的目标是为大家创造一个更加有序和愉悦的交流平台。 分区规划 讨论区板块 发布内容相关 数据来源 学习讨论 站内外题目讨论/ 知识求助 / 学习经验 1、题目-讨论区 2、自主发布 站务中心 反馈 / 举报 / 工单 / 其他公告 1、自主发布 灌水池塘 成员招募/ 游戏类 / 生活分享 / 兴趣爱好/ 集训营 / 赛事交流 1、自主发布 置顶与精选 置顶:由官方筛选有价值的帖子进行置顶,通常同一时段置顶文章不超过8个。 精选:由官方筛选有价值的帖子进行精选,数量不限。 让你的求助得到更多反馈 序号 概括 详细 原则一 在适当的板块提问 选择“学术站”发布求助帖 原则二 提问前先搜索一下 将你的问题放进搜索引擎过滤一遍,这其实不是什么难事,事实证明,90%的问题都可以用搜索引擎解决了。 原则三 先试试自己解决 如果搜不到问题,先自己思考问题的本质和可能的解决方案。提问帖里展示你的思考过程,这样有助于大佬们知道你已经尽力思考,也会更愿意给予具体和深入的帮助。 原则四 准确地描述问题 清晰的细节(包括原题链接,测评记录,我的代码等细节) 问题发生的背景, 提问前做过的调查研究及对其的理解 提问前为确定问题而采取的诊断步骤 原则五 及时交流表达感谢 当你得到了回答和帮助后,要向回答者表达感谢。同时记得分享你的解决方案的结果。 让你的题解更受欢迎 序号 概括 详细 原则一 在适当的板块提问 选择“学术站”发布题解,或在题目-题解处发布 原则二 精准的标题 准确简要概括题解内容。避免过长或复杂的词汇。避免使用模糊的词汇,比如“题解”。 原则三 提供清晰的思路 提供详细的解答,包括解题思路、步骤和相关的数学推导或逻辑推理。确保解答清晰易懂,并且能够帮助其他人理解问题的本质和解决方法。 原则四 使用格式化语言 排版友好,代码格式清晰。数学公式(运算式、运算符、参与运算的常数、作为变量的字母等)应使用 LaTeX 原则五 图表和示例 如果可能的话,使用图表、示例或实际应用来支持你的解答。这将有助于读者更好地理解你的解题过程。 推荐文章:Markdown的常用语法讲解 推荐文章:LaTeX数学公式的常用语法讲解
AC君
要我说,这会挑战赛真的是 大体说一下:这次挑战赛难度不高,没使用到什么高阶算法,下面的表是答题知识点 题目 知识点 1 分支结构 2 回文数串 3 预处理+模拟 4 结构体排序 5 前缀和 6 双指针 接下来我来详细解释一下题目 第一题 题意分析:很明显,这是一道简单的分支结构 思路:将一级二级三级凤梨酥依次判断,不要忘了要用else 代码 第二题 题意分析:找到重量(NNNi)是回文数的凤梨,注意:范围要在500g−10000g之间我写代码时就有这个错误 思路:在数组中找到重量适合的凤梨,在判断凤梨的重量是否为回文数,是则cnt++; 代码: 第三题 题意分析:当这一列所有元素都为1时,可以上课,最多连续上几天 思路:先做好预处理,把能上的都标记出来,然后求最长子串的长度(标记可以用bool vis[1000010]) 代码: 第四题 题意分析:主人公只可以在没有客人的时候摸鱼 思路:使用结构体,设come和leave,那n+1.c-n.l(-1)/a,因为时间点和时间段的差异,注意:这种方法需要总工+1,因为T是时间点 代码: 第五题 题意分析:在【l,r】区间找到合适的k 思路:把输入的数组差分一下,然后计算每个甜度的推荐次数,标记合适的甜度,数组存好,查找就行了(由于数组较多,我会注释他们是干什么的) 第六题 题意分析:数组中存在一对整数 [i,j]满足Ai-Aj>=k,就是美丽的,求美丽的连续子序列的个数 思路:既然是有i,j两个元素,还在移动,说明使用了双指针,那么我们就可以定义双向队列,使用双指针思想,循环遍历就行
红中带蓝
求解🙏🙏 题目描述 为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体要求是这样的: 首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中; 然后,待所有字条加入完毕,每人从箱中取一个字条; 最后,如果取得的字条上写的就是自己的名字,那么“恭喜你,中奖了!” 大家可以想象一下当时的气氛之热烈,毕竟中奖者的奖品是大家梦寐以求的小码君签名照呀!不过,正如所有试图设计的喜剧往往以悲剧结尾,这次抽奖活动最后竟然没有一个人中奖!怎么会这样呢? 不过,先不要激动,现在问题来了,你能计算一下发生这种情况的概率吗? 不会算?难道你也想以悲剧结尾?! 输入格式 输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(1<n<=20),表示参加抽奖的人数。 输出格式 对于每个测试实例,请输出发生这种情况的百分比,每个实例的输出占一行, 结果保留两位小数(四舍五入)。 输入输出样例 输入#1 复制 1 2 输出#1 复制 50.00%
黄昏晓寂
按xb(注意:是第一个词哦)打在评论区 打出下班证明你不想上班; 打出行吧证明你性格随和; 打出学霸证明你很积极向上; 打出雪碧证明你横喜欢喝饮料;
codeHive
张子渝姐姐好帅啊,如果我14个月速通S1是不是也能上码上开聊?
安卿
OpenJudge太坑了,当时WA了4遍,90分,谁知道最后一个测试点是个空格
156****1040
原著:陈XX 在看完他的代码后,我觉得只有一次计算,不方便. 于是,我把判断部分用"WHILE(1)"括起来,再用"SLEEP(1145)"做2次判断部分的停顿,最后用"SYSTEM("CLS")"做清空. 最后做出了以下代码:
y__shluffevgopln
我正在看系统通知,划到第一条时,我愣住了 注意看年份。 有哪位大佬解释一下
TLE(小脑爆炸)
肝了很久,点个赞吧…… 打个广告,绝对不亏 介绍: 我是江苏的,小学。在一次意外的机会中(区赛发挥超常,全区数一数二)获得了省赛的机会。听到这个消息后直接高兴上了天非常兴奋,我们小学第一次晋级。然后,就是长达一个月的备赛。在南京参加决赛,队友两个。 比赛形式: * 初赛(最低二等奖):一张试卷(30道选择题)总分60,三人各做一张,取总分;一道动手实践+演讲 * 复赛(一等奖/特等奖):抢答,用平板,具体不清楚 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 备赛 长达一个月的备赛中,酸甜苦辣的试卷,啊不,千奇百怪的试卷,我都“尝”了个遍。往年的真题,初中的物理、地理、化学、生物知识点,天文知识,动手制作…… ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 比赛 4/26 我来到了南京,参赛人群统一住酒店—南京城市名人酒店。靠近玄武湖,风景不错。坐火车,大概11:30到。 举办方提供餐券,午餐不错,有番茄鱼、鸭血粉丝汤(这是肯定的)、炸鸡、盐水鸭(这也是肯定的)、薯条、可乐等等,吃的很饱。 比赛(13:30),开始! 酒店四楼的会场。先做试卷,可抄队友的(只要没被评委发现),177个学生,会场大小可见有多么big,裁判有多么多。我们是C位,第一排正中间,最容易被发现……还好,不难(但下文会提到我翻车了) 然后是动手实践,空气炮,做过,但我们意见不统一:气球皮/塑料袋+橡皮筋。最后我的威力大(哎嘿)。 然后是打分(桌面),很不好……因为意见不同意,耗材太多,桌面也没整理…… 然后测试,15、25、35厘米(好像),杯子倒扣,上面放乒乓球,四次机会,吹倒分别得5、10、15分(好像)。最后……就5分…… 演讲,我做的,我更会讲,然后就和原来定好要讲的人产生争执,他也没跟我们排练一下,最后嘛……也很不好……啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!15:30结束 回房间后就emo了,为了缓解一下,和老师、队友、队友家长去了玄武湖(骑共享单车),南京的道路真的很乱,汽车和非机动车在一个马路上。路上看见很多taxi都往那赶,很庆幸没坐出租车。 玄武湖真的很美,有许多小船在上面飘,想到了一首歌:“让我们荡起双桨~”咳咳。很多人拍照(还没五一就那么多人),因为18:30还有讲座,所以急急忙忙回来了。 晚餐也不错,有各种糕点,夫妻肺片、西瓜、蛋挞、盐水鸭、雪碧……心情得到了安慰。 讲座还是在会场,讲的是山海经里的动植物,上海自然博物馆的老师讲的,有意思。讲了山海经的地图、一些动物、各种生活中或传说中的植物:桑、梓、麦冬…… 回酒店,挺晚的,公布成绩,考得很不好……试卷才44,三人最低……动手因为三人没合作+耗材太多,得分也很低……测试没射中,超低……我的心,跌倒了谷底……老师对我进行了思想教育,使我受益匪浅。为了缓解心情,上床看了会儿《驯龙高手2》 4/27 返程,7:30起床,早餐不错,甜甜圈、葡萄汁、红茶……急匆匆吃了早餐,退了房,就回去了,从南京鼓楼站到南京站(南京的单程票很神奇,像一个小硬币,塑料),然后坐火车到**,再做地铁回家。中午到,完结!
zsy
我的同学666 把我的坏话在他的团队里置顶 太可恶了,AC军帮我把它禁言10000000000000000000000000000000000000000000000000000000000000000000000000000天
DeepSeek
答案: 近视能否治疗?( ) A. 能 B. 否 答案:A 假性近视临床特点为( ) A. 视力不稳定 B. 常见于成人 C. 随年龄增加,假性近视比例慢慢增大 D. 视力稳定,不产生浮动 答案:A 眼保健操第二节是( ) A. 揉天应穴 B. 挤按睛明穴 C. 揉四白穴 D. 按太阳穴,轮刮眼眶 答案:B 下面哪些习惯是良好的读写习惯?( ) A. 坐车看书 B. 坐在书桌前,书本与桌面呈一定角度,尽量避免低头读书 C. 走路看书 D. 躺在床上看 答案:B2 孩子连续看书写字多长时间后应该休息?( ) A. 40分钟 B. 60分钟 C. 90分钟 答案:A 保护视力,保证营养全面不对的是( ) A. 多吃蔬菜、水果 B. 坚果类食物 C. 鱼类、蛋类 D. 过多吃甜食 答案:D 人的眼睛为了看清远近物体,起调节作用的是( ) 本题未给出选项内容 下列哪项是良好的生活习惯( ) A. 充足睡眠,作息有规律 B. 注意营养均衡,摄取丰富的维生素 C. 多做户外活动,眺望远处 D. 以上均正确 答案:D 下列说法错误的是( ) A. 近视用凹透镜矫正 B. 远视用凸透镜矫正 C. 散光用棱镜矫正 D. 散光用柱镜矫正 答案:C 出现下列哪些情况应立即到医院检查( ) A. 眼睛灼热、发痒、干涩、胀痛 B. 经常揉眼或有频繁眨眼的现象 C. 看书时间一长,字迹就会重叠串行 D. 以上均是 答案:D
130****2333
#include<bits/stdc++.h> using namespace std; int a[31][31]; int c,k; int main(){ cout<<"欢迎来到“氮氧氢氦氩氖氪氙氡氟氯”制作的五子棋程序!"<<endl; cout<<"请输入棋盘的长和宽(长和宽在5以上30以内):"<<endl; while(true){ cin>>c>>k; if(c<=30&&k<=30&&c>=5&&k>=5){ break; } cout<<"输入错误,请重新输入:"<<endl; } for(int i=1;i<=c*k;i++){ for(int c2=1;c2<=c;c2++){ for(int k2=1;k2<=k;k2++){ if(a[c2][k2]==0)cout<<"- "; else if(a[c2][k2]1)cout<<"O "; else cout<<"X "; } cout<<endl; } int x,y; if(i%21){ cout<<"现在轮到玩家一下,请问下在哪里?(输入行和列)"<<endl; while(true){ cin>>y>>x; if(x>c||y>k||x<1||y<1){ cout<<"出界了,请重新输入:"<<endl; } else if(a[x][y]!=0){ cout<<"重叠了,请重新输入:"<<endl; } else break; } a[x][y]=1; for(int c3=1;c3<=c;c3++){ for(int k3=1;k3<=k;k3++){ if(a[c3][k3]!=1)continue; if((a[c3][k3+1]==1&&a[c3][k3+2]==1&&a[c3][k3+3]==1&&a[c3][k3+4]==1) || (a[c3][k3-1]==1&&a[c3][k3-2]==1&&a[c3][k3-3]==1&&a[c3][k3-4]==1) || (a[c3+1][k3]==1&&a[c3+2][k3]==1&&a[c3+3][k3]==1&&a[c3+4][k3]==1) || (a[c3-1][k3]==1&&a[c3-2][k3]==1&&a[c3-3][k3]==1&&a[c3-4][k3]==1) || (a[c3+1][k3+1]==1&&a[c3+2][k3+2]==1&&a[c3+3][k3+3]==1&&a[c3+4][k3+4]==1) || (a[c3-1][k3-1]==1&&a[c3-2][k3-2]==1&&a[c3-3][k3-3]==1&&a[c3-4][k3-4]==1) || (a[c3+1][k3-1]==1&&a[c3+2][k3-2]==1&&a[c3+3][k3-3]==1&&a[c3+4][k3-4]==1) || (a[c3-1][k3+1]==1&&a[c3-2][k3+2]==1&&a[c3-3][k3+3]==1&&a[c3-4][k3+4]==1)){ for(int c2=1;c2<=c;c2++){ for(int k2=1;k2<=k;k2++){ if(a[c2][k2]==0)cout<<"- "; else if(a[c2][k2]==1)cout<<"O "; else cout<<"X "; } cout<<endl; } cout<<"恭喜玩家一胜利!"; return 0; } } } } else{ cout<<"现在轮到玩家二下,请问下在哪里?(输入行和列)"<<endl; while(true){ cin>>y>>x; if(x>c||y>k||x<1||y<1){ cout<<"出界了,请重新输入:"<<endl; } else if(a[x][y]!=0){ cout<<"重叠了,请重新输入:"<<endl; } else break; } a[x][y]=2; for(int c3=1;c3<=c;c3++){ for(int k3=1;k3<=k;k3++){ if(a[c3][k3]!=2)continue; if((a[c3][k3+1]==2&&a[c3][k3+2]==2&&a[c3][k3+3]==2&&a[c3][k3+4]==2) || (a[c3][k3-1]==2&&a[c3][k3-2]==2&&a[c3][k3-3]==2&&a[c3][k3-4]==2) || (a[c3+1][k3]==2&&a[c3+2][k3]==2&&a[c3+3][k3]==2&&a[c3+4][k3]==2) || (a[c3-1][k3]==2&&a[c3-2][k3]==2&&a[c3-3][k3]==2&&a[c3-4][k3]==2) || (a[c3+1][k3+1]==2&&a[c3+2][k3+2]==2&&a[c3+3][k3+3]==2&&a[c3+4][k3+4]==2) || (a[c3-1][k3-1]==2&&a[c3-2][k3-2]==2&&a[c3-3][k3-3]==2&&a[c3-4][k3-4]==2) || (a[c3+1][k3-1]==2&&a[c3+2][k3-2]==2&&a[c3+3][k3-3]==2&&a[c3+4][k3-4]==2) || (a[c3-1][k3+1]==2&&a[c3-2][k3+2]==2&&a[c3-3][k3+3]==2&&a[c3-4][k3+4]==2)){ for(int c2=1;c2<=c;c2++){ for(int k2=1;k2<=k;k2++){ if(a[c2][k2]==0)cout<<"- "; else if(a[c2][k2]==1)cout<<"O "; else cout<<"X "; } cout<<endl; } cout<<"恭喜玩家二胜利!"; return 0; } } } } } return 0; }
氮氧氢氦氩氖氪氙氡氟氯
睡务局入口 > 睡务局 专为“觉主”们设立的群聊,一起探讨睡眠的艺术!
椰蓉莉
官方题解|欢乐赛#46 1.字典序最小 思路分析 字典序列比较方法: 1. 逐字符比较:从左到右依次比较两个字符串的对应字符 2. ASCII值决定顺序:比较字符的ASCII码值 * 小写字母 > 大写字母 > 数字 * 例如:'a'(97) > 'A'(65) > '0'(48) 3. 长度规则:如果所有对应字符相同,则较短的字符串较小 所以在这三个字符串中 "C++"的字典序最小。 代码分析 2.消息数量 思路分析 本题考查分支语句。对于消息数量不超过99的,直接输出消息数量;对于消息数量超过99的输出"99+"。用if - else 判断一下即可。 代码分析 3.输出平方数 思路分析 本题考查对for循环的理解。本题可以for循环从1 ~n,每次循环的时候输出 i×ii \times ii×i 即可。 代码分析 4. 激活密钥 思路分析 本题又考排序了。只需要将数组进行倒序,然后输出前m大的即可。将数组倒序,可以采用C++中的sort,写一个cmp函数即可。 代码分析 5. 揭示预言 思路分析 本题要求结果是十进制,那么可以先将 x 和 y转十进制,然后直接相乘即可。 代码分析 6.不同的数 思路分析 本题可以采用深度优先搜索 或者 二进制枚举,枚举所有的合法方案,然后利用set来维护一下不同的数的数量即可。 代码分析
桌子乱的反义词
欢乐赛#40全题解 T1 题目分析 本题要求找出 2025 年之后的下一个闰年年份。闰年的判断规则是:能被 4 整除但不能被 100 整除的年份为闰年,此外能被 400 整除的年份也是闰年。 解题思路 我们可以从 2026 年开始逐年检查,直到找到符合闰年规则的年份为止。 代码实现 代码解释 year函数: 该函数用于判断一个年份是否为闰年。根据闰年的判断规则,能被 4 整除但不能被 100 整除的年份为闰年,此外能被 400 整除的年份也是闰年。函数返回一个布尔值,表示该年份是否为闰年。 main函数: 初始化Year为 2026,表示从 2026 年开始检查。使用while循环,只要Year不是闰年,就将Year加 1 继续检查。当找到闰年时,循环结束,输出该闰年的年份。 复杂度分析 时间复杂度 最坏情况下,需要检查多个年份才能找到下一个闰年,时间复杂度为 O(n) ,其中n是需要检查的年份数。 空间复杂度 只使用了常数级的额外空间,空间复杂度为 O(1)。 T2 题目分析 本题要求求出114514的n次方的个位数字 解题思路 根据题目描述,我们可以观察到个位数字的循环规律。具体来说,我们只需要关注114514的个位数字,即4的幂次方的个位数字变化规律。 首先,我们观察4的幂次方的个位数字: 4^1 = 4,个位数字是4 4^2 = 16,个位数字是6 4^3 = 64,个位数字是4 4^4 = 256,个位数字是6 我们可以看到,4的幂次方的个位数字在4和6之间循环。因此,我们可以得出结论: 当n是奇数时,4的n次方的个位数字是4 当n是偶数时,4的n次方的个位数字是6 基于这个规律,我们可以编写一个简单的程序来解决这个问题。程序的逻辑如下: 读取输入的测试数据组数T。 对于每一组测试数据,读取整数n。 根据n的奇偶性,输出4或6。 代码实现 代码解释 #include <iostream> 包含输入输出流库。 using namespace std; 使用标准命名空间。 int main() 主函数。 int T; cin >> T; 读取测试数据组数T。 while (T--) 循环T次,处理每一组测试数据。 long long n; cin >> n; 读取整数n。 if (n % 2 == 1) 判断n是否为奇数。 cout << 4 << endl; 如果n是奇数,输出4。 else 否则。 cout << 6 << endl; 如果n是偶数,输出6。 return 0; 程序结束。 复杂度分析 时间复杂度 O(T) ,其中T是测试数据组数。 空间复杂度 O(1) ,只使用了常数级的额外空间。 T3 题目分析 题目要求计算114514的n次方取模998244353的值。 解题思路 根据题目描述,我们需要处理大整数的幂运算并取模,这通常涉及到快速幂算法以提高效率。 快速幂算法 快速幂算法可以在 O(log n) 的时间复杂度内计算a的n次方mod m。其基本思想是将指数n转换为二进制表示,然后根据二进制位上的值来决定是否将当前的幂次结果乘到最终结果中。 算法步骤 初始化:设结果为 1,底数为a。 循环:当n>0时,执行以下操作: 如果n的最低位为 1,则将当前的底数乘到结果中,并对m取模。 将底数平方,并对m取模。 将n右移一位(相当于除以 2)。 输出结果:最终的结果即为a的n次方 mod m。 代码实现 代码解释 输入 从标准输入读取一个整数n 快速幂计算:使用 fast 函数计算114514的n次方 mod 998244353 输出:将计算结果输出到标准输出。 复杂度分析 时间复杂度 O(log n) ,因为每次循环中n都会减半。 空间复杂度 O(1) ,只使用了常数级的额外空间。 T4 题目描述 给一个数n,求第n个质数是多少? 解题思路 质数判断 首先,我们需要一个函数来判断一个数是否为质数。质数是指只能被1和自身整除的数。为了提高效率,我们只需要检查到该数的平方根即可。 寻找第n个质数 从2开始,逐个检查每个数是否为质数,直到找到第n个质数为止。 代码实现 代码解释 ip函数 如果输入的数小于等于1,则不是质数。 如果输入的数是2,则是质数。 如果输入的数是偶数且不等于2,则不是质数。 对于大于2的奇数,检查从3到其平方根之间的所有奇数是否能整除该数。如果有能整除的,则不是质数。 np函数 初始化计数器count为0,表示已找到的质数个数。 从2开始逐个检查每个数是否为质数。 如果找到一个质数,则计数器加1。 当计数器等于n时,返回当前的数减1(因为循环结束后num会多加1)。 main函数 读取输入的整数n。 调用np函数找到第n个质数并输出。 T5 题目理解 我们需要将所有学生的座位号 a[i] 调整成与学号 i 不相等,且要求交换次数最少。由于 a 是 1 到 n 的全排列,我们可以利用排列的性质来解决这个问题。 解题思路 我们可以将问题转化为 排列的错位排列(Derangement) 问题。错位排列是指排列中没有任何一个元素出现在其原始位置。我们的目标是通过最少的交换次数,将给定的排列 a 调整为一个错位排列。 错位排列的性质 如果排列 a 已经是错位排列(即 a[i] != i 对所有 i),则不需要任何交换。 否则,我们需要通过交换将排列调整为错位排列。 最少交换次数 如果排列中有 k 个元素在正确的位置(即 a[i] == i),那么最少需要 ceil(k / 2) 次交换。 这是因为每次交换可以修复两个错误的位置。 算法步骤 统计错误位置 遍历排列 a,统计有多少个元素满足 a[i] == i。 计算最少交换次数 如果错误位置的数量为 k,则最少交换次数为 ceil(k / 2)。 代码实现 代码解释 函数 swaps 遍历排列 a,统计有多少个元素满足 a[i] == i + 1(因为学号从 1 开始,数组下标从 0 开始)。 返回 ceil(ans/ 2),即 (ans+ 1) / 2。 主函数 main 读取测试用例的数量 T。 对于每个测试用例,读取 n 和数组 a。 调用 swaps函数并输出结果。 复杂度分析 时间复杂度 遍历排列 a 一次,时间复杂度为 O(n)。总体时间复杂度为 O(n)。 空间复杂度 只使用了常数级别的额外空间,空间复杂度为 O(1)。 T6 题目理解 我们需要找到一个区间 [l, r],使得对于区间内的每一个整数 i,n 都是 i 的倍数。换句话说,区间内的每一个数都是 n 的因子。我们的目标是找到满足这个条件的最长区间,并输出其长度。 解题思路 理解条件 对于区间 [l, r] 中的每一个 i,n % i == 0。这意味着 i 必须是 n 的因子。 最长区间 我们需要找到一个最长的连续区间,使得区间内的所有数都是 n 的因子。 因子性质 n 的因子是成对出现的。例如,如果 i 是 n 的因子,那么 n / i 也是 n 的因子。 区间选择 最长的区间应该是从 1 开始,因为 1 是所有整数的因子。然后我们逐步增加 r,直到 r 不再是 n 的因子。 算法步骤 初始化 从 l = 1 开始,逐步增加 r,直到 r 不再是 n 的因子。 计算区间长度 区间的长度就是 r - l + 1。 输出结果 对于每个测试用例,输出最长区间的长度。 代码实现 代码解释 函数 find 初始化 l 和 r 为 1。 使用 while 循环逐步增加 r,直到 n % r != 0。 返回 r - 1,即最长区间的长度。 主函数 main 读取测试用例的数量 T。 对于每个测试用例,读取 n 并调用 find函数。 输出结果。 复杂度分析 时间复杂度 对于每个测试用例,find函数的时间复杂度是 O(r),其中 r 是 n 的最大因子。由于 r 最大为 n,所以最坏情况下时间复杂度为 O(n)。但由于 n 可以达到10的18次方,这个算法在实际应用中可能不够高效。 空间复杂度 只使用了常数级别的额外空间,空间复杂度为 O(1)。 优化思路 对于大数 n,直接遍历 1 到 n 的因子会导致时间复杂度过高。可以考虑以下优化 因子分解 通过因子分解 n,找到所有因子,然后找到最长的连续因子区间。 数学性质 利用因子的数学性质,减少不必要的计算。 优化后的代码 优化后的代码解释 函数 get 通过遍历 1 到 sqrt(n),找到 n 的所有因子。 将因子排序后返回。 函数 find: 获取 n 的所有因子。 遍历因子数组,找到最长的连续因子区间。 主函数 main 读取测试用例的数量 T。 对于每个测试用例,读取 n 并调用 find函数。 输出结果。 优化后的复杂度分析 时间复杂度 因子分解的时间复杂度为 O(sqrt(n)),排序的时间复杂度为 O(k log k),其中 k 是因子的数量。总体时间复杂度为 O(sqrt(n) + k log k)。 空间复杂度 存储因子的空间复杂度为 O(k),其中 k 是因子的数量。 总结 通过优化,我们能够更高效地找到最长的因子区间,特别是在处理大数 n 时,优化后的算法能够显著减少计算时间。
复仇者_轻羽掠影
#include<bits/stdc++.h> using namespace std; int main() { int a,b,c; cin>>a>>b>>c; cout<<a+b+c<<endl; return 0; }//我是傻子
葬仪_亡蝶舞
共13803条