码迷,mamicode.com
首页 > 其他好文 > 详细

CDOJ 1803 绿帽自动机 思维题

时间:2017-12-04 19:00:30      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:ima   ++i   show   ges   and   htm   多少   log   des   

题目链接:http://acm.uestc.edu.cn/#/problem/show/1803

Description

绿人无数的绿帽侠决定金盆洗手啦!
由于绿帽侠后继无人,按照祖祖辈辈的祖训,绿帽侠要把位置传给这个王国里绿帽最少的那个人。
但是,绿帽侠曾记得那个被绿的晚上,而那个人,还在王国里潇潇洒洒。
“当然是选择 不 原谅他啊!”
于是绿帽侠搬出了祖辈流传的神器:绿帽自动机——对着一个人喊一声,“你将加冕为王”,除了他以外的所有人,都被戴上一顶绿帽。
绿帽侠决定金盆洗手前,再干一票!
不为别的,就为了让当初曾经绿了他的人成为这个王国内唯一的绿帽最多的人!
“屏幕前的你,如果不想被我戴上绿帽的话,就帮我算算,我最少需要喊多少次吧。这条咸鱼还没熟,我要再烤烤。”
技术分享图片

Input

第一行两个整数\(n,x(2≤n≤100000,1≤x≤n)\),表示这个王国有\(n\)个人,绿帽侠希望第\(x\)个人绿帽最多。
第二行包括\(n\)个整数,用空格隔开,第\(i\)个整数\(g_i\)表示第\(i\)个人头上有\(g_i\)顶绿帽。\((0≤g_i≤10000)\)

Output

输出一个整数\(a\),表示绿帽侠最少需要喊\(a\)次“你将加冕为王”。

Sample Input and Output

Sample Input Sample Output
5 3
1 1 3 4 4
4
4 2
0 3 2 1
0

Hint

Sample 1:
第1次,对第4人喊“你将加冕为王”,整体绿帽变为 [ 2 2 4 4 5 ]
第2次,对第5人喊“你将加冕为王”,整体绿帽变为 [ 3 3 5 5 5 ]
第3次,对第4人喊“你将加冕为王”,整体绿帽变为 [ 4 4 6 5 6 ]
第4次,对第5人喊“你将加冕为王”,整体绿帽变为 [ 5 5 7 6 6 ]
此时,第3人绿帽最多。
可以证明,至少需要4次。
Sample 2:
第2人绿帽最多,不需喊。


题意

给定\(n\)个数\(g_i\),每次进行操作:指定\(b\),除\(b\)外所有\(g_i\)+1
求至少需要多少次可以使\(g_x\)最大

题解

操作可以分成两步:
1、所有\(g_i\)+1
2、\(g_b\)-1
显然第1步不会影响所有数之间的大小关系,只有第2步会,那么就数所有比\(g_x\)大的那些数比\(g_x-1\)大多少就好了,毕竟比\(g_x-1\)大的都得减去=-=

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100000+10;
int g[MAXN];
int sum;
int main()
{
    int n,x;
    cin>>n>>x;
    for(int i=1;i<=n;++i)   cin>>g[i];
    for(int i=1;i<=n;++i)   if(g[i]>=g[x])  sum+=(g[i]-g[x]+1);
    cout<<sum-1;
    return 0;
}

出题人是条咸鱼=-=


版权所有:scidylanpno
原文链接:http://www.cnblogs.com/scidylanpno/p/7977838.html

CDOJ 1803 绿帽自动机 思维题

标签:ima   ++i   show   ges   and   htm   多少   log   des   

原文地址:http://www.cnblogs.com/scidylanpno/p/7977838.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!