码迷,mamicode.com
首页 > 其他好文 > 详细

HDU-1466 计算直线的交点数 经典dp

时间:2016-08-11 22:11:58      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

1、HDU-1466   计算直线的交点数

2、链接:http://acm.hdu.edu.cn/showproblem.php?pid=1466  

3、总结:不会推这个,看了题解。。

状态转移: m条直线方案数=(m-r)条平行直线与r条直线相交数+r条直线自身方案数

技术分享
#include<iostream>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstdio>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f

int main()
{
    int n,dp[22][200];
    memset(dp,0,sizeof(dp));
    dp[1][0]=1,dp[2][0]=1,dp[2][1]=1;

    for(int i=3;i<21;i++){
        dp[i][0]=1;
    }

    for(int m=3;m<=20;m++){
        for(int r=1;r<=m;r++){
            for(int i=0;i<=r*(r-1)/2;i++){    
                if(dp[r][i]){               // i为r条直线自身交点数
                        
                    dp[m][(m-r)*r+i]=1;     
                    //(m-r)*r为(m-r)条平行直线与r条直线交点数,(m-r)*r+i即为m条直线交点数
                }
            }
        }
    }

    while(scanf("%d",&n)!=EOF)
    {
        for(int i=0;i<n*(n-1)/2;i++){
            if(dp[n][i]){
                printf("%d ",i);
            }
        }
        printf("%d\n",n*(n-1)/2);
    }

    return 0;
}
View Code

 

HDU-1466 计算直线的交点数 经典dp

标签:

原文地址:http://www.cnblogs.com/sbfhy/p/5762544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!