T1.辣鸡

  考试的时候竟然被我以“麻烦”弃掉了,赛后发现这题好水啊,直接sort一下寻找四周即可。

T2.模板

  考试时期望得分70,实际得分5

  首先看到这种题基本就是线段树,我们以时间为下标,对每一个点种一棵线段树,在dfs时向上合并,同时维护出每个点的子树中每种颜色第一次出现的位置(用数组,map都行)

给每一个节点开一个vector,直接向上传递vector,并且将vector中的所有元素插入父节点的线段树中,并更新颜色出现的最早位置,将更晚的球清掉即可。

  在向上合并时,我们采用启发式合并的方式来保障复杂度,对于每个点,将其所有轻儿子和并入它的重儿子(带有信息最多的儿子)中,即可保证合并的复杂度不会爆炸。

T3.大佬

  假期望,求出所有的劳累值之和除以总情况数即可。

  所以我们只要求出最大难度为j的方案数即可。

  简单粗暴,dp或者直接快速幂容斥都行。

 #include<bits/stdc++.h>
using namespace std;
map<int,int>g[];
vector<pair<int,int> >gg[];
int rc[],sum[],q,ans[],ttt,siz[],ss[],mm[],mmm[];
int n,m,tt,fi[],ne[],to[],tot,a[],f[],d[],r[],lc[];
inline void add(int x,int y)
{
ne[++tot]=fi[x];
fi[x]=tot;
to[tot]=y;
}
void insert(int &x,int l,int r,int pos,int val)
{
if(!x)x=++tt;
if(l==r)
{
if(val==)sum[x]++;
if(val==)sum[x]++,ss[x]=;
if(val==-)ss[x]=;
return;
}
int mid=(l+r)>>;
if(pos<=mid)insert(lc[x],l,mid,pos,val);
else insert(rc[x],mid+,r,pos,val);
sum[x]=sum[lc[x]]+sum[rc[x]];
ss[x]=ss[lc[x]]+ss[rc[x]];
}
int query(int x,int l,int r,int val)
{
if(!x)return ;
if(sum[x]<=val) return ss[x];
int mid=(l+r)>>;
if(sum[lc[x]]>=val)return query(lc[x],l,mid,val);
return query(rc[x],mid+,r,val-sum[lc[x]])+ss[lc[x]];
}
void dfs2(int x,int fa)
{
for(int i=fi[x];i;i=ne[i])
{
int y=to[i];
if(y!=fa)
{
dfs2(y,x);
siz[x]+=siz[y];
if(siz[y]>siz[mm[x]])
mm[x]=y;
}
}
if(mm[x])
{
mmm[x]=mmm[mm[x]];
for(int i=;i<gg[x].size();i++)
{
int f=gg[x][i].first,se=gg[x][i].second;
gg[mmm[x]].push_back(gg[x][i]);
if(g[mmm[x]][se]>f)
insert(r[mmm[x]],,m,g[mmm[x]][se],-),
insert(r[mmm[x]],,m,f,),g[mmm[x]][se]=f;
else if(g[mmm[x]][se]==)
insert(r[mmm[x]],,m,f,),g[mmm[x]][se]=f;
if(g[mmm[x]][se]<f) insert(r[mmm[x]],,m,f,);
}
for(int i=fi[x];i;i=ne[i])
{
int y=to[i];
if(y!=fa&&y!=mm[x])
{
for(int j=;j<gg[mmm[y]].size();j++)
{
int se=gg[mmm[y]][j].first,f=gg[mmm[y]][j].second;
gg[mmm[x]].push_back(gg[mmm[y]][j]);
if(g[mmm[x]][f]>se)
insert(r[mmm[x]],,m,g[mmm[x]][f],-),
insert(r[mmm[x]],,m,se,),g[mmm[x]][f]=se;
else if(g[mmm[x]][f]==)
insert(r[mmm[x]],,m,se,),g[mmm[x]][f]=se;
if(g[mmm[x]][f]<se) insert(r[mmm[x]],,m,se,);
}
}
}
}
ans[x]=query(r[mmm[x]],,m,a[x]);
}
int main()
{
scanf("%d",&n);
for(int i=,x,y;i<n;i++)
{
scanf("%d%d",&x,&y);
add(x,y),add(y,x);
}
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
for(int i=,x,y;i<=m;i++)
{
scanf("%d%d",&x,&y);siz[x]++;
gg[x].push_back(make_pair(i,y));
if(g[x][y]==)g[x][y]=i,insert(r[x],,m,i,);
else insert(r[x],,m,i,);
}
for(int i=;i<=n;i++)mmm[i]=i;
siz[]=-;dfs2(,);
scanf("%d",&q);
for(int i=,x;i<=q;i++)
scanf("%d",&x),printf("%d\n",ans[x]);
return ;
}

模板题

