- 博客(73)
- 收藏
- 关注
原创 问题 C: 求逆序对
最直接的方法是使用两层循环遍历所有元素对,检查是否构成逆序对。,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目。在归并排序的过程中,当一个元素从右半部分移动到左半部分时,它与左半部分所有剩余元素构成逆序对。使用分治方法将序列分成更小的子序列,分别计算每个子序列的逆序对,然后合并结果。这样可以在O(nlogn) 的时间复杂度内计算出逆序对的总数。在合并两个已排序的子序列时,可以计算跨越两个子序列的逆序对。接下来的n行,第i+1行表示序列中的第i个数。第一行为n,表示序列长度。
2024-01-06 21:33:57 1216
原创 问题 F: 分巧克力
小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N 块巧克力,其中第i 块Hi×Wi 的方格组成的长方形。例如一块 6x5 的巧克力可以切出 6 块 2x2 的巧克力或者 2 块 3x3 的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。以下 N 行每行包含两个整数 H_i,W_i (1≤Hi,Wi≤105)。第一行包含两个整数 N,K 1≤N,K≤105)。输出切出的正方形巧克力最大可能的边长。
2024-01-06 21:04:11 636
原创 问题 G: 一元三次方程求解
有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。提示:记方程f(x)=0,若存在2个数x1和x2,且x1<x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个根。
2024-01-06 19:32:27 710
原创 问题 H: 取余运算
输入b,p,k的值,求b^p mod k的值(即b的p次方除以k的余数)。其中b,p,k*k为32位整数。指数 p 被分解为二进制形式,算法通过迭代每个二进制位来累计结果。在每次迭代中,如果当前的指数位为 1,将相应的 b 的幂乘入结果。b 每迭代一次,进行平方并取模,以保持结果在可管理的大小。快速幂算法通过二进制展开指数 p 来减少计算量。使用快速幂算法来高效地分解幂运算。输出b^p mod k的值。
2024-01-06 18:03:01 407
原创 问题 D: 解方程
情况2:如果f(l)*f(mid)<0,那么说明l和mid是异侧的,也就是根在左区间,r=mid。情况3:如果f(l)*f(mid)>0,那么说明l和mid是同侧的,也就是根在右区间,l=mid。求方程f(x)=2^x+3^x-4^x=0在[1,2]内的根,精确到10位小数。情况1:如果mid代入后函数值为0,即f(l)=0,则说明是根,循环结束。输出方程f(x)=0的根,精确到10位小数,输出m位小数。输入m(0<=m<=8),输出m位小数。核心思想:使用二分搜索找根。
2024-01-06 16:57:07 417
原创 问题 B: 分金块
每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重量的仪器,我们希望用最少的比较次数找出最轻和最重的金块。输入数据有多行,第一行为金块个数n(2<=n<=5000000),接下来n行是n个金块的重量。输出最重的金块和最轻的金块,用空格隔开。
2024-01-06 16:25:26 406
原创 问题 A: 找出伪币
在这个特定的问题中,目标是找出一组硬币中唯一一个比其他重量轻的伪造硬币。通过递归地将硬币分为两组,然后比较这两组中的硬币的重量,从而确定伪造硬币在哪一组。通过这种方式,每次递归都会缩小搜寻的范围,直至找到伪造硬币。
2024-01-06 15:53:54 470
原创 问题 D: 删数问题
这个算法的关键在于识别何时移除一个数字。一般而言,如果一个数字大于其右边的数字,移除它会使得结果更小。我们重复这个过程,直到移除了 S 个数字或者没有更多的这样的数字可移除为止。输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。从左到右遍历数字,移除那些会使得剩余的数字尽可能小的数字,直到我们移除了 S 个数字。(N不超过240位)输入数据均不需判错。
2024-01-06 12:46:35 511
原创 问题 E: 便利店
天宝来到便利店想买些饮料。便利店有各种型号的瓶装饮料售卖,不同型号的饮料卖不同的价格。1瓶0.25升的卖A元,1瓶0.5升的饮料卖B元,1瓶1升的卖C元,1瓶2升的卖D元。便利店里每种饮料都是无限供应。买1瓶2升的饮料和2瓶0.5升的饮料。这样正好可以买到3升饮料,花费是 90+30+30=150 元。天宝要买N升的饮料,最少需要花多少钱呢?聪明的你写个程序帮她算算吧。输出天宝要买N升的饮料所需要花的钱最小值。2) 输入的数据都是整数。输入数据按照下面格式。
2024-01-06 12:13:40 433
原创 问题 H: 导弹拦截
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以一套系统有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。计算要拦截所有导弹最小需要配备多少套这种导弹拦截系统。对于每一颗飞来的导弹,我们尽量选择一个已有的系统来拦截,如果没有适合的系统,则新增一个系统。要拦截所有导弹最小配备的系统数k。
2024-01-06 11:22:27 389
原创 问题 G: 最大整数
设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613。将一系列字符串排序拼接,使得最终形成的单一字符串在字典序上尽可能大。这不是传统意义上的字典序排序,因为它考虑的是两个字符串拼接后的字典序,而不是单个字符串本身的字典序。输入格式如下: 第一行为正整数n,第2行为n个正整数,2个正整数之间用空格间隔。输出n个数连接起来的最大整数。
2024-01-06 10:56:01 356
原创 问题 F: 节目安排
接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。假期到了,天宝终于可以无压力的看电视了。但是他喜欢的节目有点多,如何尽可能多的看到完整的节目。输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示天宝喜欢的节目的总数。对于每组输入,输出能完整看到的电视节目的个数。他把喜欢的节目时间表给你,请帮他安排一下吧。哦对了,别忘记当n=0的时候要停止。那么这题的区别是什么呢?当n=0时,输入结束。
2024-01-06 10:42:43 393
原创 问题 C: 活动选择
学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使。现在给出n个活动使用礼堂的起始时间bi和结束时间ei(bi < ei<=32767),请你帮助办公室人员安排一些活动来使用礼堂,要求安排的活动尽量多。接受两个参数,a和b,两个参数都是对Hd结构体的引用,并且是常量引用(由const关键字标示),所以写法是。cmp是一个自定义的比较函数,用于确定两个Hd结构体实例在排序时的顺序,为sort提供一个排序的准则。我们要想想要怎么贪心,我们的目标是想选到最多的活动。
2024-01-06 10:29:38 525
原创 问题 B: 分牌
移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;从 ③ 取4张牌放到④(9 8 13 10)->从③取3张牌放到 ②(9 11 10 10)-> 从②取1张牌放到①(10 10 10 10)。有 N 堆纸牌,编号分别为 1,2,…可以在任一堆上取若干张纸牌,然后移动。计算每堆纸牌与平均数的差值,然后在相邻的纸牌堆之间进行调整,从而使得每堆纸牌的数量达到平均数。An (N 堆纸牌,每堆纸牌初始数,l<= Ai <=10000)
2024-01-06 09:20:31 474
原创 P8254 [NOI Online 2022 入门组] 王国比赛(二维数组巧解)
P8254 [NOI Online 2022 入门组] 王国比赛(二维数组巧解)
2023-03-04 09:13:01 191
原创 P5740 【深基7.例9】最厉害的学生(90分第一个测试点错误解决方法)
P5740 【深基7.例9】最厉害的学生(90分第一个测试点错误解决方法)
2023-02-07 19:41:13 333
空空如也
codeblock出现undefined reference问题
2023-01-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人