zoj 3202 Second-price Auction

115 篇文章 0 订阅

zoj 3202  Second-price Auction        题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3365

模拟水

backgrond konwledge:

2008-08-01 15:08

对于拍卖市场,我们通常想到的是,谁出价高交易物即给谁。可是,你是否想到:拍卖人可能说“假话”。好比我本来愿意出1万的,但只要第二名出8000,我出8001就能拿下来的话,我就不会报价1万。如何让竞买者显示出真实的信息呢?
   维克瑞教授设计了一个新的拍卖机制:让每个人把愿意出的价格写在纸上装入信封交给你,所有信封打开后,出价最高的人得到那件古董,但实际付的价格是第二位出价最高者的出价(称为二级密封价格拍卖,second-pricesealedauction)。在这个制度下,每个人都会如实地报告自己对古董的评价,因为出价多少只影响自己是否得到古董,而不影响得到古董的情况下付多少钱。比如说,设想有一个人的实际评价是1万,如果他出价1万,第二个最高出价是9千9,他得到100的净剩余;相反,如果他出价9千8,他的净剩余是零,因为他什么也得不到;或者,他出价1万1,另有一人出价1万零1,这时他就要损失100。
   在维克瑞教授设计的机制下,说实话比不说实话好。这里,真实评价与实际支付的价格之间的差额变成了对说实话的奖励,这样的拍卖机制不仅可以保证把被拍卖物卖给评价最高的人(因而是最有效率的),同时也是在所有拍卖机制中卖者能得到最高收入的拍卖机制。这真是经济学梦寐以求的帕累托改进,是一种难得的皆大欢喜的制度安排!

转自:http://blog.sina.com.cn/s/blog_4910d7c50100fi8b.html

题目分析:有了以上的背景知识,不难分析出本题要求。输入一串数,输出最大数的序,第二大数的值。

以下是代码:

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
    int p,x;
}a[150];
int cmp(node a,node b)
{
    return a.p>b.p?1:0;
}
int main()
{
    int t,n,i;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i].p);
            a[i].x=i+1;
        }
        sort(a,a+n,cmp);
        printf("%d %d\n",a[0].x,a[1].p);
    }
    return 0;
}
PS:长见识了。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值