HourRank 20
第一题略
第二题组合数学
s1 = min(cnt['a'],cnt['b']),
s2 = min(cnt['c'],cnt['d']),
b1 = max(cnt['a'],cnt['b']),
b2 = max(cnt['c'],cnt['d']);
简单分开枚举'a','b'一组和'c','d'一组然后乘起来就好了
ans = sigma(C(s1,i) * C(b1,i))(0<=i<=s1) * sigma(C(s2,i) * C(b2,i))(0<=i<=s2) - 1;
#include<bits/stdc++.h>
#define MP make_pair
using namespace std;
typedef long long LL;
const int N = 5e5 + ;
const LL mod = 1e9 + ;
int Tm[];
char s[N];
LL fac[N];
LL inv[N];
LL qpow(LL x,LL b){
LL res = ;
while(b){
if(b&)res = res * x % mod;
x = x * x % mod;
b >>= ;
}
return res;
}
void init(){
fac[] = ;
for(int i = ; i < N; i++)fac[i] = fac[i-] * i % mod;
inv[N - ] = qpow(fac[N - ],mod - );
for(int i = N - ; i >= ; i--){
inv[i] = inv[i + ] * (i + ) % mod;
}
}
inline LL C(int a,int b){
return fac[a] * inv[b] % mod * inv[a - b] % mod;
}
int s1,b1,s2,b2;
LL solve(){
LL res1 = ,res2 = ;
for(int i = ; i <= s1; i++){
res1 = (res1 + C(s1,i) * C(b1,i) % mod) % mod;
}
for(int i = ; i <= s2; i++){
res2 = (res2 + C(s2,i) * C(b2,i) % mod) % mod;
}
// cout<<s1<<" "<<s2<<endl;
// cout<<res1<<" "<<res2<<endl;
return (res1 * res2 % mod - + mod)%mod;
}
int main() {
// freopen("input", "r", stdin);
// freopen("input", "w", stdout);
ios::sync_with_stdio(false);
cin.tie();
init();
int q;
cin>>q;
while(q--){
memset(Tm,,sizeof Tm);
cin>>s;
int len = strlen(s);
for(int i = ; i < len; i++)Tm[(int)s[i]]++;
s1 = min(Tm['a'],Tm['b']);
b1 = max(Tm['a'],Tm['b']);
s2 = min(Tm['c'],Tm['d']);
b2 = max(Tm['c'],Tm['d']);
cout<<solve()<<endl;
}
return ; }
第三题对于每个询问建一颗虚树,根节点要放在虚树里,如果u , fa,fa是u的祖先,并且u到fa这条路径上只有这两个点,那这条路径的点子树黑点都等于u上的子树黑点。
#include<bits/stdc++.h>
#define MP make_pair
#define PB push_back
using namespace std;
typedef long long LL;
const int N = 6e5 + ;
const LL mod = 1e9 + ;
int L[N];
int n;
int R[N];
int ans[N];
int Fa[N][];
int deep[N];
int tin = ;
vector<int>Tree[N];
vector<int>Mtree[N];
int rev[N];
bool cmp(int a, int b) {
return L[a] < L[b];
}
int lca(int a, int b) {
if(deep[a] < deep[b])swap(a, b);
int d = deep[a] - deep[b];
for(int i = ; i < ; i++) {
if(d & ( << i))a = Fa[a][i];
}
if(a == b)return a;
for(int i = ; i >= ; i--) {
if(Fa[a][i] != Fa[b][i])a = Fa[a][i], b = Fa[b][i];
}
return Fa[a][];
}
int v[N];
int St[N];
int top = ;
inline bool isFa(int fa,int u){
return L[fa] <= L[u] && R[fa] >= R[u];
}
inline void dfs(int u,int fa){
for(int to : Mtree[u]){
dfs(to,u);
v[u] += v[to];
}
ans[v[u]] += deep[u] - deep[fa];
}
inline void solve() {
int k, x;
cin >> k;
int tol = ;
for(int i = ; i < k; i++) {
cin >> x;
rev[tol++] = x;
v[x] = ;
}
sort(rev, rev + tol, cmp);
for(int i = ; i < k; i++) {
rev[tol++] = lca(rev[i - ], rev[i]);
}
rev[tol++] = ;
sort(rev, rev + tol, cmp);
tol = unique(rev , rev + tol) - rev;
top = ;
St[++top] = ;
for(int i = ; i < tol; i++){
int to = rev[i];
while(top > && !isFa(St[top],to))top--;
int nt = St[top];
Mtree[nt].PB(to);
St[++top] = to;
}
dfs(,);
ans[] = n;
for(int i = ; i <= k; i++)ans[] -= ans[i];
for(int i = ; i <= k; i++)cout<<ans[i]<<" ",ans[i] = ;
for(int i = ; i < tol; i++){
Mtree[rev[i]].clear();v[rev[i]] = ;
}
cout<<endl;
}
void pre(int u, int fa) {
deep[u] = deep[fa] + ;
L[u] = ++tin;
Fa[u][] = fa;
for(int to : Tree[u]) {
if(to == fa)continue;
pre(to, u);
}
R[u] = tin;
}
void init() {
cin>>n;
for(int i = ; i < n; i++) {
int u, to;
cin >> u >> to;
Tree[u].PB(to), Tree[to].PB(u);
}
pre(, );
for(int i = ; ( << i) < n; i++) {
for(int j = ; j <= n; j++) {
Fa[j][i] = Fa[Fa[j][i - ]][i - ];
}
}
int q;
cin >> q;
while(q--) {
solve();
}
}
int main() {
// freopen("input", "r", stdin);
// freopen("input", "w", stdout);
ios::sync_with_stdio(false);
cin.tie();
init();
return ;
}
HourRank 20的更多相关文章
- CSharpGL(20)用unProject和Project实现鼠标拖拽图元
CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...
- ABP(现代ASP.NET样板开发框架)系列之20、ABP展现层——动态生成WebApi
点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之20.ABP展现层——动态生成WebApi ABP是“ASP.NET Boilerplate Project (ASP.N ...
- 帮我做个APP,给你20万,做不做?
一.为什么要写这篇文章 前段时间,有个辞职 创业的同事(做法务的) 问我 开发一个 新闻类的APP要多少钱,产品.UI.接口.后台管理页 他们啥都没有,想全部外包. 我 并没有在外包公司做过,也没 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单
系列目录 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^ 我们在之前已经插入一些真实数据,其中包含了一个用户和 ...
- LINQ to SQL语句(20)之存储过程
在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...
- C#开发微信门户及应用(20)-微信企业号的菜单管理
前面几篇陆续介绍了很多微信企业号的相关操作,企业号和公众号一样都可以自定义菜单,因此他们也可以通过API进行菜单的创建.获取列表.删除的操作,因此本篇继续探讨这个主体,介绍企业号的菜单管理操作. 菜单 ...
- 20个非常有用的Java程序片段
下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...
- 20个不可思议的 WebGL 示例和演示
WebGL 是一项在网页浏览器呈现3D画面的技术,有别于过去需要安装浏览器插件,通过 WebGL 的技术,只需要编写网页代码即可实现3D图像的展示.WebGL 可以为 Canvas 提供硬件3D加速渲 ...
- 20款 JavaScript 开发框架推荐给前端开发者
下面,我们给大家提供了一个用于 HTML5 开发的各种用途的 JavaScript 库列表.这些框架能够给前端开发人员提供更好的功能实现的解决方案.如果你有收藏优秀的框架,也可以在后面的评论中分享给我 ...
随机推荐
- 老李分享:Web Services 特性 1
老李分享:Web Services 特性 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9 ...
- 用Xamarin + VS 编写Android程序体验及其与Android Studio的比较
昨天看了微软2016Build大会,Xamarin免费了.恩,5亿美刀的家伙,哈哈,我也要体验一下..... 1. 首先在Xamarin官网下载安向导:https://www.xamarin.com/ ...
- Nodejs安装后修改全局路径配置
--以Windows平台为例,类Unix平台操作方式相同 1. 新建保存node_modules的文件夹,例如我的路径为:D:\NodeJS Lib\npm 2. 在DOS窗口输入以下代码,把缓存及储 ...
- 鼠标滚动:mousewheel事件在Firefox采用DOMMouseScroll事件的统一处理
这是一个小事件,但当下的WEB应用交互非常丰富,判断鼠标的滚动来执行相应的操作是比较常见的.我用Chrome/IE/Firefox/Opera 4种浏览器做测试,发现只有firefox的处理方法有很大 ...
- JAVA经典算法40题
1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...
- Node.js基本开发流程
创建一个hello world: 1.打开一个文本编辑器,在其中输入console.log("hello world"),并保存为hello.js; 注意:输入中文如果编码不是ut ...
- 转账示例(四):service层面实现(线程管理Connection,AOP思想,动态代理)(本例采用QueryRunner来执行sql语句,数据源为C3P0)
用了AOP(面向切面编程),实现动态代理,service层面隐藏了开启事务.1.自行创建C3P0Uti,account数据库,导入Jar包 2.Dao层面 接口: package com.learni ...
- C++ 编译报错discards qualifiers [-fpermissive]
声明了一个类 class Card { public: Card(const string&); int m_value; char m_suit; private: const static ...
- clamav 杀毒软件安装及使用配置
安装clamav 之前还需要安装zlib 要不然安装过程中会报错的. tar -zxvf zlib-1.2.3.tar.gz cd zlib-1.2.3 ./configure make make ...
- spring 动态创建数据源
项目需求如下,公司对外提供服务,公司本身有个主库,另外公司会为每个新客户创建一个数据库,客户的数据库地址,用户名,密码,都保存在主数据库中.由于不断有新的客户加入,所以要求,项目根据主数据库中的信息, ...