NOI2019省選模擬賽 第三場

傳送門

明明沒參加過卻因為點進去結果狂掉\(rating\)……

\(A\) 集合

如果我們記

\[f_k=\sum_{i=1}^nT^i{n-i\choose k}\]

那么答案顯然就是\(f_{k-1}\)

然后就可以開始推倒了

\[ \begin{aligned} f_k &=\sum_{i=1}^nT^i{n-i\choose k}\\ &=\sum_{i=1}^nT^i{n-i-1\choose k}+\sum_{i=1}^nT^i{n-i-1\choose k-1}\\ &={1\over T}\sum_{i=2}^nT^i{n-i\choose k}+{1\over T}\sum_{i=2}^nT^i{n-i\choose k-1}\\ &={1\over T}\left(f_k-T{n-1\choose k}+f_{k-1}-T{n-1\choose k-1}\right)\\ &={1\over T}\left(f_k+f_{k-1}-T{n\choose k}\right)\\ \end{aligned} \]

然后整理一下就可以得到

\[f_k={f_{k-1}-T{n\choose k}\over T-1}\]

邊界條件為\(f_0\),顯然是個等比數列求和的形式,為

\[f_0={T(1-T^n)\over 1-T}\]

直接遞推就行了

順便注意如果\(T=1\)那么答案顯然是\(1\)

//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
const int N=1e7+5,P=998244353;
inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}
inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
int ksm(R int x,R int y){R int res=1;for(;y;y>>=1,x=mul(x,x))(y&1)?res=mul(res,x):0;return res;
}
int inv[N],f[N],res,n,k,T,iv;
int main(){
//  freopen("testdata.in","r",stdin);scanf("%d%d%d",&n,&k,&T);inv[0]=inv[1]=1;fp(i,2,k)inv[i]=mul(P-P/i,inv[P%i]);if(T==1)return puts("1"),0;res=1,iv=ksm(T-1,P-2),f[0]=1ll*T*(P-iv)%P*(P+1-ksm(T,n))%P;fp(i,1,k){res=1ll*res*inv[i]%P*(n-i+1)%P,f[i]=mul(dec(f[i-1],mul(T,res)),iv);}res=ksm(res,P-2);printf("%d\n",mul(f[k-1],res));return 0;
}

\(B\) 染色

點分是個啥我好像已經給忘了……

要求所有同色點對距離的最小值介于 \([L,R]\) 之間,我們可以用最小值大于等于\(L\)的答案減去最小值大于等于\(R+1\)的答案

那么考慮形如最小值大于等于\(k+1\)的答案怎么算,這個的意思就是要求對于\(u\)來說,所有到它的距離小于等于\(k\)的點的顏色要和它不同

首先有一個結論:如果我們按\(BFS\)序加入點,設當前加入的點為\(u\),且對另外兩個已經加入的點\(x,y\),滿足\(dis(u,x)\leq k\)\(dis(u,y)\leq k\),則有\(dis(x,y)\leq k\)

證明:如果\(u\)\(x,y\)的兩條路徑上沒有分叉點,那么顯然成立

如果有分叉點,我們記分叉點為\(w\),那么顯然\(x,y\)中有一個點是在\(w\)的子樹里的,不妨假設它為\(x\)。因為是按\(BFS\)序加入,所以\(x\)的深度小于\(u\),那么\(dis(x,w)\leq dis(u,w)\),所以\(dis(x,y)\leq dis(u,y)\leq k\)

那么我們按\(BFS\)序加入點,對于每個點\(u\),要滿足所有和它距離不超過\(k\)的點的顏色互不相同,它的顏色也和它們不同

假設和它距離不超過\(k\)的點有\(s\)個,那么顯然它的方案數就是\(m-s\),其中\(m\)為顏色總數

所以要怎么求和它距離不超過\(k\)的點的個數呢……點分樹就可以了……點分樹怎么寫我已經忘光了所以請看代碼自行理解

