2018年重庆市程序设计大赛之好吃的鸭脖(这年比赛中最简单的题,没有之一)

2992.好吃的鸭脖

【问题描述】
达瓦迷恋上了麻辣鸭脖,但是鸭脖太辣了,要靠牛奶解辣。给你n个鸭脖的辣度,以及n瓶牛奶的甜度。每瓶牛奶只能解一个鸭脖的辣,如果牛奶的甜度大于鸭脖的辣度,达瓦的幸福感就能得到1点的提升,相同幸福感不变,否则就会减少1点。
请你合理的分配牛奶,让达瓦的幸福度最高。
【输入形式】
包含多组数据,第一行一个整数T,表示数据组数。
每组数据的第一行,一个整数n
第二行,n个整数,鸭脖的辣度ai
第三行,n个整数,牛奶的甜度bi
1<= n <= 1000000
1<= ai, bi <= 2000
保证对于所有数据∑n<=1000000。
【输出形式】
每组数据一行,单独的一个整数,最高能达到的幸福感。
【样例输入】
2
4
2 3 8 9
1 4 7 10
5
2 23 21 4 56
6 7 33 42 1
【样例输出】
2
3

解法思路:

这道题需要求出给定辣度的鸭脖和甜度的牛奶能达到最高的幸福感,当辣度大于甜度的时候幸福感就减一,当甜度大于辣度的时候幸福感就加一。所以这道题有个解题思路就是先把给出的辣度和甜度从小到大排个序,然后利用贪心思想,把最小的辣度a1与甜度进行比较,找到最小的比a1大的甜度,然后幸福感加一,如果没找到就意味着没有比该辣度大的甜度了,所以幸福感减一。然后再把剩下的最小的辣度a2与甜度进行上述比较,以此类推a3、a4、a5…直至结束,最后再输出此时的幸福感。

我跳进的坑:(应该有很多的人和我一样)

这道题我第一次做的时候, 利用了田忌赛马的思想,把最大的辣度和最小的甜度进行抵消,依次进行,测试数据的时候都过的了,但是在测试系统中一直不能AC,所以我就很困惑,而且自己一直找不到那种特殊的情况,直到我某天想到了下面的一组数据:
辣度:1 10 20
甜度:2 11 21
这个方法不攻自破…

这道题我收获了:

  1. 通过头文件调用algorithm,重写一个比较大小的方法,利用sort()函数进行排序,大大的减少了程序的运行时间、占用内存以及自己码代码的时间
  2. 将比较大的数组、变量等定义在main()函数体外(即全局变量),这样程序不容易被爆掉。因为main()在栈里面(或者说一个线程之类的),如果变量过大就会溢出而导致程序直接崩溃。全局变量在静态存储区分配内存,局部变量是在栈上分配内存空间的。

具体代码:

#include<iostream>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值