HDU 1466

经典DP,这样的递推确实有点难。 把所有直线分成两组,可以知道

m条直线的交点方案数 =(m-r)条平行线与r条直线交叉的交点数  + r条直线本身的交点方案

亦就是  =(m-r)*r+r条之间本身的交点方案数(0<=r<m);

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4
 5 bool ans[25][250];
 6
 7 int main(){
 8     memset(ans,false,sizeof(ans));
 9     for(int i=1;i<=20;i++){
10         ans[i][0]=true;
11         for(int r=0;r<=i;r++){
12             for(int k=0;k<=r*(r-1)/2;k++)
13             if(ans[r][k]){
14                 ans[i][(i-r)*r+k]=true;
15             }
16         }
17     }
18     int n;
19     while(scanf("%d",&n)!=EOF){
20         bool flag=false;
21         for(int i=0;i<=n*(n-1)/2;i++){
22             if(flag){
23                 if(ans[n][i])
24                 printf(" %d",i);
25                 continue;
26             }
27             else if(ans[n][i]){
28                 flag=true;  printf("%d",i);
29             }
30         }
31         printf("\n");
32     }
33     return 0;
34 }

HDU 1466

时间: 2024-08-04 14:52:13

HDU 1466的相关文章

hdu 1466 计算直线的交点数

http://acm.hdu.edu.cn/showproblem.php?pid=1466 N条直线的交点方案数 = c 条直线交叉的交点数与(N-c)条平行线 + c 条直线本身的交点方案 = (N - c) * c  + c 条直线之间的交点数. 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 int dp[21][200]; 7

G题 hdu 1466 计算直线的交点数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1466 计算直线的交点数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8799    Accepted Submission(s): 3973 Problem Description 平面上有n条直线,且无三线共点,问这些直线能有多少种不同

[HDU 1466]计算直线的交点数(DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1466 思路:我们知道n条直线得到的最多交点数为(n-1)n/2,据此可以推测数组的大小.而如果n条直线的交点个数<n(n-1)/2,则说明有直线和直线平行,这种情况下,我们设r条直线互不平行,假如r条直线有j个交点成立,有n-r条平行直线分别和r条互不平行直线相交,新增交点n-r个,n条直线得到交点个数为j+(n-r)*r #include <iostrea #include <stdio.

hdu 1466 计算直线的交点数 动态规划第一题

计算直线的交点数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8578    Accepted Submission(s): 3857 Problem Description 平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数. 比如,如果n=2,则可能的交点数量为0(平行)或者1(不平行). Input 输入数据包含多

HDU 1466 直线交点情况

  的BestCoder(有米!) 计算直线的交点数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8881    Accepted Submission(s): 4006 Problem Description 平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数. 比如,如果n=2,则可能的交点数量为0(平行)或者1(不

hdu 1466 计算直线的交点数 递推

以前做这道题目的时候,花了好长时间找规律,感觉十分高大上,今天回顾这个题目的时候,突然有了顿悟, 有了递推的思想就容易解决了. 题意:给你n条直线,问:输出这些直线所有相交情况下的交点个数(升序输出) 解题思路:我们可以从n-1条直线相交的情况推导出n条直线的相交情况,考虑到直线的关系不是相交就是平行,我们可以推倒一下n=4的情况: 已知n=3时有0,2,3; (1):第四条直线与前三条平行,则有0; (2):第四条直线与其中两条平行,则有3; (3):第四条直线与其中一条平行,则有4,5; (

数论一

1.UVa 10916  Factstone Benchmark(对数函数的利用--乘化加) 题意:给出年份,每个10年对应一个当前计算机可支持的字节位数,计算n! < max(max 为当前计算机能表示的最大整数),求最大n. 思路:字节数k = (year - 1940) / 10,  问题就转化成 n ! < 2 ^ k < (n + 1) !, 对两边同取对数,因为log(a*b) = log(a) + log(b);所以log(n!) = sum(log(i)), ( 1<

poj 1466 HDU 1068 Girls and Boys (最大独立集)

Girls and Boys Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 11141   Accepted: 4983 Description In the second year of the university somebody started a study on the romantic relations between the students. The relation "romantically in

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116