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.mzph.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…