找最小的k个数(优先队列)
来源:互联网 发布:广州金博软件 编辑:程序博客网 时间:2024/06/05 03:23
kkun的一道简单签到题
发布时间: 2017年6月11日 17:59 最后更新: 2017年6月11日 18:10 时间限制: 2000ms 内存限制: 512M
描述
青大最优雅的程序员kkun一直友好(?)的致力于为学妹们出一道做法优雅而且非常简单的题。
例如著名的“一道非常简单的炉石题”,“一道非常简单的签到题”,“一道非常简单的数学题”,“一道非常简单的平衡树套替罪羊树套喜羊羊树套圣诞树套动态仙人掌”,“一道非常简单的签到题”(这个人是真的优雅,比那个菜凡不知道高到哪里去了!)
这次也不例外,他想从no cer那里拿到n个数,并找到其中最小的k个数。
但是no cer只是扔给了他一个公式:val[i]=k^(i+1)%1000000007(1<=i<=n),并让他自己一边玩去。
kkun顿时觉得这个问题变得索然无味,所以他让你来解决这个问题。
最终从大到小输出最小的k个数。
输入
第一行一个整数t代表数据组数
每组数据中
第一行两个整数n,k
n<=1e7
k<=1e4
k<=n
输出
从大到小输出k个数,每组数据占一行
样例输入1 复制
1
3 2
样例输出1
8 4
没看这题。= =一个优先队列
#include <bits/stdc++.h>using namespace std;const int N = 1e7+100;typedef long long ll;ll a[N];const int mod = 1e9+7;int main(){ int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d%d",&n,&m); priority_queue<int> Q; a[0]=m; for(int i=1;i<=n;i++) { a[i]=a[i-1]*m%mod; if(i<=m) Q.push(a[i]); } for(int i=m+1;i<=n;i++) { int top=Q.top(); if(a[i]<top) { Q.pop(); Q.push(a[i]); } } printf("%d",Q.top() ); Q.pop(); for(int i=1;i<m;i++) { printf(" %d",Q.top() ); Q.pop(); } printf("\n"); }}
阅读全文
0 0
- 找最小的k个数(优先队列)
- 找最小的K个数
- 找最小的K个数
- 找最小的K个数
- 大顶堆,n个数中找最小的k个数
- Hard 找最小的k个数(Selection Rank) @CareerCup
- 编程艺术第三章 找最小的K个数
- 面试训练找最小k个数
- 最小的K个数
- 最小的K个数
- 最小的K个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的k个数
- 最小的K个数
- BP神经网络 c++实现
- Android架构重构
- qduoj kmp加剪枝
- Android7.0中文文档(API) --- ToggleButton
- 【link和@import的区别】
- 找最小的k个数(优先队列)
- upadte四元数(1)-----一阶龙格库塔法
- 使用iostat分析IO性能
- IntelliJ IDEA 显示行号方法
- 《C语言及程序设计初步》_1.11算术运算符与算术表达式_实践9——分离各位数
- 人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物
- idea中mybatis三剑客之mybatis plugin的破解安装讲解以及
- show()与exec()的区别
- 毕业设计工具和网站总结