zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
  • 相关阅读:
    python float转为decimal
    python 断言大全
    python如何判断一个字符串是中文,还是英文。
    分享:selenium(一) xpath
    接口测试——带token请求post接口(postman学习)
    git stash命令
    我的爹娘(一)
    appium自动化测试 环境搭建
    linux下的定时任务
    php面向对象3
  • 原文地址:https://www.cnblogs.com/liulangye/p/2704206.html
Copyright © 2011-2022 走看看