//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){R int res,f=1;R char ch;while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');return res*f;
}
const int N=2e5+5,M=4e6+5,L=5e7+5,P=1e9+7;
inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}
inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
struct eg{int v,nx;}e[N<<1];int head[N],tot;
inline void Add(R int u,R int v){e[++tot]={v,head[u]},head[u]=tot;}
int pool[L],*p=pool;
struct Bit{int n,*c;inline void upd(R int x){for(;x<=n;x+=x&-x)++c[x];}inline int query(R int x){int res=0;cmin(x,n);for(;x;x-=x&-x)res+=c[x];return res;}
}f[M];int cur;
struct Eg{int nx,dis,sgn;Bit *bi;}E[M];int Head[N],tc;
int sz[N],mx[N],dep[N],vis[N],q[N],fa[N];
int size,rt,n,m,l,r,res1,res2;
void findrt(int u,int fa){sz[u]=1,mx[u]=0;go(u)if(v!=fa&&!vis[v])findrt(v,u),sz[u]+=sz[v],cmax(mx[u],sz[v]);cmax(mx[u],size-sz[u]);if(mx[u]<mx[rt])rt=u;
}
void dfs(int u,int sgn,int d){int h=1,t=0;dep[u]=d,fa[u]=0,q[++t]=u;while(h<=t){u=q[h++];go(u)if(!vis[v]&&v!=fa[u])q[++t]=v,fa[v]=u,dep[v]=dep[u]+1;E[++tc]={Head[u],dep[u],sgn,&f[cur]},Head[u]=tc;}f[cur].c=p,f[cur].n=dep[q[t]]+1,p+=f[cur++].n;
}
void solve(int u){vis[u]=1;dfs(u,1,0);int s=size;go(u)if(!vis[v]){dfs(v,-1,1);rt=0,size=(sz[v]<sz[u])?sz[v]:s-sz[u],findrt(v,u);solve(rt);}
}
int main(){
//  freopen("testdata.in","r",stdin);n=read(),m=read(),l=read(),r=read();for(R int i=1,u,v;i<n;++i)u=read(),v=read(),Add(u,v),Add(v,u);mx[0]=n+1,rt=0,size=n,findrt(1,0),solve(rt);res1=res2=1,memset(vis,0,4*(n+1));int h=1,t=0;q[++t]=1,vis[1]=1;while(h<=t){int u=q[h++],s1=0,s2=0;for(int i=Head[u];i;i=E[i].nx){if(E[i].dis<l)s1+=E[i].bi->query(l-E[i].dis)*E[i].sgn;if(E[i].dis<r+1)s2+=E[i].bi->query(r+1-E[i].dis)*E[i].sgn;E[i].bi->upd(E[i].dis+1);}res1=mul(res1,m-s1),res2=mul(res2,m-s2);go(u)if(!vis[v])q[++t]=v,vis[v]=1;}printf("%d\n",dec(res1,res2));return 0;
}

\(C\) 高爾夫

聽說這是個數據結構題而且\(std\)\(5kb\)

算了咕咕了

轉載于:https://www.cnblogs.com/bztMinamoto/p/10640920.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279777.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279777.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279777.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySql數據庫出現 1396錯誤

1、安裝MySql數據庫后。創建新的用戶。有可能會出現 1396這個錯誤&#xff0c; 2、解決的辦法如下&#xff1a;假裝有你需要創建的這個用戶、先刪了。再創建。 3、這樣就可以解決用戶創建不成功的問題了。 轉載于:https://www.cnblogs.com/chifa/p/9362882.html

如何使用wink框架_如何解決Wink Hub的Z-Wave連接問題

如何使用wink框架Overall, the Wink hub works extremely well…but sometimes the devices you have connected to it can act a little wonky. Here are some things you can do in order to fix any connection issues with all of those Z-Wave sensors and devices connec…

Tomcat服務器啟動錯誤之Offending class: javax/servlet/Servlet.class

引子 最近在基于Wex5項目開發中&#xff0c;遇到使用過程中與Tomcat功能有關的錯誤提示&#xff0c; 如題所示。最終的解決方法就是刪除掉項目上與tomcat沖突的jar包。 org.apache.catalina.loader.WebappClassLoader validateJarFile ??: validateJarFile(/Users/zxzpc/…

面向對象進階(二)----------類的內置方法

一、isinstance(obj,cls)和issubclass(sub,super) 1. isinstance(obj,cls): 檢查是否obj是否是類 cls 的對象 class Player:passp Player()print(isinstance(p, Player))>>> Ture 2. issubclass(sub, super): 檢查sub類是否是 super 類的派生類 class Player:passcla…

BZOJ.3265.志愿者招募加強版(費用流SPFA)

題目鏈接 見上題。 每類志愿者可能是若干段&#xff0c;不滿足那個...全幺模矩陣(全單位模矩陣)的條件&#xff0c;所以線性規劃可能存在非整數解。 于是就可以用費用流水過去順便拿個rank2 233. //20704kb 300ms #include <queue> #include <cstdio> #include &…

谷歌相冊_Google相冊中的新存檔功能是什么?

谷歌相冊If you’re a Google Photos user, you’ve may have seen a new feature called “Archive” show up in the app’s sidebar. if not, don’t stress—it’s just now rolling out and not everyone has it yet. Since it’s new, here’s a quick look at what it i…

CenterOS 7安裝Nginx

1.wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm下載對應當前系統版本的nginx包(package) 2.rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm建立nginx的yum倉庫 3.yum install nginx 下載并安裝nginx systemctl s…

Java的組合排列問題

