T1写炸了今天,期望70却落了个20...连链上的都没有写对

T3什么什么线段树分治套AC自动机,表示我完全自闭了,幸好考场上没有杠T3

总体比赛还是比较舒服,暴力分给的蛮足的,不像昨天那样


T1:林下风气

题目链接:

http://172.16.0.132/senior/#main/show/5913

题目:

里口福因有林下风气,带领全国各地高校掀起了一股AK风,大家都十分痴迷于AK。里口福为了打击大家的自信心,出了一道自以为十分困难的题目。
里口福有一棵树,第i个节点上有点权ai,他的问题就是这棵树中有多少个不同的连通块满足连通块的最大值与最小值之差=k,两个连通块不同当且仅当至少存在一个节点在一个连通块中出现而另一个连通块中没有出现。
痴迷于AK的你马上接下这道题目,在里口福狂妄的笑声中,你切掉这道题的决心更加坚定了,现在就差你的代码了。

题解:

我们枚举一下最小值,这样最大值就是唯一确定的了

以最小值为根跑$dp$,$dp(x,r,k)$表示最小值是$a[r]$,当前在$x$节点,最大值和最小值之差不超过$k$的连通块的个数

当$a[r]<=a[y]<=a[r]+k$时可以转移

发现这样以两个a值相等的点为根可能方案会算重,所以当$a[r]==a[y]$时我们强制让y<r的时候才可以转移

显然若当前枚举的最小值为a[i],对答案的贡献就是$dp(i,i,k)-dp(i,i,k-1)$

