【ZJOJ 5454】【NOIP2017提高A组冲刺11.5】仔细的检查

jzoj5463【NOIP2017提高A组冲刺11.8】证书 题目Time Limits: 3000 ms Memory Limits: 524288 KBDescriptionPulumi生活在P城的角落,而他的朋友们gjdy,oyski,tutuwai等等生活在P城的靠中心位置。 P城很大,但它拥有优秀的城市结构,同时P城重视文化教育的发展,P城共有n个学校,校与校之间共建立了n-1条交通线路,且两所学校之间存在唯一的连通路径。 P城常常举行各种类型 阅读详情

Description

nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上。另一天nodgd更无聊,就又画了一张。
这时nodgd发现,两次画的顺序是不一样的,这就导致了原本的某一个节点u0在第一幅图中编号为u1,在第二副图中编号为u2。
于是,nodgd决定检查一下他画出的两棵树到底是不是一样的。nodgd已经给每棵树的节点都从1到n进行了编号,即每棵树有n个节点。
如果存在一个1到n的排列p1p2…pn,对于第一幅图中的任意一条边(u,v),在第二幅图中都能找到一条边(pu,pv),则认为这两幅图中的树是一样的。

Solution

树的哈希版子题,
(写得越猎奇越好)

Code

#include <cstdio>
#include <algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
#define efo(i,q) for(int i=A[E][q];i;i=B[E][i][0])
using namespace std;
typedef long long LL;
typedef LL Uin;
const int N=200500;
const Uin h2mo=1010003;//23 67
const Uin h1mo=4988741;//23 67
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int n,m,ans;
int B[4][2*N][2],A[4][N],B0[4],bv[4][N];
int Si1[N],Sz;
Uin Si[2][N];
int d[2][N];
int en;
int Ans[N],As[N];
struct qqww
{
    Uin h1,h2;
    Uin sh1,sh2;
    Uin z1,z2;
    int i,k;
}p[2][N],p1[N],p2[N];
void link(int I,int q,int w)
{ 
    bv[I][q]++;bv[I][w]++;
    B[I][++B0[I]][0]=A[I][q],A[I][q]=B0[I],B[I][B0[I]][1]=w;
    if(I<2)B[I][++B0[I]][0]=A[I][w],A[I][w]=B0[I],B[I][B0[I]][1]=q;
}
int FDz(int E,int q,int fa)
{
    Si1[q]=1;
    int mx=0;
    efo(i,q)if(B[E][i][1]!=fa)Si1[q]+=FDz(E,B[E][i][1],q),mx=max(mx,Si1[B[E][i][1]]);
    mx=max(mx,n-Si1[q]);
    if(mx<Sz)
    {
        Sz=mx;
        d[E][d[E][0]=1]=q;
    }else if(mx==Sz)d[E][++d[E][0]]=q;
    return Si1[q];
}
int dffffff(int E,int q,int fa)
{
    Si[E][q]=1;
    int mx=0;
    efo(i,q)if(B[E][i][1]!=fa)Si[E][q]+=dffffff(E,B[E][i][1],q);
    return Si[E][q];
}
Uin er1[N],er2[N];
Uin H1,H2;
void dfsf(int E,int q,int fa,int c)
{
    Uin cl=bv[E][q]-(fa!=0);
    cl=Si[E][q]*Si[E][q]*Si[E][q]*23333LL;
    p[E][q].i=q;p[E][q].k=E;
    p[E][q].sh1=p[E][q].h1=er1[c]*(Si[E][q]*Si[E][q]%h1mo*Si[E][q]*23333LL%h1mo-bv[E][q]*bv[E][q]%h1mo)%h1mo;
    p[E][q].sh2=p[E][q].h2=er2[c]*(Si[E][q]*Si[E][q]%h2mo*Si[E][q]*23333LL%h2mo-bv[E][q]*bv[E][q]%h2mo)%h2mo;
    efo(i,q)if(B[E][i][1]!=fa)
    {
        dfsf(E,B[E][i][1],q,c+1);
        p[E][q].sh1+=p[E][B[E][i][1]].sh1;
        p[E][q].sh2+=p[E][B[E][i][1]].sh2;
        if(p[E][q].sh2>=h2mo)p[E][q].sh2-=h2mo;
        if(p[E][q].sh1>=h1mo)p[E][q].sh1-=h1mo;
    }
}
void dfs(int E,int q,int fa,Uin h1,Uin h2)
{
    h2=(h2%h2mo+h2mo)%h2mo;
    h1=(h1%h1mo+h1mo)%h1mo;
    p[E][q].z1=((LL)p[E][q].h1+(LL)41LL*p[E][q].sh1%h1mo+(LL)h1*443ll%h1mo+111LL*p[E][fa].z1)%h1mo;
    p[E][q].z2=((LL)p[E][q].h2+(LL)87*p[E][q].sh2%h2mo+(LL)h2*47%h2mo+(LL)13143LL*p[E][fa].z2)%h2mo;
    H1=(H1+p[E][q].z1)%h1mo;
    H2=(H2+p[E][q].z2)%h2mo;
    h1=(h1+p[E][q].sh1)%h1mo;
    h2=(h2+p[E][q].sh2)%h2mo;
    efo(i,q)if(B[E][i][1]!=fa)
        dfs(E,B[E][i][1],q,h1-p[E][B[E][i][1]].sh1,h2-p[E][B[E][i][1]].sh2);
}
bool OK;
bool PX(qqww q,qqww w){return q.z1<w.z1||(q.z1==w.z1&&q.z2<w.z2);}
void dfsS(int q,int w,int fa)
{
    if(!OK)return;
    if(p[0][q].z1!=p[1][w].z1||p[0][q].z2!=p[1][w].z2){OK=0;return;}
    Ans[q]=w;
    int E=0;
    int t1=0;
    efo(i,q)p1[++t1]=p[0][B[0][i][1]];
    sort(p1+1,p1+1+t1,PX);
    E=1;
    int t2=0;
    efo(i,w)p2[++t2]=p[1][B[1][i][1]];
    sort(p2+1,p2+1+t2,PX);
    if(t1!=t2){OK=0;return;}
    fod(i,t1,1)link(2,q,p1[i].i);
    fod(i,t1,1)link(3,w,p2[i].i);
    for(int i=A[2][q],j=A[3][w];i;i=B[2][i][0],j=B[3][j][0])if(!Ans[B[2][i][1]])dfsS(B[2][i][1],B[3][j][1],q);
}
int main()
{
    freopen("check.in","r",stdin);
    freopen("check.out","w",stdout);
    int q,w;
    read(n);
    er1[1]=23;fo(i,2,n)er1[i]=(er1[i-1]*23LL)%h1mo;
    er2[1]=67;fo(i,2,n)er2[i]=(er2[i-1]*67LL)%h2mo;
    fo(i,1,n-1)read(q),read(w),link(0,q,w);
    fo(i,1,n-1)read(q),read(w),link(1,q,w);
    Sz=1e9;
    FDz(0,1,0);
    Sz=1e9;
    FDz(1,1,0);
    OK=0;
    fo(I,1,d[0][0])fo(J,1,d[1][0])if(bv[0][d[0][I]]==bv[1][d[1][J]])
    {
        q=d[0][I];w=d[1][J];
        dffffff(0,q,0);dffffff(1,w,0);
        dfsf(0,q,0,1); 
        H1=H2=0;dfs(0,q,0,0,0);
        Uin q1=H1,q2=H2;
        dfsf(1,w,0,1);
        H1=H2=0;dfs(1,w,0,0,0);
        if(q1!=H1||q2!=H2)continue;
        OK=1;
        dfsS(q,w,0);
        if(OK)break;
    }
    if(!OK){printf("NO\n");return 0;}
    printf("YES\n");
    fo(i,1,n)printf("%d ",Ans[i]);
    return 0;
}
mmdetection 实战:基于Mask R-CNN与自定义COCO数据集的目标检测全流程解析 本文详细解析了如何使用mmdetection框架和Mask R-CNN模型,基于自定义COCO数据集完成目标检测任务的全流程。内容涵盖环境搭建、数据格式转换、配置文件定制化、模型训练与评估等核心步骤,并提供了针对工业缺陷检测场景的实用调优思路与避坑指南,帮助开发者高效构建高性能检测模型。 阅读详情

