关闭

算法题<度度熊就是要刷排名第一>

标签: 算法iteratorpairvector
1790人阅读 评论(0) 收藏 举报
分类:

程序:

/**
 * 度度熊就是要刷排名第一
*/
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <ctime>
using namespace std;

// 存放最大的两个
int first=1, second=0;

inline void compute(int &first, int &second, int &tmp)
{
    if(tmp>first)
    {
        second = first;
        first = tmp;
    }
    else if((tmp!=first) && (tmp>second))
    {
        second = tmp;
    }

}

// 对于setInt1中元素的每个集合,添加一个新的元素,并计算集合异或值
void setConvert(map< set<int>, int > &setInt1, map< set<int>, int > &setInt2, vector<int> &intVec, int n)
{
    setInt2.clear();
    map< set<int>, int >::iterator iter;
    for(iter=setInt1.begin(); iter!=setInt1.end(); ++iter)
    {
        for(int j=0; j<n; ++j)
        {
            set<int> setTmp = iter->first;
            int tmp = intVec[j];
            if(setTmp.find(tmp)!=setTmp.end() )
            {
                continue;
            }
            setTmp.insert(tmp);
            tmp ^= iter->second;
            if(setInt2.find(setTmp) == setInt2.end() )
            {
                setInt2.insert(make_pair(setTmp, tmp) );
                compute(first, second, tmp);
            }
        }
    }
}

int main()
{
    vector< int > intVec;

    int n;
    cin>>n;

    for(int i=0; i<n; ++i)
    {
        int tmp;
        cin>>tmp;

        intVec.push_back(tmp);
    }

    clock_t start = clock();
    // 元素集,异或值
    map< set<int>, int > setInt1;
    map< set<int>, int > setInt2;

    // 构造单元素的集合,并求最大者和此大者
    for(vector<int>::iterator iter=intVec.begin(); iter!=intVec.end(); ++iter)
    {
        int tmp = *iter;
        set<int> setTmp;
        setTmp.insert(tmp);
        setInt1.insert(make_pair(setTmp, tmp));

        compute(first, second, tmp);
    }


    for(int i=1; i<n; ++i)
    {
        if(i%2==1)
        {// 根据setInt1求setInt2
            setConvert(setInt1, setInt2, intVec, n);
        }
        else
        {// 根据setInt2求setInt1
            setConvert(setInt2, setInt1, intVec, n);
        }

    }

    cout<<first<<" "<<second<<endl;

    cout<<"run time: "<< clock()-start<<" ms"<<endl;
    return 0;
}

来源:http://hiphotos.baidu.com/hustspy222/pic/item/05b72b95f603738d479bc585b31bb051fa19ec85.jpg


0
0
查看评论

编程题(度度熊回家最短距离)

一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。 但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离? 输入描述: 输入一个正整数N,...
  • lemisi
  • lemisi
  • 2017-07-25 18:00
  • 388

[编程题] 度度熊回家

时间限制:1秒 空间限制:32768K一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。 但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离? 输入描...
  • gpf951101
  • gpf951101
  • 2017-04-29 20:42
  • 1129

度度熊回家

题目 一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。 但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离? 输入 输入一个正整数N, N ...
  • Double2hao
  • Double2hao
  • 2017-05-18 10:57
  • 616

[HDU6119][2017"百度之星"程序设计大赛 - 初赛(B)]小小粉丝度度熊

小小粉丝度度熊 度度熊喜欢着喵哈哈村的大明星——星星小姐。为什么度度熊会喜欢星星小姐呢?首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听。但这都不是最重要的,最重要的是,星星小姐拍的一手好代码!于是度度熊关注了星星小姐的贴吧。一开始度度熊决定每天都在星星小姐的贴吧里面签到。但是度度熊是一...
  • UISG103
  • UISG103
  • 2017-08-13 16:59
  • 188

[编程题] 不等式数列

度度熊最近对全排列特别感兴趣,对于1到n的一个排列,度度熊发现可以在中间根据大小关系插入合适的大于和小于符号(即 ‘>’ 和 ‘<’ )使其成为一个合法的不等式数列。但是现在度度熊手中只有k个小于符号即(‘<”)和n-k-1个大于符号(即’>’),度度熊想知道对于1至n任意的...
  • sb_Ihateyou
  • sb_Ihateyou
  • 2017-05-03 14:53
  • 2476

hdu 6080-度度熊保护村庄

题目链接:点击打开链接 题解思路:很难想到这是一题图论题。那么我们枚举度度熊和小伙伴任意两个ab组成一个线段看n个村庄是否都在他右边则将ab连接,如果在右边就连接ba,如果都在线段上就双向连接,然后用floyed求最小环。 代码: #include #include #incl...
  • a1214034447
  • a1214034447
  • 2017-08-11 18:16
  • 224

HDU-2017"百度之星"程序设计大赛-初赛(B)-1006-小小粉丝度度熊

ACM模版描述题解签到题,应该算是贪心吧……看看代码吧,说起来比较麻烦。代码#include <cstdio> #include <algorithm> #include <iostream>using namespace std;typedef long lon...
  • f_zyj
  • f_zyj
  • 2017-08-13 16:37
  • 664

小小粉丝度度熊

小小粉丝度度熊 Accepts: 378 Submissions: 1494 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem...
  • Lison_Zhu
  • Lison_Zhu
  • 2017-08-13 15:09
  • 173

算法题<度度熊就是要第一个出场>

题目来源:http://baidu.openjudge.org/round1a/A/ 题目图片:http://hiphotos.baidu.com/hustspy222/pic/item/8cf8441a95cad1c863b010807f3e6709c83d514e.jpg 程...
  • hustspy1990
  • hustspy1990
  • 2012-06-03 10:42
  • 1275

百度之星初赛(B)--小小粉丝度度熊----离散化/二分

小小粉丝度度熊 Accepts: 1075 Submissions: 5191 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Proble...
  • bless924295
  • bless924295
  • 2017-08-13 22:39
  • 89
    个人资料
    • 访问:604284次
    • 积分:7751
    • 等级:
    • 排名:第3263名
    • 原创:192篇
    • 转载:6篇
    • 译文:0篇
    • 评论:99条
    博客专栏
    文章分类
    最新评论