大水題一道,合法個數用 乘法原理+組合數公式
具體做法:num[i]表示與i相連的點的個數
我們稱圖上的b-d邊為中心邊
我們列舉中心邊
列舉兩個點,先看一側的點i,它的鄰接點有num[i]個,但是其中乙個點是中心邊的另乙個點,符合條件的點有num[i]-1個,利用組合數公式可以求出在這些點中選2個的方案有x種,那麼y總數就要加上x*(num[另乙個點]-1),另乙個同理。
至於最大值,我們預處理每個點連線的邊的權值前三大
為啥是前三大呢?因為前兩大中可能有有一條中心邊,所以要維護前三大值,在一側找出符合條件的邊的前兩大值,在另一側找出最大值算出總和就行了
注意y總數要開long long型
#include #include using namespace std;
struct twmaxm[200010][4];
long long num[200010];
int x[200010],y[200010];
int len[200010];
int maxf;
long long cnt;
void max_add(int a,int z,int b)
if(z>=s2)
if(z>=s3)
}long long cnm(long long x)
int max11,max12,max2;
bool f[4];
void find_max1(int a,int d)
int find_max2(int a,int d)
int main()
for(int i=1
;i<=n-1;i++)
if(num[b]>=3&&num[a])
}printf("%lld\n%d",cnt,maxf);
return0;
}
清北2016 小Y的問題
一遍過sample,高興的我去測試,80 qwq。卡常。ac程式 30的方法 看資料 n 10 這個資料直接打暴力完全ok,列舉四條邊,看是否能滿足y字的要求就行 60的方法 資料 n 2000 這個資料大約能承受o n 2 的複雜度 我們不妨列舉度數為三及以上 有三條以上的邊與之相連線 的點 在圖...
小Y的難題
font size aaaa aa近期小y迷上了數學,總是在思考各種數學問題。有一天,他不小心把墨水灑在草稿紙上。他如今能看到的是 2?3?1?4 表示看不清的地方 小y的記憶力不錯,他知道 1 每乙個?僅僅會是 三個符號之中的乙個。2 總共同擁有且僅有乙個 3 原式一定是乙個等式。如 2 3 1 ...
3407 小 Y 的徽章
畢業了,小 y 想要打造一枚具有紀念意義的徽章送給老師,該徽章是周長為 ll 的正 nn 邊形,現在小 y 想要知道這枚徽章的面積有多大,你能幫助她解決這個問題麼?輸入只有一行,包含兩個整數 n,l 3 n 50,1 l 100000 n,l 3 n 50,1 l 100000 其中 nn 代表徽章...