CSP-S全国模拟赛第二场 【nan】
A.count
本场比赛最难的题...
隔板法组合数容斥 xjb 搞搞就好了
//by Judge
#include<cstdio>
#include<iostream>
#define Rg register
#define fp(i,a,b) for(Rg int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(Rg int i=(a),I=(b)-1;i>I;--i)
#define ll long long
using namespace std;
const int mod=998244353;
const int M=1e7+3;
ll n; int m,k,mx,r,ans,fac[M],inv[M];
inline int mul(int x,int y){return 1ll*x*y%mod;}
inline void Pls(int& x,int y){if((x+=y)>=mod)x-=mod;}
inline int qpow(int x,int p=mod-2){ int s=1;
for(;p;p>>=1,x=mul(x,x)) if(p&1) s=mul(s,x); return s;
}
inline int C(ll n,int m){
if(n<mx) return mul(fac[n],mul(inv[m],inv[n-m]));
Rg int s=inv[m]; fp(i,0,m-1) s=mul(s,(n-i)%mod); return s;
}
inline int f(int n){ if(n<0) return 0; int res=0,tp;
fp(i,0,k) tp=mul(C(k,i),C(n-i*(m-1)+k-1,k-1)), // 选 i 个要放零头的,乘上其放置方案
Pls(res,mul(i&1?mod-1:1,tp)); return res;
}
int main(){ scanf("%lld%d%d",&n,&m,&k);
mx=k*m,r=n%m; if(!m) return !printf("0\n");
fac[0]=1; fp(i,1,n) fac[i]=mul(fac[i-1],i);
inv[n]=qpow(fac[n]); fd(i,n,1) inv[i-1]=mul(inv[i],i);
fp(i,0,k) Pls(ans,mul(f(i*m+r-k),C((n-r)/m-i+k-1,k-1)));
// 前面的 f ,求出零头放置方案(放到 k 个数上全都小于 m)
// 后面的 C ,组合数解隔板法
return !printf("%d\n",ans);
}
tree
很水的题 \(n^2\) 的复杂度,随便搜搜就好了
//by Judge
#include<cstdio>
#include<cstring>
#include<iostream>
#define Rg register
#define fp(i,a,b) for(Rg int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(Rg int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(Rg int i=head[u],v=e[i].to;i;v=e[i=e[i].nxt].to)
#define open(S) freopen(S".in","r",stdin),freopen(S".out","w",stdout)
#define ll long long
using namespace std;
const int mod=998244353;
const int M=1e5+3;
typedef int arr[M];
#ifndef Judge
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif
char buf[1<<21],*p1=buf,*p2=buf;
inline int Max(int x,int y){return x>y?x:y;}
inline int Min(int x,int y){return x<y?x:y;}
inline int mul(int x,int y){return 1ll*x*y%mod;}
inline void Pls(int& x,int y){if((x+=y)>=mod)x-=mod;}
inline int read(){ int x=0,f=1; char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0'; return x*f;
} int n,x,y,root,ans,a[M]; int pat,head[M];
struct Edge{ int to,nxt; }e[M<<1];
inline void add(int u,int v){
e[++pat]={v,head[u]},head[u]=pat;
e[++pat]={u,head[v]},head[v]=pat;
}
void dfs(int u,int fa,int mn,int mx){
if(u>=root) Pls(ans,mul(mn,mx));
go(u) if(v^fa) dfs(v,u,Min(mn,a[v]),Max(mx,a[v]));
}
int main(){ n=read(); fp(i,1,n) a[i]=read();
fp(i,2,n) x=read(),y=read(),add(x,y);
fp(i,1,n) dfs(root=i,0,a[i],a[i]); return !printf("%d\n",ans);
}
distance
n·q ,水题,注意别炸精度就好了
//by Judge
#include<cstdio>
#include<cstring>
#include<iostream>
#define Rg register
#define fp(i,a,b) for(Rg int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(Rg int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(Rg int i=head[u],v=e[i].to;i;v=e[i=e[i].nxt].to)
#define ll long long
using namespace std;
const int M=2003;
typedef int arr[M];
#ifndef Judge
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif
char buf[1<<21],*p1=buf,*p2=buf;
inline void cmax(ll& x,ll y){if(x<y)x=y;}
inline int Min(ll x,ll y){return x<y?x:y;}
inline int read(){ int x=0,f=1; char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0'; return x*f;
} char sr[1<<21],z[20];int CCF=-1,Z;
inline void Ot(){fwrite(sr,1,CCF+1,stdout),CCF=-1;}
inline void print(ll x,char chr='\n'){
if(CCF>1<<20)Ot();if(x<0)sr[++CCF]=45,x=-x;
while(z[++Z]=x%10+48,x/=10);
while(sr[++CCF]=z[Z],--Z);sr[++CCF]=chr;
} int n,q,root; ll ans,dis[M][M];
int pat,head[M];
struct Edge{ int to,val,nxt; }e[M<<1];
inline void add(int u,int v,int w){
e[++pat]={v,w,head[u]},head[u]=pat;
e[++pat]={u,w,head[v]},head[v]=pat;
}
void dfs(int u,int fa,ll d){ dis[root][u]=d;
go(u) if(v^fa) dfs(v,u,d+e[i].val);
}
int main(){ n=read(),q=read(); Rg int x,y,z;
fp(i,2,n) x=read(),y=read(),z=read(),add(x,y,z);
fp(i,1,n) dfs(root=i,0,0);
while(q--){ x=read(),y=read(),ans=0;
fp(i,1,n) cmax(ans,Min(dis[x][i],dis[y][i])); print(ans);
} return Ot(),0;
}
CSP-S全国模拟赛第二场 【nan】的更多相关文章
- NOI.AC NOIP模拟赛 第二场 补记
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...
- WC2019 全国模拟赛第一场 T1 题解
由于只会T1,没法写游记,只好来写题解了... 题目链接 题目大意 给你一个数列,每次可以任取两个不相交的区间,取一次的贡献是这两个区间里所有数的最小值,求所有取法的贡献和,对 \(10^9+7\) ...
- [NOI.AC]NOI2019省选模拟赛 第二场
传送门 Solution A. 一共有\(T\)组数据 每次询问你\([l,r]\)中有多少个数能被他的所有数位整除(如果数位中含有\(0\)忽略掉) 数位dp,咕咕咕 B. 题面略 考虑一个个只有两 ...
- Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)
Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...
- NOI.AC NOIP模拟赛 第一场 补记
NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗 ...
- 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)
以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- nowcoder(牛客网)提高组模拟赛第一场 解题报告
T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check ...
- NOI.AC: NOIP2018 全国模拟赛习题练习
闲谈: 最后一个星期还是不浪了,做一下模拟赛(还是有点小虚) #30.candy 题目: 有一个人想买糖吃,有两家商店A,B,A商店中第i个糖果的愉悦度为Ai,B商店中第i个糖果的愉悦度为Bi 给出n ...
随机推荐
- 实战build-react(三)+ style-components
npm install --save style-components https://www.jianshu.com/p/27788be90605(copy) "axios": ...
- UNIX环境C - 系统信号
一.信号的概念 信号就是一种软中断,进程与进程之间信号的传递,都是通过内核来当做中转站的,不能直接传递信号. 二.信号的分类(128位信号,不过可用信号就1~64除去32与33) 1.不可靠信号(SI ...
- UVa 122 Trees on the level (动态建树 && 层序遍历二叉树)
题意 :输入一棵二叉树,你的任务是按从上到下.从左到右的顺序输出各个结点的值.每个结 点都按照从根结点到它的移动序列给出(L表示左,R表示右).在输入中,每个结点的左 括号和右括号之间没有空格,相邻 ...
- Redis、Nginx加入启动命令
1.redis加入系统启动命令 vim /etc/init.d/redis #!/bin/sh #chkconfig: 2345 80 90 # Simple Redis init.d script ...
- 大哥带的Orchel数据库的盲注入bool型
0X01判断闭合 ?username=SMITH' 错误 ?username=SMITH'' 正确 ?username=SMITH' and ascii(substr((select user fro ...
- [CSP-S模拟测试]:666(模拟)
题目描述 不忘初心. 小$\pi$假期在家无聊,打开了某弹幕直播网站. 突然,有一个精彩的镜头. 小$\pi$看到了满屏的$6$,其中,有$666$.也有$666666$.也有$6666666666. ...
- ENGINE =MyISAM DEFAULT CHARACTER SET latin1 COLLATE latin1_general_cs AUTO_INCREMENT=0; 什么意思
ENGINE =MyISAM //表类型为myisam插写比较快 DEFAULT CHARACTER SET latin1//默认字符为latin1 COLLATE latin1_general ...
- jQuery file upload callback options
autoUpload By default, files added to the widget are uploaded as soon as the user clicks on the star ...
- nginx回源使用localhost产生问题
最近测试ngx_http_slice模块,回源的时候填的localhost结果老是超时,还以为是slice模块有问题,后来无意间改成127.0.0.1后就没有问题了 真是见鬼了 #user root; ...
- 网络协议之FTP协议
FTP(File Transfer Protocol) 协议文档:RFC 959 1.1 FTP协议介绍 FTP协议基于TCP/IP协议实现,处于应用层. FTP协议为C/S架构,每一次FTP连接,命 ...