ZOJ1101-赌徒【二分查找】

前言

这道题原本老师说是哈希的练习题,结果发现哈希的代码量忒大,然后就用二分了。


正题

有n个赌徒,如果一个赌徒的钱数是其中三个的和那么这个赌徒是赢家,输出最多钱的赢家。


输入输出(建议无视)

Input

输入一个整数n (1<=n<=1000)表示有n个赌徒。
接下去n行各自输入一个整数 x (-536870912

Output

输出每组测试数据的结果。如果没有胜者则输出”no solution”.

Sample Input

5
2
3
5
7
12
5
2
16
64
256
1024
0

Output for Sample Input

12
no solution


解题思路

将4重循环分成两段,变为两个二重循环。第一个二重循环把所有值记录下来,然后第二个二重循环中用二分查找合适的答案。注意由于可能有多组答案相等的数据,由于需要其中去重的性质,所有哈希很麻烦。


代码

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,a[1001],S,len,wz;
struct hehe{int first,last,c;
};//结构体
hehe sum[1000006];
bool f;
int find(int x)//二分查找
{int mid,l=1,r=len;while (l<=r){mid=(l+r)/2;if (sum[mid].c==x) {return mid;}if (sum[mid].c<x) l=mid+1;else r=mid-1;}return -1;
}
bool cmp(hehe x,hehe y)
{return x.c<y.c;
}//快排用
int main()
{while (true){len=0;f=false;scanf("%d",&n);if (n==0) break;for (int i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+1+n);//排序,后面有用for (int i=1;i<n;i++){for (int j=i+1;j<=n;j++){sum[++len].c=a[i]+a[j];/.记录sum[len].first=i;//记录去重sum[len].last=j;}}sort(sum+1,sum+1+len,cmp);for (int i=n;i>=1;i--){for (int j=1;j<=n;j++){if (i==j) continue;//去重wz=find(a[i]-a[j]);//查找if (wz==-1) continue;while (wz<=len && sum[wz].c==a[i]-a[j] && !f)//前面可能有多组相同答案{if (sum[wz].first!=i && sum[wz].last!=j && sum[wz].first!=j && sum[wz].last!=i)//去重{S=a[i];f=true;break;//由于前面排了序所有一旦找到就是最大的}wz++;}if (f) break;}if (f) break;}if (f) printf("%d\n",S);else printf("no solution\n");//输出}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 跨平台界面框架和为什么你首先要考虑再三

现在用 C# 来开发跨平台应用已经有很成熟的方案&#xff0c;即共用非界面代码&#xff0c;而每个操作系统搭配特定的用户界面代码。这个方案的好处是可以直接使用操作系统原生的控件和第三方控件&#xff0c;还能够和操作系统深度集成。 这里的深度集成主要是指一些 Windows 专…

seq2seq中的beam search算法过程

转载自 seq2seq中的beam search算法过程 首先说明在sequence2sequence模型中&#xff0c;beam search的方法只用在测试的情况&#xff0c;因为在训练过程中&#xff0c;每一个decoder的输出是有正确答案的&#xff0c;也就不需要beam search去加大输出的准确率。 假设现在我…

Spring的properties属性配置文件和Spring常用注解

Spring的properties属性配置文件 问题: 在学习了Spring的知识后&#xff0c;需要被Spring管理的资源都是通过配置文件的形式来告诉Spring容器对象管理谁以及如何管理。但是随着使用次数的增多&#xff0c;我们发现配置文件中配置的标签越来越多&#xff0c;每次我们创建一个新…

即日起,正式进入编程世界!

点击上方蓝色关注我们&#xff01;从今天开始&#xff0c;正式进入编程世界。首先我们先从堪称“少儿编程”的Scratch开始&#xff0c;简洁的编辑窗口加上可读性较高的Chinese&#xff08;大部分的编程编辑器均为英文版&#xff09;&#xff0c;使得该软件特容易上手。班内总有…

使用领域事件

1.引言 最近刚学习了下DDD中领域事件的理论知识&#xff0c;总的来说领域事件主要有两个作用&#xff0c;一是解耦&#xff0c;二是使用领域事件进行事务的拆分&#xff0c;通过引入事件存储&#xff0c;来实现数据的最终一致性。若想了解DDD中领域事件的概念&#xff0c;可参…

ssl2331OJ1373-鱼塘钓鱼 之1【纯贪心】

前言 dp做法 堆优化贪心做法 题目&#xff1a;OJ1373 正题 有N个鱼塘&#xff0c;给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟&#xff08;不能回头&#xff09;。求限定时间内最多能够钓到的鱼数 解题思路 由于数据较小&#xff0c;我…

手把手教会你(单/多)文件上传(并修改文件默认的最大最小值)

/*** MultipartFile 自动封装上传过来的文件* param email* param username* param headerImg* param photos* return*/PostMapping("/upload")public String upload(RequestParam("email") String email,RequestParam("username") String usern…

深入浅出讲解语言模型

转载自 深入浅出讲解语言模型 深入浅出讲解语言模型 1、什么是语言模型呢&#xff1f; 简单地说&#xff0c;语言模型就是用来计算一个句子的概率的模型&#xff0c;也就是判断一句话是否是人话的概率&#xff1f; 那么如何计算一个句子的概率呢&#xff1f;给定句子&…

set注意点map遍历

/** 使用各种set存储多个学生信息问题1&#xff1a;为什么课程名称&#xff08;String&#xff09;放入到HashSet、LinkedHashSet都可以保证唯一性&#xff0c;但是学生&#xff08;Student&#xff09;放入到HashSet、LinkedHashSet&#xff0c;却无法实现唯一性。问题2&…

《认知红利》读书笔记

认知红利 谢春霖 24个笔记 ◆ 上篇 概念重塑 所以&#xff0c;金钱并不是你的财富&#xff0c;而是你“已经交换出去的那部分财富”的数字存在形式而已。 总之&#xff0c;真不真不重要&#xff0c;对不对不重要&#xff0c;你看不看才重要&#xff01; 一片树叶从树上落下&am…

基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

一、前言 至今为止编程开发已经11个年头&#xff0c;从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展&#xff0c;从无畏无知的懵懂少年&#xff0c;到现在的中年大叔&#xff0c;从中的酸甜苦辣也只有本人自知。随着岁月的成长&#xff0c;技术也从原来的三层设计到…

ssl2331OJ1373-鱼塘钓鱼 之2【贪心堆优化】

前言 上篇&#xff1a;纯贪心做法 下篇&#xff1a;dp做法 题目&#xff1a;OJ1373 正题 有N个鱼塘&#xff0c;给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟&#xff08;不能回头&#xff09;。求限定时间内最多能够钓到的鱼数 解题思路…

NLP Coursera By Michael Collins - Week1

转载自 NLP Coursera By Michael Collins - Week1 NLP Coursera By Michael Collins - Week1 构建模型框架 - Markov Process 毕竟是机器学习嘛&#xff0c;所以第一步&#xff0c;先要把实际问题转化成数学模型。 在NLP中&#xff0c;一般使用的都是概率模型&#xff0c;…

JDBC登录功能实现

模拟淘宝登录 package com.bjsxt.jdbc2;import com.bjsxt.entity.User; import entity.Emp;import java.nio.file.attribute.UserDefinedFileAttributeView; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Scanner;/*** 模拟淘宝登…

19级:班级日常分享,一天一瞬间

点击上方蓝色关注我们&#xff01;19级的同学们目前正在做KTV点歌系统项目&#xff0c;截止今日为止&#xff0c;项目已经进展了1天多了&#xff0c;进度还在可控范围内&#xff0c;大部分组的后台都已完成&#xff0c;刘娜小组稍微比较慢了点儿。李磊小组的进度最快&#xff0…

Attentive Sequence to Sequence Networks

转载自 Attentive Sequence to Sequence Networks Attentive Sequence to Sequence Networks 1、Encoder-Decoder 框架 首先我们模型的整体框图如下&#xff1a; Encoder-Decoder 框架可以这么直观地去理解&#xff1a;可以把它看作适合处理由一个句子&#xff08;或篇章&a…

ssl2331OJ1373-鱼塘钓鱼 之3【dp】

前言 上篇&#xff1a; 纯贪心做法 堆优化贪心 题目&#xff1a;OJ1373 正题 有N个鱼塘&#xff0c;给出每分钟可以钓到的鱼数和每钓一次下一次钓减少的鱼数和到下一个鱼塘需要几分钟&#xff08;不能回头&#xff09;。求限定时间内最多能够钓到的鱼数 解题思路 用f[i][…

多线程三种创建方式

方法一&#xff1a;继承Thread Thread package com.bjsxt.create;/*** author dell* data 2021/3/2* 创建一个线程对象&#xff0c;并启动线程** 注意&#xff1a;启动main方法&#xff0c;自动创建main线程* * thread.join() 阻塞乌龟线程&#xff0c;乌龟执行完…

20级四班班级管理规章制度

点击上方蓝色关注我们&#xff01;