HDU2275 Kiki & Little Kiki 1

题解:

multiset的应用

代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<map>
#include<set>
using namespace std;
using namespace std;
#define pb push_back
#define mp make_pair
#define se second
#define fs first
#define ll long long
#define CLR(x) memset(x,0,sizeof x)
#define SZ(x) ((int)(x).size())
#define FOR(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();it++)
typedef pair<int,int> P;
const double eps=1e-9;
const int maxn=100010;
const int N=1000+10;
const int mod=9901;

ll read()
{
    ll x=0,f=1;char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
    return x*f;
}
//-----------------------------------------------------------------------------

int main(){
    char op[6];
    int n,x;
    multiset<int> s;
    multiset<int>::iterator it;
    while(~scanf("%d",&n)){
        s.clear();
        for(int i=1;i<=n;i++){
            scanf("%s%d",op,&x);
            if(strcmp(op,"Push")==0) s.insert(x);
            else{
                if(*s.begin()>x||s.empty()) printf("No Element!\n");
                else{
                    it=s.lower_bound(x);
                    if(*it==x) printf("%d\n",x);
                    else printf("%d\n",*(--it));
                    s.erase(it);
                }
            }
        }
        printf("\n");
    }
    return 0;
}
时间: 2024-12-22 06:13:36

HDU2275 Kiki &amp; Little Kiki 1的相关文章

HDU 2147 kiki&#39;s game kiki的游戏(找P/N状态)

题意:给一个有n*m 个格子的棋盘,将一个硬币放在右上角一格,每次可以往左/下/左下移动一格,碰到不能移动的局面者输. 思路:找P/N状态.先将(n,1)归为P状态,那么能一步到达此位置的有3个位置,分别是其上/右/右上的格子.根据这个规律来找,在整个棋盘的格子上标上P和N.可以发现,棋盘上是有规律的,若提供的n和m皆为奇数,则先手输:否则先手赢. 1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4

HDU - 2276 Kiki &amp;amp; Little Kiki 2

Description There are n lights in a circle numbered from 1 to n. The left of light 1 is light n, and the left of light k (1< k<= n) is the light k-1.At time of 0, some of them turn on, and others turn off. Change the state of light i (if it's on, tu

C#OOP之四 深入理解方法

方法深入研究 方法是完成特定功能的代码集.举例来类比一下,比如一台电视,我们开启电视开关之后,我们不需要去理解电视是如何选台.和电视台联系上而播放的步骤,只需要知道会开关电视.选台等就可以了.所以,方法就象一个被封闭的起来的功能操作. 访问修饰符 封装就是使某些信息隐藏起来,但是,对于一定范围的信息仍是可见的. 封装是面向对象三大特性之一.主要是为了一.避免非法数据的访问:二.保证数据的完整性. 我们可以通过访问修饰符来实现封装.C#支持以下如下访问修饰符: 访问修饰符是一些关键字,用于指定声明

Linux基础学习-用户的创建修改删除

用户添加修改删除 1 useradd添加用户 添加一个新用户hehe,指定uid为3000,家目录为/home/haha [[email protected] ~]# useradd -u 3000 -d /home/haha hehe hehe:x:3000:3000::/home/haha:/bin/bash [[email protected] ~]# ls /home/ haha 这里-u是uid,-g可以指定组id,不定值系统自动分配,-G可以指定附加组,如果不想让用户登录系统可以指定

Hello Kiki(hdu3579+不互质的中国剩余定理)

Hello Kiki Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 3579 Appoint description:  System Crawler  (2015-04-29) Description One day I was shopping in the supermarket. There was a cashier coun

HDU3579 Hello Kiki【一元线性同余方程组】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3579 题目大意: Kiki有X个硬币,她用不同的方式数了N次,每次她把硬币分成大小相等的组,记录每次一组硬币 的个数Mi和数完最后剩余的硬币数Ai.那么问题来了:总共有多少枚硬币? 思路: 典型的一元线性同余方程组X = Ai(mod Mi)求解.题目要求输出最小正整数解,则如果求得同余 方程组的解为0,那么答案就是所有Mi的最小公倍数. AC代码: #include<iostream> #in

HDU 1517: kiki&#39;s game

/** * @link http://acm.hdu.edu.cn/showproblem.php?pid=1517 * @author Sycamore * @date Aug, 21 */// Suppose that their exists a direction(vertically or horizontally) in which// the steps remaining to arrive at the destination (n-1 or m-1) is even, as

HDU——3579 Hello Kiki

Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4206    Accepted Submission(s): 1616 Problem Description One day I was shopping in the supermarket. There was a cashier counting coins

hdu2174 kiki&#39;s game 博弈

Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes the checkerboard game.The size of the chesserboard is n*m.First of all, a coin is placed in the top right corner(1,m). Each time one people can move the