第一题略

第二题组合数学

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. 测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇

    测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇   在前面我分享了几个新浪微博的自动化脚本的实现,下面我们继续实现新的需求,功能需求如下: 1,登陆微博 2,抓取评论页内容3,用正则表 ...

  2. Ant Design 的一个练习小Demo

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

  3. EasyMvc--让MVC区域开发更Easy(提供源码下载)

    核心: 主要利用MVC的区域功能,实现项目模块独立开发和调试. 目标: 各个模块以独立MVC应用程序存在,即模块可独立开发和调试. 动态注册各个模块路由. 一:新建解决方案目录结构 如图: 二:Eas ...

  4. MTK elian(smartlink)在WIN32下的实现

    先说明一下调试技巧:该程序需无线网卡实现功能,由于PC端有可能是多网卡的(有线网卡.无线网卡.虚拟网卡),所以在发包的时候数据包不一定会从无线网卡出,lib库应该也没处理多网卡的选择吧.所以在调试的时 ...

  5. 【转】JDBC学习笔记(5)——利用反射及JDBC元数据编写通用的查询方法

    转自:http://www.cnblogs.com/ysw-go/ JDBC元数据 1)DatabaseMetaData /** * 了解即可:DatabaseMetaData是描述数据库的元数据对象 ...

  6. Java排序算法之希尔(Shell)排序

    基本思想: 希尔排序就是对直接插入排序的一个优化.现在有一个array,希尔排序就是设定一个增量incrementNum(0<incrementNum<array.length).先从ar ...

  7. javaweb项目-医者天下 (Spring+SpringMVC+MyBatis)

    项目下载地址:http://download.csdn.net/detail/qq_33599520/9826683 项目完整结构图: 项目简介: 医者天下项目是一个基于Spring+SpringMV ...

  8. 【代码学习】GD库中图片缩印

    bool imagecopyresampled ( resource $dst_image, resource $src_image, int $dst_x, int $dst_y, int $src ...

  9. Linux IO barrier

    I/O顺序问题是一个比较综合的问题,它涉及的层次比较多,从VFS page cache到I/O调度算法,从IO子系统到存储外设.而Linux I/O barrier就是其中重要的一部分. 可能很多人认 ...

  10. 蓝桥杯-扑克牌移动-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...