比赛难度(HDU4546)
比赛难度
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 768 Accepted Submission(s): 263
假设题目的数量一共是n道,这些题目的难度被评级为一个不超过1000的非负整数,并且一场比赛至少需要一个题,而这场比赛的难度,就是所有题目的难度之和,同时,我们认为一场比赛与本场题目的顺序无关,而且题目也不会重复。
显而易见,很容易得到如下信息:
假设比赛只用1个题目,有n种方案;
假设比赛使用2个题目,有(n-1)*n/2种方案;
假设比赛使用3个题目,有(n-2)*(n-1)*n/6种方案;
............
假设比赛使用全部的n个题目,此时方案只有1种。
经过简单估算,小明发现总方案数几乎是一个天文数字!
为了简化问题,现在小明只想知道在所有的方案里面第m小的方案,它的比赛难度是多少呢?
每组测试数据第一行为两个整数n, m(0 < n, m <= 10000),表示现在有n个题目,现在要求第m小的方案的比赛难度。接下来第二行有n个数字,分别表示这n个题目的难度值。
- 1 #include<stdio.h>
- 2 #include<algorithm>
- 3 #include<iostream>
- 4 #include<string.h>
- 5 #include<math.h>
- 6 #include<queue>
- 7 #include<string.h>
- 8 #include<stack>
- 9 #include<vector>
- 10 #include<map>
- 11 #define sc(x) scanf("%I64d",&x)
- 12 #define pr(x) printf("%I64d",x)
- 13 #define prr(x) printf("%I64d\n",x)
- 14 #define prrr(x) printf(" %I64d",x)
- 15 #define FOR(i,p,q) for(int i=p;i<=q;i++)
- 16 typedef struct pp
- 17 {
- 18 int x;//没有选id的状态
- 19 int y;//选了id的状态
- 20 int id;
- 21 bool operator<(const pp&cx)const//优先队列按难度升序排
- 22 {
- 23 return cx.y<y;
- 24 }
- 25 } ss;
- 26 using namespace std;
- 27 int nandu[10005];
- 28 int main(void)
- 29 {
- 30 int n,m,i,j,k,p,q;
- 31 scanf("%d",&k);
- 32 for(i=1; i<=k; i++)
- 33 {
- 34 priority_queue<ss>que;
- 35 scanf("%d %d",&p,&q);
- 36 for(j=0; j<p; j++)
- 37 {
- 38 scanf("%d",&nandu[j]);
- 39 }
- 40 sort(nandu,nandu+p);
- 41 ss fi;//定义初始状态,也就是难度最小的
- 42 fi.x=0;
- 43 fi.y=nandu[0];
- 44 fi.id=0;
- 45 que.push(fi);
- 46 int cc;
- 47 while(q--)
- 48 {
- 49 ss lk;
- 50 lk=que.top();
- 51 if(q==0)
- 52 {
- 53 cc=lk.y;
- 54 }
- 55 que.pop();
- 56 ss dd;
- 57 if(lk.id<p-1)//当前最小的状态
- 58 {
- 59 dd.x=lk.x;//当前最小状态没有选nandu[lk.id];
- 60 dd.y=lk.x+nandu[lk.id+1];
- 61 dd.id=lk.id+1;
- 62 que.push(dd);
- 63 dd.x=lk.y;//当前最小状态选nandu[lk.id]
- 64 dd.y=lk.y+nandu[lk.id+1];
- 65 dd.id=lk.id+1;
- 66 que.push(dd);
- 67 }
- 68 }
- 69 printf("Case #%d: %d\n",i,cc);
- 70 }
- 71 return 0;
- 72
- 73 }
比赛难度(HDU4546)的更多相关文章
- 【优先队列】-HDU4546比赛难度
比赛难度 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- COJ 0503 比赛
比赛 难度级别:D: 运行时间限制:2000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 初三年级举办了一场篮球赛,共有N个班级参加.当WZJ知道了这件事情, 已经 ...
- DataFoundation比赛总结
2018.3.20号左右,因为研究生的数据挖掘课程的老师要求我们集体参加一个比赛 ,所以在比赛参与时间.比赛难度和比赛类型的几种条件下,我们选择了2018平安产险数据建模大赛-驾驶行为预测驾驶风险比赛 ...
- NOIP2015跳石头[二分答案]
题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选 择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石( ...
- [NOIP2015] 提高组 洛谷P2678 跳石头
题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石(不 ...
- NOIP2015 跳石头
一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N块岩石(不含起点和终点的岩石). ...
- 【NOIP2015】提高day2解题报告
题目: P1981跳石头 描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N ...
- NOIP 2015复赛提高组Day2 T1==Codevs 4768 跳石头
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中 ...
- NOIP 2015提高组复赛
神奇的幻方 题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第 ...
随机推荐
- accomplish, accord
accomplish =achieve; accomplishment=achievement. accomplished: well educated/trained, skilled. skill ...
- Python计算期权隐含波动率
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. Black-Scholes 将期权价格描述为标的价格.行权价.无风险利率.到期时间和波动性的函数. V ...
- 案例分析 CAN OPEN 调试记录 进度
2020.12.29 发现一片博客:https://blog.csdn.net/harrycomeon/article/details/94650103 需要一个硬件:CAN分析仪,网上200元左右. ...
- Linux之sftp服务
Linux之sftp服务 一.sftp介绍转自:[1]Linux如何开启SFTP https://www.cnblogs.com/xuliangxing/p/7120205.htmlSFTP是Secu ...
- 【编程思想】【设计模式】【创建模式creational】lazy_evaluation
Python版 https://github.com/faif/python-patterns/blob/master/creational/lazy_evaluation.py #!/usr/bin ...
- Spring Boot中使用Mybatis
一.步骤 导入依赖:MySQL驱动.Druid依赖.MyBatis与Spring Boot整合依赖.Lombok依赖 在Service接口实现类上添加@Service注解 在Dao接口上添加@Mapp ...
- Reactor之发射器(Flux、Mono)转换操作函数
数据合并函数 由于业务需求有的时候需要将多个数据源进行合并,Reactor提供了concat方法和merge方法: concat public static <T> Flux<T&g ...
- SQL查询:并集、差集、交集
新建两个表进行测试: test_a ID name 1 曹操 2 郭嘉 3 孙权 4 周瑜 test_b ID name 1 刘备 2 关羽 3 张飞 4 孙权 5 周瑜 1.UNION形成并集 UN ...
- 【力扣】146. LRU缓存机制
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果关键字 (key) ...
- pipeline parameters指令
目录 一.简介 二.类型 参数类型 多参数 一.简介 参数化pipeline是指通过传参来决定pipeline的行为.参数化让写pipeline就像写函数,而函数意味着可重用.更抽象.所以,通常使用参 ...