相关推荐

谷歌账号国家或地区设置修改全攻略:条件、流程与避坑指南

谷歌账号的国家或地区设置与付款资料、账号历史行为及登录环境强绑定,修改时需满足特定条件。其原理在于地区作为索引键,关联内容库、货币结算和风控策略。正确切换可解决内容推荐错乱、付款失败等问题,适用于搬家、订阅区域限定服务等场景。操作前需在目标地区创建付款资料、清空余额并取消订阅,且一年仅能修改一次。本文详解从准备到验证的完整流程,并揭示官方文档未提及的实操陷阱,助你安全完成地区切换。

weixin_42521558的博客 2282

2021-7-21 【GMOJ】【ZJOJ】2536. 逆序数

【GMOJ】【ZJOJ】2536. 逆序数 一.题目大意 题目描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于(或等于)后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。 输入 第1行:N,N为序列的长度(n <= 50000) 第2 - N + 1行:序列中的元素(0 <= A[i] <= 10^9) 输出 输出逆序数 样例输入 4

YJH20200901的博客 393

手把手推导APM的 sqrt_controller控制器

前言 玩过无人机的朋友对APM应该都不会陌生,如果是搞过多旋翼飞控且读过代码,肯定遇到过sqrt_controller控制器,它频繁的在位置、姿态控制中出现,所以非常有必要搞清楚这个控制原理。 下面以高度控制器为例来分析。 高度控制 APM的高度控制采用PID串级3环控制,即外环位置控制,中间速度控制,内环速度控制,如下图所示。 今天要讨论的sqrt_controller就是应用于位置控制器中。位置控制器的输出是速度控制器的参考reference输入,如果采用单P控制,其输出vel_ref = pos_e

