竞赛
考级
我和“ACGO之星”的小伙伴都在ACGO等你,快用这个专属链接加入我们吧!https://www.acgo.cn/application/1695017759936430080
码农爱历史
这次好快啊,之前都要很久
/*注释*/
Hi,ACGO 用户们 最近有人利用网站BUG,报名参与了非所属城市的内部竞赛。对此,给大家带来的困扰和不满,深感遗憾。 首先,ACGO社区非常重视公平竞争和用户体验,我们已及时找到并修复了导致此问题的BUG,并对该用户进行禁言警告。同时,我们将进一步加强网站的安全性,以防止类似的漏洞再次出现。 其次,建议停止对当事人进行辱骂和谩骂。辱骂只会加剧矛盾和冲突,对于整个社区的氛围和体验都是不利的。我们鼓励大家以理性和友善的方式来表达自己的观点和不满,通过建设性的讨论来解决问题。一些人可能对当事人的行为感到愤怒和失望,但希望能够以理性和宽容的态度来处理这个问题。 最后,每个人都有犯错的时候,希望大家能够相互理解和包容。如果当事人意识到自己的错误并采取了积极的措施来弥补,我们也希望其他用户能够宽容和接纳。
AC君
AC地下党招新了! 进入后资格测试取前五名当管理员哦! 传送门加入
复仇者_ドラゴンコア
大家看一下,这是徐皓东带给我们的影响(上图) @Mono
一只爬升的国航小A350
USACO 十二月份铜组比赛题解 Subtitle: USACO December Bronze Problem Solutions 特别提醒:对于本题解的代码有任何的问题,可以在讨论区评论处留言。 第一题 - CANDY COW FEAST: 作为USACO的第一道题目,这一题就是一道普普通通的模拟题目。根据题意模拟NNN头奶牛对MMM根糖果棒的进食行为即可。我们通过创建两个变量remainBegin和remainEnd来记录每一根糖果棒剩下的部分的区间即可。 注意事项: 若奶牛的高度为HHH,且remainBegin = 5, remainEnd = 7,如果 H>=remainBeginH >= remainBeginH>=remainBegin 即表示这一头奶牛可以吃到这根糖果棒的一部分,我们就需要考虑这头奶牛是否能吃完剩下的所有部分。若 remainEnd>H>=remainBeginremainEnd > H >= remainBeginremainEnd>H>=remainBegin,则代表奶牛无法吃完糖果棒,因此奶牛的新身高应该为 H += (H - remainBegin)。否则奶牛的新身高最多也就只有 H = H + remainEnd - remainbegin + 1。并且当这根糖果棒被吃完后,应当立即停止循环以免增加不必要的运行时间。 优化: 本题通过常规的模拟方法是可以通过官方的所有测试点的,但本题可以在此代码的基础上进一步地进行优化。通过观察题目中所给定的信息和数据来看,可以推断出能吃到糖果棒的奶牛们身高比定是从低到高排列的。举例而言,如果第iii头牛的身高比第i+1i+1i+1头奶牛的身高要高,那么第i+1i+1i+1头奶牛比定永远都吃不到糖果棒。也就是说,我们可以通过不断地维护一个单调上升的数组来保存每一头奶牛的信息,确保数组以内的所有奶牛都可以吃到糖果棒。并在每一回合的开始过滤掉那些不满足要求的奶牛,这样子可以大大的降低代码的时间成本。 本题的 C++ 代码如下: 第二题 - COWNTACT TRACTING: 这道题可以被理解成一个贪心最优化问题。解题的思路是先对题干中给定的数据进行分组,将连续地且同为受感染的奶牛分为一组并命名为感染块。通过观察预处理后的若干组感染块,为了使得一开始受感染的奶牛的数量尽可能的小,则可以推断出需要让受感染的天数尽可能的大才可以。因此现在的问题就被转换成了最多需要多少天才可以将初始状态感染成最终给定的感染状态。 为了寻找出最长的感染天数,我们就需要找到长度最短的那一个感染块 - 长度最短的感染块的长度限制了奶牛们被感染的最长天数。找到最短的那个长度后就可以随之找到最长感染的天数了。这里需要分类讨论,设 lenlenlen 为长度最短的感染块的长度: 1. 如果这个长度最短的感染块在奶牛队列的头尾:天数 TTT 的计算则为:T=len−1T = len - 1T=len−1。 2. 如果这个长度最短的感染块在奶牛队列的中间:需要稍微使用一下数学思维,天数 TTT 的计算则为:T=(len−1)/2T = (len-1) / 2T=(len−1)/2。 关于 TTT 的计算的推导过程就不列举了,可以通过自己手动写几个例子来尝试一下。 在求解出最短天数之后,对于最短天数的那一个感染块来说,只需要最少1头牛就可以在最短天数内感染该感染块中的所有奶牛。那么,若其他的感染块的长度为 KKK,可以证明对于一个长度为 KKK 的感染块来说,只需要最少 ceil(K/(T×2+1))ceil(K / (T \times 2 + 1))ceil(K/(T×2+1)) 头奶牛就可以覆盖完整一个感染块。其中, T×2+1T \times 2 + 1T×2+1 表示的是在 TTT 天内1头奶牛最多可以感染其他奶牛的个数。ceil()函数用于对数字向上取整(半头奶牛要算一头奶牛才行)。 最后根据以上公式逐一计算每一个感染组所需要的最少奶牛个数即可。 本题的C++代码如下: 第三题 - FARMER JOHN ACTUALLY FARMS: 本题不保证解法最优。本题所使用的方法是模拟 + 数学常规不等式(没学过不等式的同学可以在网上搜寻一下有关不等式的一些视频观看)。首先,我们需要对FJ给定的植物数组进行一个排序,使得数组呈单调递增或单调递减的性质,方便后期进行处理。为方便起见,这里将会按照FJ对于植物的预期高度从低到高进行排序。排序完成后,可以保证第iii盆花的高度必须要小于第i+1i+1i+1盆花的高度才可以。并且,第i+2i+2i+2盆花的高度也必须要大于第i+1i+1i+1盆花。 我们根据每一盆花的信息列出两条直线方程 y1y1y1 和 y2y2y2,设 XXX 为天数。我们需要做的是使得这个 XXX 尽量的小。 1. y1=arr[i].change∗X+arr[i].heighty1 = arr[i].change*X + arr[i].heighty1=arr[i].change∗X+arr[i].height 2. y2=arr[i+1].change∗X+arr[i+1].heighty2 = arr[i+1].change*X + arr[i+1].heighty2=arr[i+1].change∗X+arr[i+1].height 若要保证 y2>y1y2 > y1y2>y1,可列出以下不等式: arr[i].change∗X+arr[i].height<arr[i+1].change∗X+arr[i+1].heightarr[i].change*X + arr[i].height < arr[i+1].change*X + arr[i+1].heightarr[i].change∗X+arr[i].height<arr[i+1].change∗X+arr[i+1].height 对该不等式进行移项操作,使得所有的未知数在同一边: arr[i].change∗X−arr[i+1].change∗X<arr[i+1].height−arr[i].heightarr[i].change*X - arr[i+1].change*X < arr[i+1].height - arr[i].heightarr[i].change∗X−arr[i+1].change∗X<arr[i+1].height−arr[i].height 因式分解不等式左半部分: X∗(arr[i].change−arr[i+1].change)<arr[i+1].height−arr[i].heightX * (arr[i].change - arr[i+1].change) < arr[i+1].height - arr[i].heightX∗(arr[i].change−arr[i+1].change)<arr[i+1].height−arr[i].height 若 arr[i].change−arr[i+1].changearr[i].change - arr[i+1].changearr[i].change−arr[i+1].change,为正数,则不需要变号: X<(arr[i+1].height−arr[i].height)/((arr[i].change−arr[i+1].change))X < (arr[i+1].height - arr[i].height) / ((arr[i].change - arr[i+1].change))X<(arr[i+1].height−arr[i].height)/((arr[i].change−arr[i+1].change)) 1. 如果不等式右半部分为负数,则证明 XXX 无论如何都没有办法满足条件。说明第i+1i+1i+1盆花永远都无法超越第iii盆花,因此输出−1-1−1即可。 2. 如果不等式右半部分为正数,则整个程序所能接受的最大天数应为该不等式得解,即第i+1i+1i+1盆花在XXX天之后就会被超越。可以求解出X的上限 upperLimit。 若 arr[i].change−arr[i+1].changearr[i].change - arr[i+1].changearr[i].change−arr[i+1].change,为负数,则不等式符号需要变换方向: X>(arr[i+1].height−arr[i].height)/((arr[i].change−arr[i+1].change))X > (arr[i+1].height - arr[i].height) / ((arr[i].change - arr[i+1].change))X>(arr[i+1].height−arr[i].height)/((arr[i].change−arr[i+1].change)) 1. 如果不等式右半部分为负数,则在任意天数之后花的高度都不会被超越,说明永远都不会被超越。 2. 如果不等式右半部分为正数,则只有等到天数大于解的时候才可以达到FJ的要求,即第i+1i+1i+1盆花要超越第iii盆花至少要经过XXX天。可以求出X的下限 lowerLimit。 只有在 lowerLimit<=x<=upperLimitlowerLimit <= x <= upperLimitlowerLimit<=x<=upperLimit 的情况下才是合法的,才能保证每一盆花的高度都是符合FJ的心理预期。但同时也会出现 upperLimit<=lowerLimitupperLimit <= lowerLimitupperLimit<=lowerLimit 的情况,因此也需要输出−1-1−1。 根据以上不等式方程模拟代码即可。 本题的C++代码如下: 本题的Python代码如下:
Macw07
复仇者_帅童
我****************************************************************************************************************************************************************************************************
邹远山
input: ans: 但在本题可过的一份代码 输出的是 死因:可以不用反转
叫我杨同学
1 写了万能头文件还写iostream 2 直接写输出不好吗 3 你既然要输入还赋值 4 白写一行 今天想不出来了,明天再写,还有什么欢迎评论
题目描述: 编写程序,输入5个整数,将5个数中的最大值和最小值交换,然后输出。(5个数各不相同) 输入格式: 输入5个整数。 输出格式: 输出5个整数 样例输入1: 1 3 2 4 5 样例输出1: 5 3 2 4 1
鲨鱼
判断到x的根号就行
186****6026
绝区零YYDS
前五个点是错的,但后五个是对的,有人解释下吗?
葬仪_亡蝶舞
啊啊啊真无语了!!盯代码盯半天,结果数组开小了!? 笑西我了…… 终身警告,数组要开大啊啊啊!!!
萌新
沙发
C^_^ & LET'S GO!
我在题解上补充解法,可是1点提交,就变成了: 我以为是网卡了,刷新了一下,结果还是上图的结果,希望ACGO能修复此问题,谢谢 题解链接
AC
KFCKUN
#include <stdio.h> #include <math.h> int main() { int a,i; scanf("%d",&a); for(i=2;i<=sqrt(a);i++) { if(a%i==0) printf("%d\n",a/i); } return 0; }
.Dream.
共13731条