这道题网上非常多人都会说easy,水题之类的话,只是我看了下说这种话的人的程序,能够说他们的程序都不及格!

为什么呢?由于他们的程序都是使用简单的二次排序水过(大概你能搜索到的多是这种程序)。那样自然能够说不及格了。

由于本题真正的目的是求前k个最大数的问题。这就须要活用高速排序。

求前k个最大数的思路:

1 选取一个数位轴,然后把大于这个数的数放到数列前面。小于这个数的数放到数列后面

2 假设前面的数的数量大于k。那么能够去掉后面的数,递归在前面的数查找前k个最大数

3 假设前面的数的数量小于k,那么截去前面的数的数量,即k减去这些数量,然后在后面数列查找

4 假设前面的数刚好等于这个k。那么就能够返回了,找到前k个大数了。

然后主要是要注意细节问题。下标没计算好。会浪费非常多调试时间的。

作者 靖心: http://blog.csdn.net/kenden23/article/details/30272701

最后AC的程序:

#include <cstdio>
#include <vector>
#include <limits.h>
using namespace std;
struct TripNums
{
int a, b, i;
}; void seleteK(vector<TripNums> &vtri, int l, int r, int k)
{
vector<TripNums> fro, bac;
int val = vtri[r].a; for (int i = l; i < r; i++)
{
if (vtri[i].a < val) bac.push_back(vtri[i]);
else fro.push_back(vtri[i]);
} int i = l;
for (int j = 0; j < (int)fro.size(); j++)
{
vtri[i++] = fro[j];
}
vtri[i++] = vtri[r]; if ((int)fro.size() == k || (int)fro.size()+1 == k) return ; if ((int)fro.size() > k)
{
seleteK(vtri, l, l + (int)fro.size()-1, k);
return ;
} for (int j = 0; j < (int)bac.size(); j++)
{
vtri[i++] = bac[j];
}
seleteK(vtri, l + (int)fro.size() + 1, r, k - (int)fro.size() - 1);
} int main()
{
int N, K;
while (~scanf("%d %d", &N, &K))
{
vector<TripNums> vtri(N);
for (int i = 0; i < N; i++)
{
scanf("%d %d", &vtri[i].a, &vtri[i].b);
vtri[i].i = i;
}
seleteK(vtri, 0, N-1, K);
int idx, M = INT_MIN;
for (int i = 0; i < K; i++)
{
if (vtri[i].b > M)
{
idx = vtri[i].i;
M = vtri[i].b;
}
}
printf("%d\n", idx+1);
}
return 0;
}

POJ 3664 Election Time 题解的更多相关文章

  1. POJ 2823 Sliding Window 题解

    POJ 2823 Sliding  Window 题解 Description An array of size n ≤ 106 is given to you. There is a sliding ...

  2. POJ 2643 Election map

    POJ 2643 Election 第一次写博客,想通过写博客记录自己的ACM历程,也想解释下英文题目,写些自己的理解.也可以让自己以后找题目更加方便点嘛.ElectionTime Limit: 10 ...

  3. POJ 2585 Window Pains 题解

    链接:http://poj.org/problem?id=2585 题意: 某个人有一个屏幕大小为4*4的电脑,他很喜欢打开窗口,他肯定打开9个窗口,每个窗口大小2*2.并且每个窗口肯定在固定的位置上 ...

  4. poj 3664

    http://poj.org/problem?id=3664 进行两轮选举,第一轮选前n进入第二轮,第二轮选最高 #include<algorithm> #include<cstdi ...

  5. Poj 1659.Frogs' Neighborhood 题解

    Description 未名湖附近共有N个大小湖泊L1, L2, ..., Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N).如果湖泊Li和Lj之间有水路相连,则青蛙Fi和 ...

  6. poj 3264 Balanced Lineup 题解

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Subm ...

  7. poj 3258 River Hopscotch 题解

    [题意] 牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离的最大值 ...

  8. POJ 1737 Connected Graph 题解(未完成)

    Connected Graph Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3156   Accepted: 1533 D ...

  9. POJ 2643 Election

    Election Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3558   Accepted: 1692 Descript ...

随机推荐

  1. 【Android 应用开发】Android 平台 HTTP网速測试 案例 API 分析

    作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/25996817 工信部规定的网速測试标准 : 除普通网页測速 ...

  2. POJ 1836 Alignment(DP max(最长上升子序列 + 最长下降子序列))

    Alignment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 14486   Accepted: 4695 Descri ...

  3. Android 零基础学习之路

    第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和StringBuffer的使用.正則表達式. 3.面向对象的抽象.封装,继承,多态.类与对象.对象初始化 ...

  4. 如何让MP4 video视频背景色变成透明?

    本文转自:https://www.zhangxinxu.com/wordpress/2019/05/mp4-video-background-transparent/ 亲测,pc端有效,但移动端微信内 ...

  5. Spark SQL概念学习系列之性能调优

    不多说,直接上干货! 性能调优 Caching Data In Memory Spark SQL可以通过调用sqlContext.cacheTable("tableName") 或 ...

  6. Spark RDD概念学习系列之Pair RDD的action操作

    不多说,直接上干货! Pair RDD的action操作 所有基础RDD 支持的行动操作也都在pair RDD 上可用

  7. VSCode新建vue文件自定义模板

    在一个Vue的项目中,反复的新建.vue文件是一个必不可少的工序.本着科技让人偷懒的原则,我们可以利用VSCode的snippet在.vue文件创建后能轻松地生成一套模板. 整个过程是轻松加愉快的,只 ...

  8. Activity全屏沉浸状态

    public class MainActivity extends AppCompatActivity { private static final String TAG = "MainAc ...

  9. Hibernate框架学习(三)——实体规则、对象状态、一级缓存

    一.Hibernate中的实体规则 1.实体类创建的注意事项 1)持久化类提供无参数构造,因为在Hibernate的底层需要使用反射生成类的实例. 2)成员变量私有,提供公有的get和set方法,需提 ...

  10. asp实现阿里大鱼短信API接口的方法

    阿里大鱼是阿里推出的产品,官方提供JAVA..NET.PHP等版本的SDK下载,不知为何,唯独不提供ASP版本的SDK. 不提供没关系,自己写就是了,参照官方提供的API写一个就是了. 本来以为无非是 ...