好多鱼--全国模拟(一)

[编程题] 好多鱼!

时间限制:1秒

空间限制:32768K

牛牛有一个鱼缸。鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸内存在着大鱼吃小鱼的定律。经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B。考虑到这个,牛牛要放入的鱼就需要保证:

1、放进去的鱼是安全的,不会被其他鱼吃掉

2、这条鱼放进去也不能吃掉其他鱼

鱼缸里面已经存在的鱼已经相处了很久,不考虑他们互相捕食。现在知道新放入鱼的大小范围[minSize,maxSize](考虑鱼的大小都是整数表示),牛牛想知道有多少种大小的鱼可以放入这个鱼缸。

输入描述:

输入数据包括3行. 第一行为新放入鱼的尺寸范围minSize,maxSize(1 ≤ minSize,maxSize ≤ 1000),以空格分隔。

第二行为鱼缸里面已经有鱼的数量n(1 ≤ n ≤ 50)

第三行为已经有的鱼的大小fishSize[i](1 ≤ fishSize[i] ≤ 1000),以空格分隔。

输出描述:

输出有多少种大小的鱼可以放入这个鱼缸。考虑鱼的大小都是整数表示

输入例子:

1 12 1 1

输出例子:

3

解题思路:本题想法是采用set,池子里的每条鱼的2-10倍,与1/10-1/2的整数存入set中,然后对于给定鱼的大小范围,找是否在set中如果不在,count++

注意事项:对于村1/10-1/2时,对于1/10,如果算出的为小数,则存入比它大的第一个整数

对于1/2,算出为小数,存比它小的第一个整数即存整型的1/2*a[i]即可,所以只有1/10需要特别处理一下

 1 #include <iostream>
 2 #include <set>
 3 using namespace std;
 4
 5 int main()
 6 {
 7     int minSize;
 8     int maxSize;
 9     while(cin>>minSize>>maxSize)
10     {
11         int num;
12         cin>>num;
13         int a[num];
14         for(int i=0;i<num;i++)
15         {
16             cin>>a[i];
17         }
18         set<int> s;
19         //存所有鱼的2-10倍值
20         for(int i=0;i<num;i++)
21         {
22             for(int j=2*a[i];j<=10*a[i];j++)
23             {
24                 s.insert(j);
25             }
26         }
27         //存所有鱼的1/10 - 1/2,例如a[i]=22存入的就是3-11
28         //例如a[i] = 3 存入的为1
29         //因此对于a[i]/10存入比它算的结果的小数大的最小整数
30         //对于a[i]/2存入的是比它算的结果的小数小的最大的整数
31         for(int i=0;i<num;i++)
32         {
33             float tmp =(a[i]*1.0)/10;
34             int j = a[i]/10;
35             if(tmp > j)
36             {
37                 j = j+1;
38             }
39             for(;j<=a[i]/2;j++)
40             {
41                 s.insert(j);
42             }
43         }
44         int count = 0;
45         set<int>::iterator it;
46         //for(it = s.begin(); it != s.end(); it++)
47         //{
48         //    cout << *it << " ";
49         //}
50         //cout<<endl;
51         for(int i= minSize;i<=maxSize;i++)
52         {
53             it = s.find(i);
54             if(it == s.end())//没找到
55             {
56                 count++;
57             }
58
59
60         }
61         cout<<count<<endl;
62
63     }
64 }

网上参考代码思路:用标志位flag的值来存是否在范围内,如果在flag = false

对于输入鱼的范围,判断它是否在池子中每条鱼2-10倍和1/10-1/2倍之间,如果在置false,且跳出与池子中鱼判断的循环。

 1 #include"stdio.h"
 2 int main()
 3 {
 4     int N;
 5     int minn,maxx;
 6     int ai[51];
 7     scanf("%d%d%d", &minn, &maxx,&N);
 8
 9     for(int i=0; i<N; i++)
10     {
11         scanf("%d",&ai[i]);
12     }
13     int num=0;
14     for(int i=minn; i<=maxx; i++)
15     {
16         bool sign=true;
17         for(int j=0;j<N;j++)
18         {
19             if(i>=2*ai[j] && i<=10*ai[j])
20             {
21                 printf("%d ",i);
22                 sign=false;
23                 break;
24             }
25             else if(i>=1.0/10*ai[j] && i<=1.0/2*ai[j])
26             {
27                 printf("%d ",i);
28                 sign=false;
29                 break;
30             }
31         }
32         if(sign)
33          num++;
34     }
35     printf("%d\n",num);
36     return 0;
37 }
时间: 2024-08-10 14:52:38

