zoukankan      html  css  js  c++  java
  • Codeforces 585D Lizard Era: Beginning | 折半搜索

    参考这个博客

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<map>
    #include<vector>
    typedef long long ll;
    using namespace std;
    map< pair<int,int> , pair<int,int> > mp;
    map< pair<int,int> , pair<int,int> > :: iterator it;
    int ans=-92345678,n,a[30][4];
    ll front,back;
    vector <int> v;
    void dfs1(int x,int l,int m,int w,int f)
    {
        if (x>n/2)
        {
    	it=mp.find(make_pair(l-m,w-m));
    	if (it!=mp.end())
    	{
    	    if (l>it->second.first)
    		mp[make_pair(l-m,w-m)]=make_pair(l,f);
    	}
    	else
    	    mp[make_pair(l-m,w-m)]=make_pair(l,f);
    	return ;
        }
        dfs1(x+1,l+a[x][1],m+a[x][2],w,f*3+0);
        dfs1(x+1,l+a[x][1],m,w+a[x][3],f*3+1);
        dfs1(x+1,l,m+a[x][2],w+a[x][3],f*3+2);
    }
    void dfs2(int x,int l,int m,int w,int f)
    {
        if (x>n)
        {
    	it=mp.find(make_pair(m-l,m-w));
    	if (it!=mp.end())
    	{
    	    if (it->second.first+l>ans)
    	    {
    		ans=it->second.first+l;
    		front=it->second.second;
    		back=f;
    	    }
    	}
    	return ;
        }
        dfs2(x+1,l+a[x][1],m+a[x][2],w,f*3+0);
        dfs2(x+1,l+a[x][1],m,w+a[x][3],f*3+1);
        dfs2(x+1,l,m+a[x][2],w+a[x][3],f*3+2);
    }
    void print(int x)
    {
        if (!x) puts("LM");
        else if (x==1) puts("LW");
        else puts("MW");
    }
    int main()
    {
        scanf("%d",&n);
        for (int i=1;i<=n;i++)
        {
    	scanf("%d%d%d",&a[i][1],&a[i][2],&a[i][3]);
        }
        dfs1(1,0,0,0,0);
        dfs2(n/2+1,0,0,0,0);
        if (ans>-92345678)
        {
    	for (int i=(n+1)/2;i>=1;i--)
    	{
    	    v.push_back(back%3);
    	    back/=3;
    	}
    	for (int i=n/2;i>=1;i--)
    	{
    	    v.push_back(front%3);
    	    front/=3;
    	}
    	for (int i=v.size()-1;i>=0;i--)
    	    print(v[i]);
        }
        else puts("Impossible");
        return 0;
    }
    
  • 相关阅读:
    HDU 5441 离线处理 + 并查集
    [转载]HDU 3478 判断奇环
    POJ 1637 混合图的欧拉回路判定
    [转载] 一些图论、网络流入门题总结、汇总
    UVA 820 --- POJ 1273 最大流
    [转载 ]POJ 1273 最大流模板
    POJ 3041 -- 二分图匹配
    2014西安现场赛F题 UVALA 7040
    UVA 12549
    割点、桥(一点点更新)
  • 原文地址:https://www.cnblogs.com/mrsheep/p/8039605.html
Copyright © 2011-2022 走看看