ZJU 1101 Gamblers

原创 2006年05月21日 01:24:00

I had got WA many times!!

useful test data:

4
10 9 3 -2
4
10 9 3 -4
4
10 9 3 -16

output should be 10, 9, 3 as squence.

//////////////////////////////////////////////////////////////////////////////////////////////

#include <iostream.h>
#include <string.h>
#include <stdlib.h>

#define MAX 1005
int wager[MAX] ;

int cmp ( const void* a, const void* b )
{
 return *(int*)a - *(int*)b ;
}

bool BinarySearch ( int beg, int end, int value )
{
 int mid ;
 while ( beg <= end )
 {
  mid = ( beg + end ) / 2 ;
  if ( wager[mid] > value )
   end = mid-1 ;
  else if ( wager[mid] < value )
   beg = mid+1 ;
  else
   return true ;
 }
 return false ;
}

/*
// this is true also
bool BinarySearch ( int beg, int end, int value )
{
 if ( beg > end )
  return false ;
 int mid = ( beg + end ) / 2 ;
 if ( wager[mid] > value )
  return BinarySearch ( beg, mid-1, value ) ;
 else if ( wager[mid] < value )
  return BinarySearch ( mid+1, end, value ) ;
 return true ;
}*/

int main()
{
 int n ;
 while ( cin >> n && n )
 {
  int i, j, k, cur ;
  for ( i = 0; i < n; i++ )
   cin >> wager[i] ;

  if ( n < 4 )
  {
   cout << "no solution" << endl ;
   continue ;
  }
  qsort ( wager, n, sizeof(int), cmp ) ;
  
  bool isFind = false ;
  for ( i = n-1; i >= 0; i-- )
  {
   for ( j = n-1; j >= 0; j-- )
   {
    if ( j == i || wager[j]+wager[0]+wager[1] > wager[i] )
     continue ;
    for ( k = j-1; k >= 0; k-- )
    {
     if ( k == i )
      continue ;
     cur = wager[i] - wager[j] - wager[k] ;
     if ( BinarySearch ( 0, k-1, cur ) )
     {
      isFind = true ; 
      break ;
     }
    }
    if ( isFind )
     break ;
   }
   if ( isFind )
    break ;
  }
  if ( isFind )
   cout << wager[i] << endl ;
  else
   cout << "no solution" << endl ;
 }
 return 0 ;
}

编码习惯,优化直觉

“顶尖水平”是一种参考,而不是模仿。 在自己身上打出人家的影子。 在人家身上找到自己的影子。 作为一个还有点追求的程序员,在编程实践中得来几点看法。就两点“编码习惯”和“优化直觉”,但本文有一个局限。...
  • gentledongyanchao
  • gentledongyanchao
  • 2017年02月24日 11:09
  • 674

zju——涨价了

题目描述 小明所在的城市的出租车价又涨了。 涨价之前,出租车的起步价为10元,可行驶3到公里。3公里后,每公里加2元,可行驶到10公里。10公里后,每公里加3元。等待费是每5分钟2元。乘客还需...
  • bingsanchun1
  • bingsanchun1
  • 2013年11月09日 22:44
  • 1454

CRC循环冗余检验算法

1.为什么要有CRC循环冗余检验算法 数据在网络的传输过程中,都是以二进制数据传输,即不是0,就是1;数据传输过程中,因为各种可能的原因导致数据0变为1,1变为0。为了保证传输数据的可靠性,在计算机...
  • fern_girl
  • fern_girl
  • 2017年06月12日 14:38
  • 339

ZOJ-2316-鄙视浙大的OJ

以前一直都是在POJ上面刷,今年要报ACM ICPC只好在自己学校的OJ上面刷,2316这道题真坑,最开始线性代数上面aij指的是第i行j列的元素,这道题居然是第j行i列,出题者你学过线代吗?害我笔算...
  • InsZVA
  • InsZVA
  • 2015年03月10日 22:56
  • 1208

WinXin机器人实现

转载自csdn 陈国林 前辈的博客,非常感谢 一. 引言       我们都知道,微信提供了多种登录的方式,包括手机端、电脑端以及web端。   ...
  • u012108436
  • u012108436
  • 2016年12月16日 16:28
  • 1432

ZOJ--1101:Gamblers(二分查找)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1101 题目大意:          游戏开始时,他们各自将...
  • yf224
  • yf224
  • 2017年06月02日 23:48
  • 107

题目1101:计算表达式

时间限制:1 秒内存限制:32 兆特殊判题:否提交:3152解决:919题目描述:对于一个不存在括号的表达式进行计算输入:存在多种数据,每组数据一行,表达式不存在空格输出:输出结果样例输入:6/2+3...
  • xey_csu
  • xey_csu
  • 2015年01月03日 14:25
  • 315

[BZOJ 1101] POI 2007 Zap · 莫比乌斯 & 分块 超详细题解

初学莫比乌斯反演,翻了大量的题解才搞懂这题,所以决定自己写一个最详细的题解,虽然有些繁琐,但是每一步推导都十分详细。神犇就不要嘲讽我了2333 首先,我们定义 题目即要求 由于d是给定的,所以另 ...
  • ycdfhhc
  • ycdfhhc
  • 2016年02月05日 11:12
  • 976

题目1101:计算表达式

题目描述: 对于一个不存在括号的表达式进行计算 输入: 存在多种数据,每组数据一行,表达式不存在空格 输出: 输出结果 样例输入: 6/2+3+3*4...
  • ivolcano
  • ivolcano
  • 2016年10月16日 14:23
  • 155

题目1101:计算表达式

import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import ...
  • wuli2496
  • wuli2496
  • 2014年01月19日 18:37
  • 796
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ZJU 1101 Gamblers
举报原因:
原因补充:

(最多只允许输入30个字)