第一题略

第二题组合数学

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的更多相关文章

  1. CSharpGL(20)用unProject和Project实现鼠标拖拽图元

    CSharpGL(20)用unProject和Project实现鼠标拖拽图元 效果图 例如,你可以把Big Dipper这个模型拽成下面这个样子. 配合旋转,还可以继续拖拽成这样. 当然,能拖拽的不只 ...

  2. ABP(现代ASP.NET样板开发框架)系列之20、ABP展现层——动态生成WebApi

    点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之20.ABP展现层——动态生成WebApi ABP是“ASP.NET Boilerplate Project (ASP.N ...

  3. 帮我做个APP,给你20万,做不做?

    一.为什么要写这篇文章 前段时间,有个辞职 创业的同事(做法务的)  问我 开发一个 新闻类的APP要多少钱,产品.UI.接口.后台管理页  他们啥都没有,想全部外包. 我 并没有在外包公司做过,也没 ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单

    系列目录 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^ 我们在之前已经插入一些真实数据,其中包含了一个用户和 ...

  5. LINQ to SQL语句(20)之存储过程

    在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...

  6. C#开发微信门户及应用(20)-微信企业号的菜单管理

    前面几篇陆续介绍了很多微信企业号的相关操作,企业号和公众号一样都可以自定义菜单,因此他们也可以通过API进行菜单的创建.获取列表.删除的操作,因此本篇继续探讨这个主体,介绍企业号的菜单管理操作. 菜单 ...

  7. 20个非常有用的Java程序片段

    下面是20个非常有用的Java程序片段,希望能对你有用. 1. 字符串有整型的相互转换 String a = String.valueOf(2); //integer to numeric strin ...

  8. 20个不可思议的 WebGL 示例和演示

    WebGL 是一项在网页浏览器呈现3D画面的技术,有别于过去需要安装浏览器插件,通过 WebGL 的技术,只需要编写网页代码即可实现3D图像的展示.WebGL 可以为 Canvas 提供硬件3D加速渲 ...

  9. 20款 JavaScript 开发框架推荐给前端开发者

    下面,我们给大家提供了一个用于 HTML5 开发的各种用途的 JavaScript 库列表.这些框架能够给前端开发人员提供更好的功能实现的解决方案.如果你有收藏优秀的框架,也可以在后面的评论中分享给我 ...

随机推荐

  1. 用Gradle构建Spring Boot项目

    相比起Maven的XML配置方式,Gradle提供了一套简明的DSL用于构建Java项目,使我们就像编写程序一样编写项目构建脚本.本文将从无到有创建一个用Gradle构建的Spring Boot项目, ...

  2. Java面试题04-final关键字详解

    Java面试题04-final关键字详解 本篇博客将会讨论java中final关键字的含义,以及final用在什么地方,感觉看书总会有一些模糊,而且解释的不是很清楚,在此做个总结,以备准备面试的时候查 ...

  3. 在 redhat 6.4上安装Python 2.7.5

    在工作环境中使用的是python 2.7.*,但是CentOS 6.4中默认使用的python版本是2.6.6,故需要升级版本. 安装步骤如下: 1,先安装GCC,用如下命令yum install g ...

  4. 跟着刚哥梳理java知识点——面向对象(八)

    面向对象的核心概念:类和对象. 类:对一类事物描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也成为实例(Instance). Java类及类的成员:属性(成员变量Field) ...

  5. 第四章 Struts2深入

    4.1 Struts2架构    1.ActionMapper:        提供请求和Action之间的映射.根据请求查找是否存在对于的action,如有,翻译描述action映射的ActionM ...

  6. CSS开发框架技术OOCSS编写和管理CSS的方法

    目前最流行的CSS开发框架技术当属OOCSS,尽管还有其他类似技术(如BEM).这些方法试图对CSS采用面向对象的编程原则.样式语言与面向对象的设计原则在概念之间存在一定的问题.欠缺经验的人员可能不会 ...

  7. Android Weekly Notes Issue #253

    Android Weekly Issue #253 April 16th, 2017 Android Weely Issue #253. 本期内容包括: Android O新推出的自定义字体支持; 用 ...

  8. [Oracle]Audit(二)--清理Audit数据

    在上一篇,初步了解了Audit的作用以及如何使用Audit,本篇记录如何手动清理Audit数据. (一) 概述 Audit的数据主要存储在sys.aud$表中,该表默认位于system表空间中,我们根 ...

  9. 简单聊聊Storm的流分组策略

    简单聊聊Storm的流分组策略 首先我要强调的是,Storm的分组策略对结果有着直接的影响,不同的分组的结果一定是不一样的.其次,不同的分组策略对资源的利用也是有着非常大的不同,本文主要讲一讲loca ...

  10. js 时间时间戳互换

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...