周小逗的博客 3029

[ZJOJ2014] 力 解题报告 (FFT)

题目链接: https://www.luogu.org/problemnew/show/P3338 题目: 给出$n$个数$q_i$,令$F_j=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_j}{(i-j)^2}$,$E_i=\frac{F_i}{q_i}$,求$E_i$ 题解: 显然$E_j=\sum_{i=1...

weixin_30849591的博客 221

Open Interpreter利用Code Interpreter实现本地化

作为一个可以在本地环境中运行的工具,Open Interpreter可以访问互联网,没有文件大小和运行时间的限制,并且可以利用任何包或库。去年7月,OpenAI发布了一个强大的插件,名为Code Interpreter(代码解释器),它可以根据用户的自然语言需求生成并执行代码解决方案,帮助完成各种任务,如数据分析、图表创建和文件编辑等。Open Interpreter不仅是一个编码解释器,它还是一个强大的工具,专注于处理复杂任务,将GPT-4代码解释器的强大功能与本地开发环境的灵活性完美结合在一起。

DigitalChina_DCG的博客 1794

使用FloodRisk2插件进行洪水风险评估

入汛以来,长江流域持续的强降雨使得沿岸多地成为洪水风险极高地区,抗洪、抢险、救灾继新冠病毒之后成为又一个攻坚阵地。如何科学地评估洪水风险,是快速决策的关键。 实际生活中,根据风险是否可控,一般将洪水风险大致分为两类:一类是通过数据分析可以得出其发生的可能性和后果,如强降雨引发的区域性洪水、水库/大坝溃决洪水等。这类洪水可以通过有关资料分析和设定一定条件计算得到可能的损失后果,也就是说,风险可以预判。另一类洪水风险基本是未知的,如滑坡堵塞河道形成堰塞湖引发的洪水,无法预知事件发生的地点和规模,具体的洪水风险无

QGISClass的博客 2877

【ZJOJ1321】灯

