zoukankan      html  css  js  c++  java
  • poj 2856 Y2K Accounting Bug

    水题?

    分类,总共就四种情况,逐一讨论(考虑到要使利益最大)

    看来做题前,还是应当冷静思考,技巧比技术更具效率。

    #include<stdio.h>
    int main()
    {
    int s, d;
    while(scanf("%d%d", &s,&d) != EOF)
    {
    int ans = -1;
    if(4*s < d) ans = 10*s-2*d; 
    else if(3*s < 2*d) ans = 8*s-4*d; 
    else if(2*s < 3*d) ans = 6*s-6*d; 
    else if(s < 4*d) ans = 3*s-9*d; 
    if(ans < 0) printf("Deficit ");
    else printf("%d ", ans);
    }

    return 0;
    }

    用这个方法解此题十分方便,但是不能轻易满足,因为这个题目的特性,我尝试用dfs来解此题,虽然超时了,但是作为一种尝试,应当记下来

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<iostream>
    using namespace std;
    long long month[12]; long long s,d,c,maxx=0,step;//s表示赚,d表示亏,c表示满足的情况的序数
    long long sum[5000];//sum=-1,表示亏;sum=1,表示赚;sum=0,表示不和要求
    long long getsum()
    {
    long long ss=0;
    for(int i=0;i<12;i++)
    ss+=month[i];
    return ss;
    }
    long long check()
    {
    for(long long i=0;i<8;i++)
    {
    if((month[i]+month[i+1]+month[i+2]+month[i+3]+month[i+4])>=0)
    {
    return 0;//表示不满足题目要求
    }
    }
    return 1;//表示满足题目的要求
    }
    void dfs(long long m,long long t)
    {
    if(t==step)
    {
    if(check()){sum[c++]=getsum();}
    return;
    }
    if(t>step||m>11)return;
    month[m]=s;
    dfs(m+1,t+1);
    month[m]=-d;
    dfs(m+1,t);
    return;
    }
    int main()
    {
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    while(cin>>s>>d)
    {
    memset(sum,0,sizeof(sum));
    c=0;
    for(long long i=0;i<12;i++)
    month[i]=0-d;
    //for(long long i=0;i<12;i++)
    //cout<<month[i]<<endl;
    for(step=0;step<11;step++)
    {
    dfs(0,0);
    }
    maxx=-999999999;
    for(long long i=0;i<c;i++)
    {
    if(maxx<sum[i])maxx=sum[i];
    }
    if(maxx>=0)cout<<maxx<<endl;
    else printf("Deficit ");
    }
    return 0;
    }

    看到这么冗长的代码,超时是必然,但是作为一种转化方法,我希望自己能够灵活掌握。

    希望下次在我运用转化的时候,能够是简化题目,而不是像这次一样弄巧成拙。

  • 相关阅读:
    c# 图像转化成灰度图
    文件操作 流
    GBK UTF8 GB2312 流
    助力奥巴马,拯救大气层
    ASP.NET 缓存技术
    GridView 和 ViewState 来实现条件查寻
    把日期按指定格式输出
    创业灵感淘宝网
    文件_上传_下载
    java23种设计模式与追MM
  • 原文地址:https://www.cnblogs.com/plank-george-zzo/p/3215335.html
Copyright © 2011-2022 走看看