日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P2415 集合求和(一道洛谷好题鸭)(虽然可以水过,但有必研究DP)

發布時間:2023/12/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P2415 集合求和(一道洛谷好题鸭)(虽然可以水过,但有必研究DP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此題坑點:

  • 結果必須要用long long存,int存不下

  • 如果想要像cout<<sum*pow(2,num-1)這樣在輸出時計算會錯:
    long long在計算過程被隱式轉換成了double,需要用強制類型轉換轉換回long long輸出。

  • 集合論和排列組合公式初中還沒學


題目描述

給定一個集合s(集合元素數量<=30),求出此集合所有子集元素之和。

分析

我們來看一個例子:?\{1,2,3\}{1,2,3}

可以得到,它的所有非空子集為?\{1,2,3\}{1,2,3}?\{1,2\}{1,2}\{2,3\}{2,3}?\{1,3\}{1,3}?\{1\}{1}?\{2\}{2}?\{3\}{3}

現在來分析每一個元素在每一個子集中出現的個數:

11出現了44次,22出現了44次,33出現了44次

我們猜測:對于一個有限集合AA,它的每一個元素在AA的所有子集中出現的個數是{2^{\operatorname{card}(A)-1}}2card(A)?1

證明:(集合論純自學,可能格式有誤, 請別在意QAQ)

B\subseteq AB?A, 記n=\operatorname{card}(A)n=card(A),?ss為AA中所有元素之和

\operatorname{card}(B)=1card(B)=1時,顯然,每個元素在BB中出現11次;

\operatorname{card}(B)=2card(B)=2時,保證一個元素必選,在剩余的n-1n?1個元素中選擇11個元素,共C^1_{n-1}=n-1Cn?11?=n?1種情況,故每個元素在BB中出現C^1_{n-1}=n-1Cn?11?=n?1次;

\operatorname{card}(B)=3card(B)=3時,保證一個元素必選,在剩余的n-1n?1個元素中選擇22個元素,共C^2_{n-1}=\frac{(n-1)!}{2(n-1-2)!}=\frac{(n-1)(n-2)}{2}Cn?12?=2(n?1?2)!(n?1)!?=2(n?1)(n?2)?種情況,故每個元素在BB中出現共C^2_{n-1}=\frac{(n-1)(n-2)}{2}Cn?12?=2(n?1)(n?2)?次;

\operatorname{card}(B)=kcard(B)=k時,保證一個元素必選,在剩余的n-1n?1個元素中選擇k-1k?1個元素,共C^{k-1}_{n-1}Cn?1k?1?種情況,故每個元素在BB中出現共C^{k-1}_{n-1}Cn?1k?1?次;

那么,每個元素在AA的每一個子集中出現的個數為:?\sum\limits_{i=1}^{n}C^{i-1}_{n-1}=2^{n-1}i=1n?Cn?1i?1?=2n?1?①

AA的所有子集元素之和為s\times2^{n-1}s×2n?1

故代碼如下:

#include<bits/stdc++.h> using namespace std; int main(){long long tmp,num=0,sum=0;while(cin>>tmp){sum+=tmp;num++; }//讀入集合元素個數num和元素和sumcout<<(long long)(sum*pow(2,num-1)); //必須顯式地轉換為long long輸出 }

?

①:?不懂為什么\sum\limits_{i=1}^{n}C^{i-1}_{n-1}=2^{n-1}i=1n?Cn?1i?1?=2n?1的可以看一下數學歸納法證明:

將用到的性質公式:

  • C^m_n=C^{m-1}_{n-1}+C^{m}_{n-1}Cnm?=Cn?1m?1?+Cn?1m?
  • C^n_n=C^0_n=1Cnn?=Cn0?=1

\sum\limits_{i=0}^{n}C^{i}_{n}=2^{n}i=0n?Cni?=2n

證明:

1)當n=1n=1時:

\sum\limits_{i=0}^{n}C^{i}_{n}=C^0_1+C^1_1=2=2^1i=0n?Cni?=C10?+C11?=2=21

等式成立。

2)假設當n=k(k\in N_+)n=k(kN+?)時\sum\limits_{i=0}^{n}C^{i}_{n}=2^{n}i=0n?Cni?=2n?成立, 即\sum\limits_{i=0}^{k}C^{i}_{k}=2^{k}i=0k?Cki?=2k

那么當n=k+1n=k+1時:

\text{\ \ \ \ }?????\sum\limits_{i=0}^{k+1}C^{i}_{k+1}i=0k+1?Ck+1i?

=C^{0}_{k+1}+C^{1}_{k+1}+C^{2}_{k+1}+...+C^{k}_{k+1}+C^{k+1}_{k+1}=Ck+10?+Ck+11?+Ck+12?+...+Ck+1k?+Ck+1k+1?

=C^{0}_{k+1}+(C^{0}_{k}+C^{1}_{k})+(C^{1}_{k}+C^{2}_{k})+...+(C^{k-1}_{k}+C^{k}_{k})+C^{k+1}_{k+1}=Ck+10?+(Ck0?+Ck1?)+(Ck1?+Ck2?)+...+(Ckk?1?+Ckk?)+Ck+1k+1?

=C^{0}_{k}+(C^{0}_{k}+C^{1}_{k})+(C^{1}_{k}+C^{2}_{k})+...+(C^{k-1}_{k}+C^{k}_{k})+C^{k}_{k}=Ck0?+(Ck0?+Ck1?)+(Ck1?+Ck2?)+...+(Ckk?1?+Ckk?)+Ckk?

=2(C^0_k+C^1_k+C^2_k+...+C^k_k)=2(Ck0?+Ck1?+Ck2?+...+Ckk?)

=2\sum\limits_{i=0}^{k}C^{i}_{k}=2i=0k?Cki?

=2\times2^k=2×2k

=2^{k+1}=2k+1

此時等式依然成立。假設成立。

\sum\limits_{i=0}^{n}C^{i}_{n}=2^{n}i=0n?Cni?=2n

由此可以得到,\sum\limits_{i=1}^{n}C^{i-1}_{n-1}=2^{n-1}i=1n?Cn?1i?1?=2n?1

轉載于:https://www.cnblogs.com/crazily/p/10352647.html

總結

以上是生活随笔為你收集整理的P2415 集合求和(一道洛谷好题鸭)(虽然可以水过,但有必研究DP)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。