7.30 NOIP模拟10的更多相关文章

  1. 2016.10.30 NOIP模拟赛 day2 PM 整理

    满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...

  2. 2016.10.30 NOIP模拟赛 day2 AM 整理

    题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分  2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...

  3. 2018.10.30 NOIp模拟赛T2 数字对

    [题目描述] 小 H 是个善于思考的学生,现在她又在思考一个有关序列的问题.        她的面前浮现出一个长度为 n 的序列{ai},她想找出一段区间[L, R](1 <= L <= ...

  4. 2018.10.30 NOIp模拟赛 T1 改造二叉树

    [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...

  5. 2018.10.30 NOIP模拟 有环无向图(dijkstra+巧妙建图)

    传送门 建图巧妙啊. 对于每个点的出边,我们将它们排序之后依次连边. 这样可以把O(m2)O(m^2)O(m2)的边数变成O(m)O(m)O(m)的了. 连的权值就是max(edgemax(edgem ...

  6. 2018.10.30 NOIP模拟 字胡串(单调栈+容斥)

    传送门 对于每个点,用单调栈求出它左右第一个比他大的位置. 然后对每个点O(logai)O(log_{a_i})O(logai​​)求出第一个拥有跟它不同二进制位的位置. 然后容斥一下就行了. 代码

  7. 2018.10.30 NOIP模拟 排列树(树形dp+组合数学)

    传送门 考试的时候乱搞过了. 其实题目就是让你求拓扑排序方案数. 直接树形dpdpdp然后组合数转移一下就行了. 乱搞代码

  8. 2018.08.30 NOIP模拟 graph(dfs序/树剖+线段树)

    [描述] 给你一个图,一共有 N 个点,2*N-2 条有向边. 边目录按两部分给出 1. 开始的 n-1 条边描述了一颗以 1 号点为根的生成树,即每个点都可以由 1 号点 到达. 2. 接下来的 N ...

  9. 2018.08.30 NOIP模拟 kfib(矩阵快速幂+exgcd)

    [输入] 一行两个整数 n P [输出] 从小到大输出可能的 k,若不存在,输出 None [样例输入 1] 5 5 [样例输出] 2 [样例解释] f[0] = 2 f[1] = 2 f[2] = ...

随机推荐

  1. 问题TypeError: __init__() takes 1 positional argument but 2 were given解决方案

    在搭建自动化框架时,遇到一个问题,如下图: 根据报错的意思,应该是__init__函数的问题, 位置应该是HomePage文件 立马去查看一下文件,如图: 原来是因为的粗心大意__init__(sel ...

  2. ElasticSearch Cardinality Aggregation聚合计算的误差

    使用ES不久,今天发现生产环境数据异常,其使用的ES版本是2.1.2,其它版本也类似.通过使用ES的HTTP API进行查询,发现得到的数据跟javaClient API 查询得到的数据不一致,于是对 ...

  3. [ZJOI2006]物流运输trans

    Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...

  4. 2. spring 应用之IOC

    本文是作者原创,版权归作者所有.若要转载,请注明出处 我们知道Spring Framework 最重要的功能就是IoC (Inversion of Control ),也叫DI(dependency ...

  5. SD卡学习笔记

    最近调试了SD卡,遇到了一些小问题,记录一下,分享一下. 1.    SD卡 卡槽旁边的一个小开关 我们平时见过的SD卡都是小的SD卡,可以放在手机上的.现在大多数的开发板上也是小的SD卡的卡槽,插入 ...

  6. 终端 10X 工作法(一)

    目录 1. Terminal 2. Grep 3. Sed 4. Awk 5. Xargs 6. Find 在 github 上面有一个 700 多人 star 的 repo 叫做 Bash-Onel ...

  7. Java 面试-即时编译( JIT )

    当我们在写代码时,一个方法内部的行数自然是越少越好,这样逻辑清晰.方便阅读,其实好处远不止如此,通过即时编译,甚至可以提高执行时的性能,今天就让我们好好来了解一下其中的原理. 简介 当 JVM 的初始 ...

  8. 某PHP发卡系统SQL注入

    源码出自:https://www.0766city.com/yuanma/11217.html 安装好是这样的 审计 发现一处疑似注入的文件 地址:/other/submit.php 看到这个有个带入 ...

  9. 无 PowerShell.exe 执行 Empire 的几种姿势

    在实战中,Empire成为域渗透.后渗透阶段一大利器,而Empire是一个Powershell RAT,所以PowerShell必须要能运行Empire中几乎所有的启动方法都依赖于使用PowerShe ...

  10. Ubuntu中用户名密码和root密码修改

    用户名密码和root密码不是同一个密码 重置(修改)root密码 ubuntu的root初始密码是随机的,每次开机都有一个新的root密码修改方法如下: 1.sudo passwd root 2.此处 ...