• BZOJ1306: [CQOI2009]match循环赛


    【传送门:BZOJ1306


    简要题意:

      有n个队伍,每个队伍都要和其他队伍比一场,赢了的队得3分,输了的队不得分,打平两队各得一分,给出每个队伍的得分,求出对战方案数


    题解:

      DFS暴搜!!一眼就觉得暴搜,但是时限尴尬,加了些剪枝,10s压线,真的幸运

      剪枝:

      1.如果当前队伍所搜索到的结果得分大于它自己的得分就退出

      2.如果当前队伍全赢仍未搜索到的所有队伍都不能达到它自己的得分就退出

      就这样,靠着RP,压着时限,AC(感人)


    参考代码:

    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    using namespace std;
    int a[11],b[11],n,ans;
    void dfs(int x,int y)
    {
        if(b[x]>a[x]) return ;
        if(b[x]+(n-y+1)*3<a[x]) return ;
        if(x==n)
        {
            ans++;
            return ;
        }
        if(y==n)
        {
            int t=a[x]-b[x];
            int dd=0;
            if(t==2) return ;
            if(t==1) dd=1;
            if(t==0) dd=3;
            if(t==3) dd=0;
            b[y]+=dd;
            dfs(x+1,x+2);
            b[y]-=dd;
        }
        else
        {
            b[x]+=3;dfs(x,y+1);b[x]-=3;
            b[y]+=3;dfs(x,y+1);b[y]-=3;
            b[x]++;b[y]++;dfs(x,y+1);b[x]--; b[y]--;
        }
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        dfs(1,2);
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    spring mvc ajax请求
    spring mvc 返回页面数据
    spring mvc 参数传递的三种方式
    spring mvc 注解示例
    spring mvc handler的三种方式
    MyBatis 一级、二级缓存
    MyBatis 调用存储过程
    MyBatis动态SQL与模糊查询
    spring mvc 注解入门示例
    MyBatis 一对多关联查询
  • 原文地址:https://www.cnblogs.com/Never-mind/p/7614760.html
Copyright © 2020-2023  润新知