• 1437. Gasoline Station 夜


    http://acm.timus.ru/problem.aspx?space=1&num=1437

    好水的数据呀 dfs 都能过

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <queue>
    #include <vector>
    #include <algorithm>
    
    #define LL long long
    //#pragma comment(linker, "/STACK:1024000000,1024000000")
    using namespace std;
    const int N=256;
    bool visited[N][N][N];
    bool have[N*3];
    int K1,K2,K3;
    int ans;
    void Addans(int k1,int k2,int k3)
    {
        if(!have[k1])
        {have[k1]=true;++ans;}
        if(!have[k2])
        {have[k2]=true;++ans;}
        if(!have[k3])
        {have[k3]=true;++ans;}
        if(!have[k1+k2])
        {have[k1+k2]=true;++ans;}
        if(!have[k1+k3])
        {have[k1+k3]=true;++ans;}
        if(!have[k3+k2])
        {have[k3+k2]=true;++ans;}
        if(!have[k3+k2+k1])
        {have[k3+k2+k1]=true;++ans;}
    }
    void dfs(int k1,int k2,int k3)
    {
        visited[k1][k2][k3]=true;
        Addans(k1,k2,k3);
        if(!visited[K1][k2][k3])
        dfs(K1,k2,k3);
        if(!visited[k1][K2][k3])
        dfs(k1,K2,k3);
        if(!visited[k1][k2][K3])
        dfs(k1,k2,K3);
        int temp;
        temp=min(K1-k1,k2);
        if(!visited[k1+temp][k2-temp][k3])
        dfs(k1+temp,k2-temp,k3);
        temp=min(k1,K2-k2);
        if(!visited[k1-temp][k2+temp][k3])
        dfs(k1-temp,k2+temp,k3);
        temp=min(K1-k1,k3);
        if(!visited[k1+temp][k2][k3-temp])
        dfs(k1+temp,k2,k3-temp);
        temp=min(k1,K3-k3);
        if(!visited[k1-temp][k2][k3+temp])
        dfs(k1-temp,k2,k3+temp);
        temp=min(K2-k2,k3);
        if(!visited[k1][k2+temp][k3-temp])
        dfs(k1,k2+temp,k3-temp);
        temp=min(k2,K3-k3);
        if(!visited[k1][k2-temp][k3+temp])
        dfs(k1,k2-temp,k3+temp);
    
    }
    int main()
    {
        //freopen("data.txt","r",stdin);
        scanf("%d %d %d",&K1,&K2,&K3);
        ans=0;
        memset(visited,false,sizeof(visited));
        memset(have,false,sizeof(have));
        dfs(0,0,0);
        printf("%d\n",ans-1);
        return 0;
    }
    
    
  • 相关阅读:
    关于Update语句在不同数据库中的差别
    MSIL指令速查表
    一个对于博客园的建议
    代码风格关于if语句
    关于Page.cs文件中注释的一点补充
    在Java、C#和C++中遍历集合
    BPEL4WS的开源Java实现
    【Linux】linux固定ip
    【Linux】【MySQL】MySQL主从数据库
    wpf 写个简单的控件吧
  • 原文地址:https://www.cnblogs.com/liulangye/p/2704206.html
Copyright © 2020-2023  润新知