题目 贝希和她的闺密们在她们的牛棚中玩游戏。但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了。贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望。她希望您能够帮帮她,把所有的灯都给重新开起来!她才能继续快乐地跟她的闺密们继续玩游戏!   牛棚中一共有N(1 &lt;= N &lt;= 35)盏灯,编号为1到N。这些灯被置于一个非常复杂的网络之中。有M(1 &...

chen1352 759

GCC调试黑科技:-fomit-frame-pointer优化下如何保证栈回溯能力

本文深入探讨了GCC编译器在启用`-fomit-frame-pointer`优化选项时如何保证栈回溯能力。通过分析`.eh_frame`段的结构与DWARF调试信息,提供了从编译选项配置到实战调试的完整解决方案,帮助开发者在性能优化与调试能力之间找到最佳平衡点。

u6v7w8x的博客 904

ZJOJ Highway Project 3946(单源最短路+贪心)

大意:有n,m表示n个点,m个边,然后就是m条边的信息,分别是x,y,ti,cost.点xy间的路耗费时间是ti,金钱是cost.因为点和边范围为10^5,所以想到复杂度小的SPFA(O(E)).思路:直接是SPFA边求最短的时间的路,同时求耗费的金钱。但是注意耗费的金钱,cost[]数组不能够存从源点到当前点的耗费,因为若 两条路径时间是相等的,但是一条路是好多节点组成的但是耗费多。但是另一个是

Grit_ICPC的博客 870

智能制造——解读AI+工业设备预测性维护解决方案【附全文阅读】

摘要:本方案面向设备密集型制造企业,提供基于AI的预测性维护解决方案。通过工业物联网、大数据和AI算法,整合传感器数据与专家知识库,构建异常检测、故障诊断等模型,实现设备台账管理、智能点检等核心功能。方案配套软硬件工具矩阵,已在锂电子等行业落地应用,可降低维护成本30%以上,减少非计划停机50%,助力企业智能化转型。

cdfunlove的博客 138

PyTorch生成式人工智能——VQ-VAE详解与实现

VQ-VAE (Vector Quantised-Variational AutoEncoder) 的核心思想就是将 VAE 的连续潜变量离散化。它通过学习一个码本 (Codebook) 来实现这一点,码本是一个包含有限个嵌入向量的字典。模型不是直接输出一个连续的潜在向量,而是从码本中找出与编码器输出最接近的嵌入向量来代替它。本节首先详细讲解 VQ-VAE 的技术原理,然后使用 PyTorch 从零开始实现 VQ-VAE 模型。

盼小辉丶的博客 3293

洛谷:ZJOJ2007 报表统计

题目描述 Description Q的妈妈是一个出纳,经常需要做一些统计报表的工作。今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一。 经过仔细观察,小Q发现统计一张报表实际上是维护一个非负整数数列,并且进行一些查询操作。 在最开始的时候,有一个长度为N的整数序列,并且有以下三种操作:INSERT i k:在原数列的第i个元素后面添加一个新

LOI__DiJiang的博客 713

《YOLO26/YOLO11/YOLOv8改进与系统实战》,改进与系统实战专栏目录和介绍

YOLOv8 是目前比较火和比较成熟的深度学习框架,是2023年1月发布的,由 Ultralytics 团队开发。Ultralytics自YOLOv5 开始一直积极维护和更新 YOLO 框架,因此 YOLOv8 也享有持续的维护与升级支持。因此我写下《手把手教你YOLOv8实战》专栏,专门为那些对计算机视觉、深度学习、以及目标检测技术感兴趣的读者设计。通过本专栏,你将深入理解 YOLOv8 的核心原理与实际应用,从0 开始学习并掌握如何使用 YOLOv8 完成各类目标检测任务,帮助你快速上手并掌握 YOLO

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

Jzoj5454【NOIP2017提高A组冲刺11.5】仔细的检查

nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上。另一天nodgd更无聊,就又画了一张。 这时nodgd发现,两次画的顺序是不一样的,这就导致了原本的某一个节点u0在第一幅图中编号为u1,在第二副图中编号为u2。 于是,nodgd决定检查一下他画出的两棵树到底是不是一样的。nodgd已经给每棵树的节点都从1到u进行了编号,即每棵树有n个节点。 如果存在一个1到

扩展の灰(Extended Ash/Cooevjnz) 410

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【NOIP2017提高A组冲刺11.9】乘积

Description 豆豆最近在潜心研究数学,他发现了一类很有趣的数字,叫做无平方因子数。也就是这一类数字不能够被任意一个质数的平方整除,比如6、7、10都是无平方因子数,而12则不是。 所以豆豆在思考一个问题——选择不超过K个N以内的正整数乘起来,使得乘积是一个无平方因子数,有多少种取法?(每个数只能取一次) Input 第一行一个整数T表示数据组数。 接下来T行,每行两个整数N...

Brute♂force 1075

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

zjoj_4551_Even separation

题目: 输入: 4 6 1 2 1 3 1 4 2 3 2 4 3 4 输出: YES BAAA题解: 建异或方程组,每个点可以赋值0或1,如果一个点原来的度数是偶数,那么它领域的点的异或要是0;如果一个点原来的度数是奇数,那么它领域的点异或上它自己要是1。高斯消元。 详细的题解代码:#include <stdio.h> #include <iostream>

peter_zhu01的博客 407

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

nkoj 2598||zjoj 2010

题目: 给定一张有向图,每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。求: 1.在不扩容的情况下,1到N的最大流; 2.将1到N的最大流增加K所需的最小扩容费用;输入:第一行包含三个整数N,M,K,表示有向图的点数、边数以及所需要增加的流量。 接下来的M行每行包含四个整数u,v,C,W,表示一条从u到v,容量为C,扩容费用为W的边。 输出:包含两个整数,分别

Teeom的博客 692

【ZJOJ5186】【NOIP2017提高组模拟6.30】tty's home

如果直接求方案数很麻烦。 但是,我们可以反过来做:先求出所有的方案数,在减去不包含的方案数。 由于所有的路径连在一起, 于是设f[i]表示以i为根的子树中,连接到i的方案数设f[i]表示以i为根的子树中,连接到i的方案数 则f[i]=f[son]+(f[i]+1)f[i]=f[son]+(f[i]+1)表示从子树son分别到i和i其他儿子的子树的路径方案数。 由于每棵子树互不影响,

chen1352 540

【NOIP2017提高A组冲刺11.2】救赎(数学期望)

Description“是的。”我回答,“我不会忘记你。在森林里我会一点点记起往日的世界。要记起的大概很多很多:各种人、各种场所、各种光、各种歌曲……” ——村上春树《世界尽头与冷酷仙境》在没有心存在的世界尽头,音乐能够使小镇居民消散的心重新聚拢成形。作为镇子里唯一一个还残留着些许音乐记忆的人,我逐渐记起了往昔点滴……记忆中有一棵无根树,有n个节点。 对于一棵有根树的每一个非叶子节点,我们都等概

玫葵之蝶 526

[ZJOJ6271]整除(中国剩余定理+原根)

[ZJOJ6271]整除 ...

Panda_Hu's blog 259

【NOIP2017提高A组冲刺11.9】总结

①博弈的nim游戏方面,可以选择通过"选取2^i这个数"判断能否置对手于死地。 ②不要想别人怎么拿分,将自己的心态摆平,能拿的分拿完再说。

Luckfort 394

JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏

JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏 Description小A得了忧郁综合症,小B正在想办法开导她。 机智的小B决定陪着小A玩游戏,他从魔法的世界里变出一张无向联通图,每条边上都有边权。小B定义一条路径的权值为所有经过边中的最大权值,小A则定义两点的最短路径为所有路径中权值最小的路径权。 每次小A和小B会选出k对点mi_1,mi_2,分别计算出mi_1,m

Felix-Lee的博客 843

[ZJOJ] 5772【NOIP2008模拟】今天你AK了吗?

Description AK:All kill “你为什么没背书?” “没有为什么,我就是没背书。” “……我去年买了个表,G—U—N!” 头铁王InFleaKing把背书的时间都拿去列排列了…… n=3的排列一共有六个(顺序按字典序从小到大): 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 气不打一处来的InFleaKing把n的排列打乱了。 ...

单精度的梦 931

[JZOJ5456]【NOIP2017提高A组冲刺11.6】奇怪的队列

Description nodgd的粉丝太多了,每天都会有很多人排队要签名。 今天有n个人排队,每个人的身高都是一个整数,且互不相同。很不巧,nodgd今天去忙别的事情去了,就只好让这些粉丝们明天再来。同时nodgd提出了一个要求,每个人都要记住自己前面与多少个比自己高的人,以便于明天恢复到今天的顺序。 但是,粉丝们或多或少都是有些失望的,失望使她们晕头转向、神魂颠倒,已经分不清楚哪

Never give in. 454

【JZOJ 5441】【NOIP2017提高A组冲刺11.1】序列

Description给定一个1~n的排列x,每次你可以将x1~xi翻转。你需要求出将序列变为升序的最小操作次数。有多组数据。Solution看完这题,第一反应是双向广搜,第二反应是迭代深搜, 并不喜欢O(跑得过)的题目这题正解是迭代深搜, 估价函数为:序列里 相邻两个数的差不为1是个数, 因为你每次翻转一次,最多就是减少一个嘛,Code#include <cstdio> #include <

702

【ZJOJ2010】数字计数(数字计数)

设f[i][j][p]表示长度为i 最高位为j p出现的个数 显然 f[i][j][p]=sigma{f[i-1][k][p]} 其中k是次高位 但是最高位出现的那么多次都没有被我们算进去 但是很显然只需要加上(i-2)^10就阔以了 然后常规的分[1,b],[1,a-1]解决 常规的分成两部分 一部分最高位小于最高位(似乎有点怪怪的??) 另一部分就是剩下的 在这里只说下另一部分 算了...

Android66666的博客 307
上一篇: 【JZOJ 5452】【NOIP2017提高A组冲刺11.5】轰炸
下一篇: 【JZOJ 5446】【NOIP2017提高A组冲刺11.3】高考是不可能高考的
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值