http://acm.hdu.edu.cn/showproblem.php?pid=4550

想了挺久,然后各种分类 最终AC,假设是现场,对自己没信心的话,预计还是要WA,,,,,,然后搜题解,发现人家都觉得是简单题,看来我还是太弱了,牡丹江没有做出来K看来还是自己贪心和思维有问题

d是一个Deque

最朴素的算法是,假设当前的数<=d.front(),那么插入队列的前面,否则插入队列后面,可是有零所以须要单独处理,还是自己多举例找规律

我的策略:

1、记录0的个数zero,最小非零的数的个数cnt

2、推断的策略见代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <deque>
#include <vector>
#include <queue>
using namespace std;
#define IN(s) freopen(s,"r",stdin)
const int MAXN = 100+5;
char s[MAXN];
int a[MAXN],len; void solve()
{
    deque<int>d;
    int _min=1000,zero=0,cnt=0;
    for(int i=0;i<len;i++)
        if(a[i]) _min=min(_min,a[i]);
        else zero++;
    for(int i=0;i<len;i++)
        if(a[i] == _min)
            cnt++;
    d.push_front(a[0]);//
    if(a[0] == _min)cnt--;
    if(a[0] == 0)zero--;
    for(int i=1;i<len;i++)
    {
        if(a[i]){
            if(d.front())
            {
                if(a[i]==_min)cnt--;
                if(a[i]<=d.front())d.push_front(a[i]);
                else d.push_back(a[i]);
            }
            else//首位是0
            {
               if(cnt==1 && a[i]==_min)
                {
                    cnt--;
                    d.push_front(a[i]);
                    continue;
                }
                //后面不止一个最小数
                if(a[i]==_min)cnt--;
                d.push_back(a[i]);
            }
            continue;
        }
        //a[i]是0的情况
        zero--;
        if(cnt)//后面还有最小值
            d.push_front(a[i]);
        else
            d.push_back(a[i]);
    }
    for(int i=0;i<d.size();i++)
        printf("%d",d[i]);
    putchar('\n');
} int main()
{
   //IN("hdu4550.txt");
    int ncase;
    scanf("%d",&ncase);
    while(ncase--)
    {
        scanf("%s",s);
        len=strlen(s);
        for(int i=0;i<len;i++)
            a[i]=s[i]-'0';
        solve();
    }
    return 0;
}

hdu 4550 贪婪 思考题 权的更多相关文章

  1. HDU(1853),最小权匹配,KM

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 Cyclic Tour Time Limit: 1000/1000 MS (Java/Other ...

  2. hdu 4550 卡片游戏 贪心

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4550 题意:有n(n <= 100)个0~9之间的卡片,从左往右将卡片放到之前的卡片最左边或者最 ...

  3. hdu 4550 卡片游戏

    http://acm.hdu.edu.cn/showproblem.php?pid=4550 贪心 #include <cstdio> #include <cstring> # ...

  4. HDU 3047 带权并查集 入门题

    Zjnu Stadium 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3047 Problem Description In 12th Zhejian ...

  5. 2019年CCPC网络赛 HDU 6703 array【权值线段树】

    题目大意:给出一个n个元素的数组A,A中所有元素都是不重复的[1,n].有两种操作:1.将pos位置的元素+1e72.查询不属于[1,r]中的最小的>=k的值.强制在线. 题解因为数组中的值唯一 ...

  6. HDU 3491 最小点权割集

    题意:有n个城市,m条双向边,有一群小偷从s前往t偷东西,警察叔叔们想要逮捕小偷们,现在告诉你在每座城市需要多少警察才能抓住这个城市的小偷,为什么说这个城市,因为小偷们会分开跑:然后题目还说不能在s和 ...

  7. HDU 1533 二分图最小权匹配 Going Home

    带权二分图匹配,把距离当做权值,因为是最小匹配,所以把距离的相反数当做权值求最大匹配. 最后再把答案取一下反即可. #include <iostream> #include <cst ...

  8. HDU - 1317 ~ SPFA正权回路的判断

    题意:有最多一百个房间,房间之间连通,到达另一个房间会消耗能量值或者增加能量值,求是否能从一号房间到达n号房间. 看数据,有定5个房间,下面有5行,第 iii 行代表 iii 号 房间的信息,第一个数 ...

  9. hdu 4550

    c: #include<stdio.h> #include<string.h> #define N  300 int f[N]; char s[N]; int main() { ...

随机推荐

  1. 学习MongoDB 二:MongoDB加入、删除、改动

    一.简单介绍 MongoDB是一个高性能.开源.无模式的文档型数据库,是当前NoSQL数据库产品中最热门的一种.数据被分组存储在数据集中,被称为一个集合(Collenction)和对于存储在Mongo ...

  2. SQL查询重复记录、删除重复记录方法

    查找所有重复标题的记录:SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1 ...

  3. C - 链表,推荐

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Descr ...

  4. BZOJ 3196: Tyvj 1730 二逼平衡树( 树套树 )

    这道题做法应该很多吧.... 我用了线段树套treap.... -------------------------------------------------------------------- ...

  5. linux问题: 切换用户之后变成-bash-4.1$

    新增用户 git 添加用户 #sudo useradd -m -s /bin/bash -g group loginname -m 创建home目录 (不加这个要手动添加目录,不然会出现No dire ...

  6. Qt核心剖析: moc

    前面我们说过,Qt 不是使用的“标准的” C++ 语言,而是对其进行了一定程度的“扩展”.这里我们从Qt新增加的关键字就可以看出来:signals.slots 或者 emit.所以有人会觉得 Qt 的 ...

  7. Android应用开发:CardView的使用及兼容

    引言 在Google I/O 2014上,Google公布了Android L Preview版本,此版本的UI有了非常大的改变,很炫很给力!同时,Google也给出了两个可以向下兼容的控件放到了V7 ...

  8. dfs-hdu-4620-Fruit Ninja Extreme

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4620 题目大意: 切水果.给n刀,每刀的时间,每刀切的水果的种类.求能切的最多的刀数,使得每相邻的两 ...

  9. PHP - 自定义函数

    第7章 自定义函数 学习要点: 1.标准函数 2.自定义函数 3.文件包含 4.魔法常量 一般来讲,冗余的代码都是不好的.一而再,再而三地重写代码不仅浪费时间,从布局结构角度看也显得粗制滥造.与所有优 ...

  10. CodeFirst 表之间的关联

    多重性关系可以是Optional(一个属性可拥有一个单个实例或没有) Required(一个属性必须拥有一个单个实例) Many很多的(一个属性可以拥有一个集合或一个单个实例). Has方法包括如下几 ...