P2789 直线交点数 題解
繁體中文
提供一種簡單的
考慮產生交點當且僅當斜率不同,我們考慮按照斜率將物品分組,那麼一組數量為
考慮求
於是我們想到求
可以轉移,顯然有:
顯然可以考慮 bitset 優化轉移,然後這題就做完了,代碼也很簡單。
简体中文
提供一种简单的
考虑产生交点当且仅当斜率不同,我们考虑按照斜率将物品分组,那么一组数量为
考虑求
于是我们想到求
可以进行转移,显然有:
显然可以考虑用 bitset 优化转移,然后这题就做完了,代码也很简单。
#include<bits/stdc++.h>
using namespace std;
const int N=900;
bitset<N>B[30];
int n;
int main()
{
cin>>n;
B[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)B[i]|=B[i-j]<<(j*(i-j));
cout<<B[n].count()<<endl;
}