#include<algorithm>
#include<cstring>
#include<iostream>
#include<cstdio>
using namespace std; const int N=+;
const int mo=;
int n,k,tot;
int a[N],head[N];
struct E{
int to,nxt;
}edge[N<<];
inline int read()
{
char ch=getchar();
int s=,f=;
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
void link(int u,int v){edge[++tot]=(E){v,head[u]};head[u]=tot;}
int dp(int x,int pre,int r,int k)
{
if (k<) return ;
int re=;
for (int i=head[x];i;i=edge[i].nxt)
{
int y=edge[i].to;
if (y==pre) continue;
if (a[y]>=a[r]&&a[y]<=a[r]+k&&(a[y]!=a[r]||(a[y]==a[r]&&y<r)))
{
re=1ll*re*(dp(y,x,r,k)+)%mo;
}
}
return re;
}
int main()
{
freopen("lkf.in","r",stdin);
freopen("lkf.out","w",stdout);
n=read();k=read();
for (int i=;i<=n;i++) a[i]=read();
for (int i=,u,v;i<n;i++){
u=read();v=read();
link(u,v);link(v,u);
}
int ans=;
for (int i=;i<=n;i++)
{
ans=(ans+((dp(i,,i,k)-dp(i,,i,k-))%mo+mo)%mo)%mo;
}
printf("%d\n",ans);
return ;
}

T2:盟主的忧虑

题目链接:

http://172.16.0.132/senior/#contest/show/2531/0

题目:

里口福因有林下风气,带领全国各地高校掀起了一股AK风,大家都十分痴迷于AK。里口福为了打击大家的自信心,出了一道自以为十分困难的题目。
里口福有一棵树,第i个节点上有点权ai,他的问题就是这棵树中有多少个不同的连通块满足连通块的最大值与最小值之差=k,两个连通块不同当且仅当至少存在一个节点在一个连通块中出现而另一个连通块中没有出现。
痴迷于AK的你马上接下这道题目,在里口福狂妄的笑声中,你切掉这道题的决心更加坚定了,现在就差你的代码了。

题解:

我们把密道按权值从小到大排序

对于一条密道(u,v,w),如果u到v的路径上的边中存在边之前还没有被覆盖过,那么说明这条边的答案就是w

把每条边对应到它深度较深的端点上,并查集维护一下每个点向上第一个没有被覆盖的点。从u开始不断向上跳,沿路不断染色,直到跳到超过lca就不再染色。对v也是如此

#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll; const int N=1e5+;
int n,m,tot=;
int fa[N][],head[N],dep[N],f[N],ans[N];
ll color[N];
struct E{
int to,nxt;
}edge[N<<];
struct EDGE{
int u,v;
ll w;
}e[N];
bool operator <(EDGE a,EDGE b){return a.w<b.w;}
inline ll read(){
char ch=getchar();ll s=,f=;
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
void link(int u,int v){edge[++tot]=(E){v,head[u]};head[u]=tot;}
void dfs(int x,int pre){
fa[x][]=pre;
for (int i=;i<;i++) fa[x][i]=fa[fa[x][i-]][i-];
for (int i=head[x];i;i=edge[i].nxt){
int y=edge[i].to;
if (y==pre) continue;
dep[y]=dep[x]+;
dfs(y,x);
}
}
int lca(int x,int y){
if (dep[x]<dep[y]) swap(x,y);
for (int i=;i>=;i--) if (dep[fa[x][i]]>=dep[y]) x=fa[x][i];
if (x==y) return x;
for (int i=;i>=;i--) if (fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[y][i];
return fa[x][];
}
int find(int x){
if (f[x]!=x) f[x]=find(f[x]);
return f[x];
}
void col(int x,int goal,ll w)
{
if (dep[x]<dep[goal]+) return;
if (f[x]==x) color[x]=w,f[x]=f[fa[x][]];
int y=find(x);
if (dep[y]>=dep[goal]+) col(y,goal,w);
}
void dfs1(int x,int pre){
for (int i=head[x];i;i=edge[i].nxt){
int y=edge[i].to;
if (y==pre) continue;
ans[i>>]=color[y];
dfs1(y,x);
}
}
int main()
{
freopen("worry.in","r",stdin);
freopen("worry.out","w",stdout);
n=read();m=read();
for (int i=,u,v;i<n;i++){
u=read();v=read();
link(u,v);link(v,u);
}
dep[]=;dfs(,);
for (int i=;i<=m;i++){
e[i].u=read();e[i].v=read();
e[i].w=read();
}
for (int i=;i<=n;i++) f[i]=i;
sort(e+,e++m);
for (int i=;i<=m;i++){
int u=e[i].u,v=e[i].v;
ll w=e[i].w;
int L=lca(u,v);
col(u,L,w);col(v,L,w);
}
dfs1(,);
for (int i=;i<n;i++) if (!ans[i]) puts("-1");else printf("%d\n",ans[i]);
return ;
}

[JZOJ NOIP2018模拟10.19]的更多相关文章

  1. [jzoj NOIP2018模拟10.29]

    OI生涯的最高分,来了纪中这么多天,在经历了这么多场“NOIP难度”的模拟赛之后,终于看到了真正的NOIP 今天考场上效率很高,很快码完了全部的题目,留下了足够的时间对拍和...发呆.不得不说看着电脑 ...

  2. [jzoj NOIP2018模拟10.23]

    丢分主要是下面几个方面: 1.T2代码交错了,有个特判没写丢了10分 2.T1线段树加等差数列写错了(其实二维差分就可以,但我当时不会) 3.T3思考再三还是为了10分写上了主席树,还是写错了 总体评 ...

  3. [JZOJ NOIP2018模拟10.21]

    考试之前我刚刚领略到了特判的重要性,没想到T2的两个子任务还是写挂了,丢了20分 考试的感觉不行,一路打的都是暴力,正解的思路想到一半就断了推不下去 T1:逛公园 题目链接: https://jzoj ...

  4. [JZOJ NOIP2018模拟10.20 B组]

    T1:原根(math) 题目链接: http://172.16.0.132/senior/#contest/show/2532/0 题目: 题解: 一个数m原根的个数是$\phi{(\phi{(m)} ...

  5. [JZOJ NOIP2018模拟10.20 A组]

    由于T3数据出锅,还不清楚自己的分数...估分150,前100已经拿到了,T3的50没拍过(写的就是暴力怎么拍),感觉很不稳 考试的时候就是特别的困,大概是因为早上在房间里腐败...腐败完了才睡觉 T ...

  6. [jzoj 5926] [NOIP2018模拟10.25] naive 的图 解题报告(kruskal重构树+二维数点)

    题目链接: https://jzoj.net/senior/#main/show/5926 题目: 题解: 显然最小的最大路径在最小生成树上(最小生成树=最小瓶颈生成树) 于是我们建出kruskal重 ...

  7. [JZOJ 5893] [NOIP2018模拟10.4] 括号序列 解题报告 (Hash+栈+map)

    题目链接: https://jzoj.net/senior/#main/show/5893 题目: 题解: 考虑暴力怎么做,我们枚举左端点,维护一个栈,依次加入元素,与栈顶元素和栈内第二个元素相同时弹 ...

  8. [JZOJ 5912] [NOIP2018模拟10.18] VanUSee 解题报告 (KMP+博弈)

    题目链接: https://jzoj.net/senior/#contest/show/2530/2 题目: 众所周知,cqf童鞋对哲学有着深入的理解和认识,并常常将哲学思想应用在实际生活中,例如锻炼 ...

  9. [JZOJ 5910] [NOIP2018模拟10.18] DuLiu 解题报告 (并查集+思维)

    题目链接: https://jzoj.net/senior/#contest/show/2530/0 题目: LF是毒瘤出题人中AK IOI2019,不屑于参加NOI的唯一的人.他对人说话,总是满口垃 ...

随机推荐

  1. MyEclipse2015安装SVN插件

    一.下载SVN插件subclipse 下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 在打开的网 ...

  2. mysql事务的开启

    mysql事务的开启 对于一个MYSQL数据库(InnoDB),事务的开启与提交模式无非下面这两种情况: 1>若参数autocommit=0,事务则在用户本次对数据进行操作时自动开启,在用户执行 ...

  3. pyspark MLlib踩坑之model predict+rdd map zip,zip使用尤其注意啊啊啊!

    Updated:use model broadcast, mappartition+flatmap,see: from pyspark import SparkContext import numpy ...

  4. 转:Centos 7 使用git 用 ssh 连接github服务器

    https://blog.csdn.net/wzq793957419/article/details/68067204 首先Linux下载git,ssh服务都弄好 生成ssh密钥: $ ssh-key ...

  5. PySide2运行出错问题解决

    PySide2是QT官方出的Python的QT封装, 不过默认安装运行时候会有一些小问题, 可能是系统里已经安装过其他版本QT的原因, 会报错如下: PySide2 qt.qpa.plugin: Co ...

  6. 15. 3Sum[M]三数之和

    题目 Given an array nums of n integers, are three elements a, b, c in nums such that a+b+c=0? Find all ...

  7. 洛谷P4014 分配问题(费用流)

    题目描述 有 nn 件工作要分配给 nn 个人做.第 ii 个人做第 jj 件工作产生的效益为 c_{ij}cij​ .试设计一个将 nn 件工作分配给 nn 个人做的分配方案,使产生的总效益最大. ...

  8. 『转』How to Think About Your Career

    开始工作的伊始,逐渐转载及阅读Medium上知名华裔设计师Julie Zhuo的文章,这是她在medium上的介绍:Product design VP @ Facebook. Lover of foo ...

  9. 【BZOJ5020】[LOJ2289]【THUWC2017】在美妙的数学王国中畅游 - LCT+泰勒展开

    咕咕咕?咕咕咕! 题意: Description 数字和数学规律主宰着这个世界. 机器的运转, 生命的消长, 宇宙的进程, 这些神秘而又美妙的过程无不可以用数学的语言展现出来. 这印证了一句古老的名言 ...

  10. Unity的Json解析<二>–写Json文件

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/50378805 作者:car ...