hdu 1466 計算直線的交點數 dp

2021-07-31 20:45:08 字數 947 閱讀 5921

題目鏈結

思路:dp[i][j]表示i條線 j個交點的情況,那麼我們通過畫個圖可以發現我們新增加的這條線,

所有交點的情況,都可以通過前面已經存在的轉移而來,轉移後的交點可以得到乙個式子:

(i-j)*j+k j為平行線的條數,i-j為自由線的條數 k為自由線本身所擁有的的交點個數

如果當前的狀態可以從已經存在的狀態轉移而來就置1,最後列舉交點輸出可能存在的交點.

#include#define ri(a) scanf("%d", &a)

#define rl(a) scanf("%lld", &a)

#define rf(a) scanf("%lf", &a)

#define rs(a) scanf("%s", a)

#define pi(a) printf("%d\n", (a))

#define pf(a) printf("%lf\n", (a))

#define pl(a) printf("%lld\n", (a))

#define ps(a) printf("%s\n", (a))

#define w(a) while(a--)

#define clr(a, b) memset(a, (b), sizeof(a))

#define mod 100000007

#define inf 0x3f3f3f3f

using namespace std;typedef long long ll;

const int maxn=1e5+10;

int dp[22][200];//全不平行最多192個點 (等差數列)

int n;

void init()}}

return ;

}int main()

puts("");

}return 0;

}

hdu 1466 計算直線的交點數

include intmain return0 一 n條直線把空間分成幾部分 現在說地是空間了,不是平面了,要注意!我們來討論一下吧 點分線 0維分1維 c n,1 c n,0 線分面 1維分2維 c n,2 c n,1 c n,0 麵分空間 2維分3維 c n,3 c n,2 c n,1 c n,...

hdu 1466 計算直線的交點數

平面上有n條直線,且無三線共點,問這些直線能有多少種不同交點數。比如,如果n 2,則可能的交點數量為0 平行 或者1 不平行 input 輸入資料報含多個測試例項,每個測試例項佔一行,每行包含乙個正整數n n 20 n表示直線的數量.output 每個測試例項對應一行輸出,從小到大列出所有相交方案,...

HDU1466 計算直線的交點數

1 n條直線互不平行且無三線共點的最多交點數max 1 2 n 1 n n 1 2 2 一般統計的方法 假設一共有n a b條直線 即n條直線分成2組,分別為a條和b條 則 總的交點數 a內的交點數 b內的交點數 a,b之間的交點數 3 我們來分析加入第n條直線的情況 這裡以n 4為例 分類方法 和...