好多鱼--全国模拟(一)的相关文章

好多鱼游戏软件

好多鱼游戏软件,好多鱼系统定制,好多鱼游戏开发,好多鱼平台开发,好多鱼复利拆分系统开发找王经理:139-2896-7204(微电) 好多鱼系统介绍: 商业模式创新不是复制,更不是标杆管理,不需要商业对标.如果深陷竞争对手的模仿泥潭,可能会局限我们进行商业模式创新的创意思维,难以在商业生态上有所突破.现在企业的边界越来越模糊,不同的商业模式在同一个市场中竞争的例子到处都是,比如京东是电子商务公司,其家用电器销售就会和国美家电连锁企业产生竞争,而这两个企业的商业模式却完全不一样,所以,我们在进行商业

好多鱼

牛客网的题目: 链接:https://www.nowcoder.com/questionTerminal/e3dd485dd23a42899228305658457927 牛牛有一个鱼缸.鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸.鱼缸内存在着大鱼吃小鱼的定律.经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B.考虑到这个,牛牛要放入的鱼就需要保证: 1.

添加字符--全国模拟(三)

[编程题] 添加字符 时间限制:1秒 空间限制:32768K 牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了. 而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢.比如"abc"和"abd"对应相等的位数为2,为前两位. 牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样.现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位? 输入描述: 第一行为

5、丑陋的字符串--全国模拟(四)

[编程题] 丑陋的字符串 时间限制:1秒 空间限制:32768K 牛牛喜欢字符串,但是他讨厌丑陋的字符串.对于牛牛来说,一个字符串的丑陋值是字符串中相同连续字符对的个数.比如字符串"ABABAABBB"的丑陋值是3,因为有一对"AA"和两对重叠的"BB".现在给出一个字符串,字符串中包含字符'A'.'B'和'?'.牛牛现在可以把字符串中的问号改为'A'或者'B'.牛牛现在想让字符串的丑陋值最小,希望你能帮帮他. 输入描述: 输入包括一个字符串s,

1、黑白卡片--全国模拟(四)

[编程题] 黑白卡片 时间限制:1秒 空间限制:32768K 牛牛有n张卡片排成一个序列.每张卡片一面是黑色的,另一面是白色的.初始状态的时候有些卡片是黑色朝上,有些卡片是白色朝上.牛牛现在想要把一些卡片翻过来,得到一种交替排列的形式,即每对相邻卡片的颜色都是不一样的.牛牛想知道最少需要翻转多少张卡片可以变成交替排列的形式. 输入描述: 输入包括一个字符串S,字符串长度length(3 ≤ length ≤ 50),其中只包含'W'和'B'两种字符串,分别表示白色和黑色.整个字符串表示卡片序列的

组队竞赛--全国模拟(三)

[编程题] 组队竞赛 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值. 例如: 一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3 一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2 为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大. 如样例所示: 如果牛牛

排序子序列--全国模拟(三)

牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的.牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列. 如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2 输入描述: 输入的第一行为一个正整数n(1 ≤ n ≤ 10^5) 第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字. 输出描述

1、黑化的牛牛--全国模拟(四)

[编程题] 黑化的牛牛 时间限制:1秒 空间限制:32768K 牛牛变得黑化了,想要摧毁掉地球.但他忘记了开启地球毁灭器的密码.牛牛手里有一个字符串S,牛牛还记得从S中去掉一个字符就恰好是正确的密码,请你帮牛牛求出他最多需要尝试多少次密码. 如样例所示S = "ABA",3个可能的密码是"BA", "AA", "AB". 当S = "A", 牛牛唯一可以尝试的密码是一个空的密码,所以输出1. 输入描述: 输

变换次数--全国模拟(三)

[编程题] 变换次数 时间限制:1秒 空间限制:32768K 牛牛想对一个数做若干次变换,直到这个数只剩下一位数字. 变换的规则是:将这个数变成 所有位数上的数字的乘积.比如285经过一次变换后转化成2*8*5=80. 问题是,要做多少次变换,使得这个数变成个位数. 输入描述: 输入一个整数.小于等于2,000,000,000. 输出描述: 输出一个整数,表示变换次数. 输入例子: 285 输出例子: 2 解题思路:针对于给定的数 1)求出数的每一位,且相乘存入result中 2)一次操作后co