第一题略

第二题组合数学

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. SQLite 数据库

    内容来源:高成珍.钟元生<Android编程经典案例解析> SQLite 数据库是Android 中内嵌的轻量级关系型数据库,本质上只是一个文件.SQLite 内部只支持NULL,INTE ...

  2. wampserver安装错误 应用程序无法正常启动0xc000007b解决方法

    在重装系统之后发现以前安装的wampserver启动会出现错误提示"应用程序无法正常启动0xc000007b解决方法",重新安装也是一样的错误.上网找了相关信息后发现,并不是只有本 ...

  3. 【canvas系列】canvas实现“ 简单的Amaziograph效果”--画对称图

    标题很难引人入胜,先放个效果图好了 如果图片吸引不了你,那我觉得也就没啥看的了. demo链接: https://win7killer.github.io/can_demo/demo/draw_rol ...

  4. StarUML的9种图

    UML的九种图:用例图,类图,对象图,状态图,活动图,序列图,协作图,构件图,部署图.外加包图. (一).用例图 1.定义:由参与者(Actor).用例(Use Case)以及它们之间的关系构成的用于 ...

  5. Ant Design 的一个练习小Demo

    Ant Design 由蚂蚁金服团队出品, 基于 React 的组件化开发模式,封装了一套丰富而实用的 UI 组件库. 在这个练习Demo 中,按照 Ant Design 官网的教程示例,尝试使用 A ...

  6. maven私服搭建nexus/windows/linux(一)

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,还有就是公司内部开发的一些版本的jar包,如果没有私服需要一人拷贝一份然后再自己安 ...

  7. 初探CSRF在ASP.NET Core中的处理方式

    前言 前几天,有个朋友问我关于AntiForgeryToken问题,由于对这一块的理解也并不深入,所以就去研究了一番,梳理了一下. 在梳理之前,还需要简单了解一下背景知识. AntiForgeryTo ...

  8. java复习(2)---java基础杂记

    java命名规范: 参考:http://www.cnblogs.com/maowang1991/archive/2013/06/29/3162366.html 1.项目名小写 2.包名小写 3.类名每 ...

  9. 读书笔记 effective c++ Item 55 让你自己熟悉Boost

    你正在寻找一个高质量的,开源的,与平台和编译器无关的程序库的集合?看一下Boost吧.想加入一个由雄心勃勃的,充满天赋的正致力于最高水平的程序库设计和实现工作的C++程序员们组成的团体么?看一下Boo ...

  10. C语言学习第六章

    今天开始尝试改变! 今天要学习函数,一个C语言中的重要组成部分. 首先先聊聊为什么要使用函数?随着学习的深入很多人会发现某段的代码重复使用的几率很大,而如果用一次写一次的话很明显的效率就会比较低,如果 ...