WOJ-1203
Description
有一组数,很多很多个数,里面有一个数出现了超过一半次,请你把它找出来
Input
先是一个N (N<=1000000),然后接下来一行N个数,请一直处理到EOF.
Output
对每个Case,输出一行,这一行只含有一个在之前数列中出现超过一半次的数.
Sample Input
115 5 5 5 5 5 1 2 3 4 6
Sample Output
5
思路:1.可以排序,将所有数据存在一个数组中,并将其排序,取出其中间一个数就是出现频率超过一半的数,时间复杂度为O(nlogn);
2.在网上看到的一个新思路,因为这个数字出现超过半数,所以设置一个变量vote,即投票数,超半数的投票数减去其他数的出现次数肯定大于0,所以使用两个变量candidate和vote,分别代表候选人和票数,假设第一个输入的数字为首个候选者,
按如下方式投票和更换候选人:
若当前数与候选人一样,则把候选人的票数加1
若当前数与候选人不一样, 则把它的票数减1,如果减掉后票数小于0,则把候选人踢掉,用当前数作为新的候选人
最后剩下的候选人就是出现次数超过一半的数。
此思路引自:http://kenby.iteye.com/blog/1031114。
附上利用思路2写的代码:
#include
#include
int main(){
int N;
int candidate;
int ans;
int vote;
int temp;
while (scanf_s("%d", &N) != EOF){
if (N == 1 || N == 2){
scanf_s("%d", &ans);
}
else {
int i;
scanf_s("%d", &candidate);
vote = 1;
for (i = 0; i < N - 1; i++){
scanf_s("%d", &temp);
if (temp == candidate){
vote++;
}
else vote--;
if (vote == 0){
candidate = temp;
vote = 1;
}
}
ans = candidate;
}
printf("%d", ans);
}
}
WOJ-1203的更多相关文章
- 题目1203:IP地址
题目: http://ac.jobdu.com/problem.php?pid=1203 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3052 解决:1504 题目描述: 输入一个ip地 ...
- hdu 1203
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203 思路:01背包问题,求一份都拿不到的概率,状态转移方程dp[j]=min(dp[j],dp[j- ...
- hdu 1203 概率+01背包
I NEED A OFFER! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Sub ...
- WOJ -1204
WOJ -1204 1 出现次数大于一半 那么就利用普通的堆栈的思想,如果删除两个不同的元素,原来的多数元素还是多数元素,所以采取按条件入栈的方法,如果和top元素相同则入栈,否则top--,此元素也 ...
- HDU 1203 I NEED A OFFER (01背包&&概率dp)
M - I NEED A OFFER! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- HDOJ 1203 I NEED A OFFER!(01背包)
10397507 2014-03-25 23:30:21 Accepted 1203 0MS 480K 428 B C++ 泽泽 题目链接:http://acm.hdu.edu.cn/showprob ...
- codevs 1203 判断浮点数是否相等
http://codevs.cn/problem/1203/ 1203 判断浮点数是否相等 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题解 查看运行 ...
- wikioi 1203 判断浮点数是否相等
/*======================================================================== 1203 判断浮点数是否相等 题目描述 Descr ...
- HDU 1203 I NEED A OFFER!(01 背包DP)
点我看题目 题意 : 中文题不详述. 思路 :类似于01背包的DP,就是放与不放的问题,不过这个要求概率,至少得到一份offer的反面就是一份也得不到,所以先求一份也得不到的概率,用1减掉就可以得到所 ...
- HDU 1203 I NEED A OFFER! 01背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203 解题思路:简单的01背包,用dp[i]表示花费不超过i时的最大可能性 状态转移方程 dp[i]= ...
随机推荐
- Robots.txt 协议详解及使用说明
一.Robots.txt协议 Robots协议,也称为爬虫协议.机器人协议等,其全称为“网络爬虫排除标准(Robots Exclusion Protocol)”.网站通过Robots协议告诉搜索引擎哪 ...
- JavaWeb学习总结_Servlet开发
一. Servlet简介 二.Servlet的运行过程 Servlet程序是由Web服务器调用,web服务器收到客户端的Servlet访问请求后: WEB服务器首先检查是否已经装载并创建了该Servl ...
- FreeMarker标签介绍
转自:http://www.blogjava.net/kxbin/articles/366505.html FreeMarker标签使用 一.FreeMarker模板文件主要有4个部分组成 1.文本 ...
- WebClient上传音频文件
//WebClient上传音频文件 public string UploadVoice(string fileNamePath) { Voice model=new Voice(); string s ...
- 学习mongo系列(三) update() save()
一.update()方法 >db.user.update({"name":"user1"},{$set:{"title":" ...
- Hbase的WAL在RegionServer基本调用过程
版权声明:本文由熊训德原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/221 来源:腾云阁 https://www.qclo ...
- SPSS数据分析—分段回归
在SPSS非线性回归过程中,我们讲到了损失函数按钮可以自定义损失函数,但是还有一个约束按钮没有讲到,该按钮的功能是对自 定义的损失函数的参数设定条件,这些条件通常是由逻辑表达式组成,这就使得损失函数具 ...
- to my friends-Don't give up so fast
早上听到大学挺要好的朋友突然说要换行,心情就一股莫名的哀伤,因为当初是三个人一起约定好的,要朝着我们共同的目标而努力奋斗的,这股热情怎能这么轻易地被现实的冷水浇灭.没错,我们是刚出社会的毛头小子,我们 ...
- C#将字符串中间部分替换为*号
在做商城评价的时候,为了显示评价的真实性同时保护客户的隐私,我们将用户昵称中间部分替换为*(如果是单字则替换为* 两个字符串第二位字符串替换为*)如下图 方法如下: /// <summary&g ...
- IIS调试技巧
VS2010如何调试IIS上的网站 通常,我们在Visual Studio里调试ASP.NET网站,都是加个断点,然后按F5,在VS自带的虚拟服务器下调试的.但有时候,VS自带的服务器弱爆了,无法满足 ...