【数学】小C的作业题
题目描述
假期快结束了,小C还有n道数学题没有做完,每道题 i 都有一个复杂度 ai,现在小C想从n道题中选 取3道复杂度乘积最小的习题来做(3道题不能相同),这样的复杂度乘积最小的组合有多少种选取方 案呢?
输入格式
第一行:一个正整数n(3 <= n <= 100000),代表还有n道习题
第二行:n个正整数 ai(1 <= ai <= 1e9),代表了第 i 题的复杂度
输出格式
输出一个数字,代表复杂度乘积最小的不同组合的方案数
输入输出样例
输入 #1
4
1 1 1 1
输出 #1
4
输入 #2
5
1 3 2 3 4
输出 #2
2
输入 #3
6
1 3 3 1 3 2
输出 #3
1
说明/提示
数据范围
对于50%的数据,3 <= n <= 100
对于75%的数据,3 <= n <= 1000
对于100%的数据,3 <= n <= 100000
样例解释
样例一:
任意3道题复杂度乘积的最小值是1
第1题 * 第2题 * 第3题 = 1 * 1 * 1 = 1
第1题 * 第2题 * 第4题 = 1 * 1 * 1 = 1
第1题 * 第3题 * 第4题 = 1 * 1 * 1 = 1
第2题 * 第3题 * 第4题 = 1 * 1 * 1 = 1
样例二:
任意3道题复杂度乘积的最小值是6
第1题 * 第2题 * 第3题 = 1 * 3 * 2 = 6
第1题 * 第3题 * 第4题 = 1 * 2 * 3 = 6
样例三:
任意3道题复杂度乘积的最小值是2
第1题 * 第4题 * 第6题 = 1 * 1 * 2 = 2
解题思路
运用小学二年级知识可得,乘积要小,肯定乘数要小
所以随便sort一下,把前三小的数值求出来
第一小的数值有x个,第二y个,第三z个
- 3 ≤\leq≤x,ans等于Cx3C_x^3Cx3
- ①x = 2,1≤\leq≤y,ans等于Cy1C_y^1Cy1
②x = 1,2≤\leq≤y,ans等于Cy2C_y^2Cy2 - x = 1,y = 1,ans等于Cz1C_z^1Cz1
我就打了个特暴力求解,但是和上面的式子本质一样
众所周知,一再重复,可以用杨辉三角求C
而且C最多就求到f[][3]f[][3]f[][3],根本就不会超
Code
#include <algorithm>
#include <iostream>
#include <cstdio>using namespace std;int n, num, k, a[100100];
long long f[100100][5], ans;void demo (){//求Cf[0][0] = 1;for (int i = 1; i <= n; i++){f[i][0] = 1;for (int j = 1; j <= min (i, 3); j++)f[i][j] = f[i - 1][j - 1] + f[i - 1][j];}
}int main(){scanf ("%d", &n);demo ();for (int i = 1; i <= n; i++)scanf ("%d", &a[i]);sort (a + 1, a + n + 1);num = 3, k = 1;//num是选数,k是记录x或y或z的for (int i = 2; i <= n + 1; i++){if (!num) break;//3个数选完了if (a[i] == a[i - 1]) k++;//记录个数else if (k > num)//直接大于选数个数{if (!ans) ans = 1;ans *= f[k][num];//乘上Cnum = 0;}else//小于num的时候是不会对答案产生影响,因为没有多种方案{if (!ans) ans = 1;num -= k;k = 1;}}printf ("%lld", ans);
}
【数学】小C的作业题相关推荐
- 国庆中秋活动——让孩子亲近数学并爱上数学:《数学小侦探》来袭(来自科大出版社的福利)
通知!通知!通知!!! 玩酷屋十一黄金优惠限时限量秒杀活动,能抢到算你厉害: 1.活动期间 2017/09/30 22:30 --2017/10/03 22:30 2.[数学小侦探]原价 82元, ...
- 数学小魔术 —— 猜数字(二)(我回来了)
数学小魔术--猜数字 请你的同伴随便选一个两位数(当然不告诉你是什么数字),然后要求他从这个数中任意减去一个一位数(1-9,随便哪个都可),把差值乘上 9,得出该乘积之后,再加上原来选定的那个数目,把 ...
- 猴子摘香蕉问题python_Python实战,解决数学小问题猴子分香蕉
Python实战,解决数学小问题猴子分香蕉 问题描述 一个岛上有5个猴子,和一堆香蕉.第一个猴子先来,把香蕉平分成了5份,结果多出来一个香蕉,他就把香蕉扔了,然后抱走一份走了.第二个猴子又来了,把剩下 ...
- Python数字华容道--程序实现的创意数学小游戏
下载链接:Python数字华容道--程序实现的创意数学小游戏-Python文档类资源-CSDN下载 当前的数学教育环境下,更强调的是数学素养的提升,本程序提供了一个免费的数学益智小游戏的学习和训练平台 ...
- 数学计算机小论文范文,数学小论文 数学小论文范文5篇
随着数学课程改革的逐步深入,学生数学素养的提高.问题意识的培养等问题越发成为教师在课堂教学中关注的问题.下面是小编为大家推荐的数学小论文,供大家参考. 数学小论文范文一:数学论文 我曾经看过这样一个新 ...
- 数学小魔术——猜数字
数学小魔术--神奇的二进制 请你任意猜想一个三位数,把这个三位数乘以 91 的乘积的最后三位告诉我,我们很快猜出你心中所想的那个三位数是多少? 我们以对方心中所想的 789 为例,则对方计算出 789 ...
- Python数学小实验(1)——自然对数e的理解
Python数学小实验(1)--自然对数e的理解 先来输出一下自然对数e: >>>from math import e >>>print (e) 2.7182818 ...
- Python数学小实验——自然对数e的理解
Python数学小实验--自然对数e的理解 先来输出一下自然对数e: >>>from math import e>>>print (e)2.718281828459 ...
- 数学小课堂:数学思维(从逻辑出发想问题)
文章目录 引言 I "复利"增长是无法长期为继的 1.1 次级贷款 1.2 CDS(信用违约交换) II 使用逻辑发现问题 2.1 案例:"一带一路" 2.2 ...
- 大于3小于4的整数bleem_六年级数学小升初知识点梳理
对于即将升入初中的六年级学生来说,如何高效复习数学成了家长老师们头一件大事.下面是赶考状元小编整理的关于小学六年级的数学总复习资料,供大家参阅,希望对您的教育教学有帮助! 六年级-小学数学总复习资料1 ...
最新文章
- XML解析文件出错解决方法
- R语言ineq算基尼系数_5 月编程语言排行榜:Java第一,R跌出Top20
- python 文件操作 os.path.join(path, *paths) 路径合成(追加)
- 应对恶劣网络环境,为php-curl设置超时限制,防止服务器卡死
- iOS一些推荐的学习路径发展
- 数据库工具phpstudy
- 对美的拥有-读阿兰德波顿《旅行的艺术》(zz)
- eslint检测时报错
- 设计模式——策略模式详解
- Google 员工公开 Windows 10 零日漏洞隐藏 Bug!
- 【下载】快速通过Python笔试?学大家一样先把LeetCode答案私藏了
- sampro效果_SAM机架设置音乐/话筒/麦克风/输入和效果输出/添加VST插件/详细教程(附:SAM机架VST插件效果包下载)...
- Windows OCR推荐
- 运放参数的详细解释和分析压摆率SR
- 【Notepad++】Notepad++格式化JSON数据
- php用户登录论坛系统,PHPWind
- 解决[“usingcomponents“][“van-button“]: “@vant/weapp/button/index“ 未找到:
- JVM内存区域详解(Eden Space、Survivor Space、Old Gen、Code Cache和Perm Gen)
- VSCode取消references的方法记录
- 【面试必备】java开发转算法工程师