TYVJ 1001 第K极值
2015-08-22 20:15
344 查看
题目链接:http://tyvj.cn/p/1001
题目很简单,由于n最大10000,我们可以先sort一下,然后算出第K大和第K小,然后判断一下是不是素数。这里可以离线筛法也可以根号ans直接判断,我想再复习一遍线性筛就打了一遍~
tyvj评测机挂了但是还是有数据的,这题数据我就不放了,因为这题数据有问题,数据中没有K。……我RE了无数次看了数据瞬间崩溃……
代码如下:
题目很简单,由于n最大10000,我们可以先sort一下,然后算出第K大和第K小,然后判断一下是不是素数。这里可以离线筛法也可以根号ans直接判断,我想再复习一遍线性筛就打了一遍~
tyvj评测机挂了但是还是有数据的,这题数据我就不放了,因为这题数据有问题,数据中没有K。……我RE了无数次看了数据瞬间崩溃……
代码如下:
[code]#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int size = 10010; bool vis[size*10]; int tot; int pre[size]; void get() { vis[0] = true; vis[1] = true; for(int i = 2;i <= size;i ++) { if(!vis[i]) pre[++tot] = i; for(int j = 1,m;j <= tot && (m = i * pre[j]) <= size;j ++) { vis[m] = true; if(i % pre[j] == 0) break; } } } int num[size]; int main() { /// freopen("input.in","r",stdin); /// freopen("intput.out","w",stdout); get(); int n,k; scanf("%d%d",&n,&k); for(int i = 1;i <= n;i ++) { scanf("%d",&num[i]); } sort(num+1,num+1+n); int ans = num[n-k+1] - num[k]; if(ans < 2) printf("NO\n"); if(!vis[ans]) printf("YES\n"); else printf("NO\n"); printf("%d",ans); /// fclose(stdin); /// fclose(stdout); return 0; }
相关文章推荐
- https实现的几个问题
- 通过java的反射从list中取出对象从而取出属性值
- 什么什么01
- 获得二叉树深度的非递归实现
- 程序员笔试面试常见题总结,更新ing
- poj 1698 二分图多重匹配
- 位级运算的一些事
- Android-基本控件(AutoCompleteTextView,MultiAutoCompleteTextView,ToggleButton)
- 路径(path)题解
- 杭电ACM1425——sort~~水题
- 获取客户端IP
- MySQL必知必会(汇总数据, 聚集函数)
- POJ 1995 Raising Modulo Numbers【快速幂】
- 学习笔记 post和get的区别
- poj 1258 最小生成树 prim
- hdu 1017 A Mathematical Curiosity
- hdu1576 A/B
- Java Map接口LinkedHashMap
- socket编程--socket基本概念
- C#值类型与引用类型