從4個人中選2個人參加活動&#xff0c;一共有6種選法。 從n個人中選m個人參加活動&#xff0c;一共有多少種選法&#xff1f;C(m/n)C((m-1)/(n-1))C(m/(n-1))數學算法 public class Main {public static void main(String[] args) {System.out.println("請輸入總人數:&quo…

阿里云一鍵建站產品,阿里云自營建站-中小企業建站首選

阿里云推出的自營建站服務&#xff0c;這對于中小企業來說簡直是福利了&#xff0c;現在一般的公司都開始有了自己的官網&#xff0c;有可能就是因為你的官網設計的標準&#xff0c;大氣&#xff0c;客戶就會對你的信任度增加&#xff0c;從而促進一筆不小的訂單&#xff0c;這…

航拍拉近拉遠鏡頭_什么是遠攝鏡頭?

航拍拉近拉遠鏡頭Telephoto lenses can be incredibly useful, but how is it different from other lenses, and when should you use it? 遠攝鏡頭可能非常有用&#xff0c;但是它與其他鏡頭有什么不同&#xff1f;何時使用&#xff1f; 什么是遠攝鏡頭&#xff1f; (What I…

數據庫的簡單了解

數據庫一、什么是數據庫存儲數據的倉庫將數據有組織&#xff0c;按照特定的格式存儲在介質上叫做數據庫二、比較多個數據庫系統a) Oracle 最好的數據庫沒有之一b) SQL server 最好的數據庫(windows)c) MySQL 甲骨文(Oracle) sun 開源三、SQL語言a) SQL(結構化查詢語句) …

阿里云對象存儲OSS支持版本管理特性

2019獨角獸企業重金招聘Python工程師標準>>> 阿里云對象存儲OSS現已經全面支持“對象版本管理”特性。該功能適用于所有的存儲類型以及區域。當Bucket啟用該特性后&#xff0c;“對象版本管理”功能可以保護和恢復誤刪除、誤覆蓋的數據。 對象存儲OSS“版本管理”具…

Python第一天學習---基礎語法

1.字符串的用法(String) Python 中的字符串有兩種索引方式&#xff0c;從左往右以 0 開始&#xff0c;從右往左以 -1 開始。Python中的字符串不能改變。Python 沒有單獨的字符類型&#xff0c;一個字符就是長度為 1 的字符串這三點是我覺得Python字符處理特別的一點 我們來看第…

教你幾招識別和防御Web網頁木馬

本文同時發表在&#xff1a;[url]http://netsecurity.51cto.com/art/200709/56360.htm[/url] 根據反病毒廠商Sophos今年的第一、第二季度報告&#xff0c;網頁已經超過電子郵件成為惡意軟件傳播時最喜歡使用的途徑&#xff0c;通過網頁傳播的惡意軟件平均每月增加300多種。而對…

apple tv設置_如何設置Apple TV播放個人iTunes庫

apple tv設置If you already have a lot of music and home videos in your iTunes library, you can easily stream it all to your Apple TV, and thus whatever output sources to which it is connected. 如果iTunes庫中已經有很多音樂和家庭視頻&#xff0c;則可以輕松地將…

[bzoj1050 HAOI2006] 旅行comf (kruskal)

傳送門 Description 給你一個無向圖&#xff0c;N(N<500)個頂點, M(M<5000)條邊&#xff0c;每條邊有一個權值Vi(Vi<30000)。給你兩個頂點S和T&#xff0c;求 一條路徑&#xff0c;使得路徑上最大邊和最小邊的比值最小。如果S和T之間沒有路徑&#xff0c;輸出”IMPOSS…

好程序員技術文檔HTML5開發中的javascript閉包

好程序員技術文檔HTML5開發中的javascript閉包&#xff0c;事實上&#xff0c;通過使用閉包&#xff0c;我們可以做很多事情。比如模擬面向對象的代碼風格;更優雅&#xff0c;更簡潔的表達出代碼;在某些方面提升代碼的執行效率&#xff0c;同時避免對命名空間的污染&#xff0c…

亞馬遜echo中國使用_如何使用亞馬遜的主要照片備份所有照片

亞馬遜echo中國使用Millions of people are Amazon Prime subscribers, but many of them don’t realize that in addition to free shipping and Prime Instant Video, they also get unlimited photo storage for all their computers and mobile devices. 數以百萬計的人是…

抽象SQL查詢:SQL-MAP技術的使用

什么是參數化查詢&#xff1f;我們來看百度百科對此的定義和示例&#xff1a; 一&#xff0c;定義 ------------------------------------------------------------------ 參數化查詢&#xff08;Parameterized Query 或 Parameterized Statement&#xff09;是指在設計與數據庫…

EF ORM

//新增UserInfo userInfo new UserInfo();userInfo.UserName "YANG";userInfo.UserPass "123";userInfo.Email "253qq.com";userInfo.RegTime System.DateTime.Now;Model1Container db new Model1Container();db.UserInfoSet.Add(userInfo…