LA4487 Exclusive-OR

VoLTE吞字断续优化方案 网络侧通过各节点探针的数据采集,能够进行RTP和RTCP包的分析,确定各节点的上行或下行丢包情况。1.基于测试语音分析,每2秒中大约8个字,每个字约10个RTP语音包。通话过程中,语音有短暂停顿,收音段听语音中会出现“吞字/断续现象”2.连续丢3~5个RTP以上就可能会出现吞字断续的感觉。下行评价的丢包问题,很难有效指导定界定位分析,无从下手。2.部分终端可能存在RTCP不反馈,导致无法获取丢包。1.语音包为UDP包,无反馈,终端无法判定是否丢包。终端可依据自身的调度反馈或弃包进行上行丢包判决。 阅读详情

题目

LA4487 Exclusive-OR

题解

虽然说一眼加权并查集但是细节还是比较多。
首先输入就是一个坑,,为什么I后面有两种格式啊woc,不过我觉得我的MSG结构体是极其机智的qwq。用起来好爽而且还很快。

下面分类对要注意的情况进行说明。主要方法是将有两个之间关系的合在一个集合。

如果有单个的关系。
先判断能不能求出具体值以及合不合法。
不能的话通过单个关系把所在集合根的值找出来,把这个集合标记为已知(显然只要有一个确定了,整个集合都确定了,用根转化一下,求值的时候要方便一些)。

两个的关系。
还是先判断能不能求出来具体的值,还要考虑在同一个集合中也能求出来异或和的情况。
不能的话就合并集合,注意如果有一个集合是已知的,一定要把另外一个集合往已知集合上插,这样才能保证能根据根能求出值。

求和
首先把能求出具体值的处理了,遇到不能求出具体值的,找一个和它在同一集合的,在询问中的节点配对,因为同一个集合中一对点的异或和是可以算出来的,如果找不到就GG了。记得配对之后标记一下。

大概就这样了,加权并查集的具体操作就不讲了。。为了简化操作最好每次对要搞事情的x点findset一遍,能保证p[x]就是根.

代码

//QWsin
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxl=1000+10;
const int maxn=20000+10;

int n,Q,p[maxn],val[maxn],v[maxn];
void findset(int x){
    if(p[x]!=x) findset(p[x]),v[x]^=v[p[x]],p[x]=p[p[x]];
}

inline void merge(int x,int y,int Val){p[x]=y;v[x]=Val;}
inline int isnum(char ch){return ch>='0'&&ch<='9';}

struct MSG{
    char s[maxl];int p,l;
    inline void input(){gets(s);l=strlen(s);p=0;}
    inline int readnum(){
        while(p<l&&!isnum(s[p])) ++p;
        if(p==l) return -1;
        int ret=0;
        for(;p<l&&isnum(s[p]);++p) ret=ret*10+s[p]-'0';
        return ret; 
    }
};

int kase=0,know[maxn],done[20],a[20];//know[i]表示以i为根的并查集是否确定值 
inline void solve()
{
    printf("Case %d:\n",++kase);
    for(int i=0;i<n;++i) p[i]=i,v[i]=0,val[i]=-1,know[i]=0;;
    MSG msg;getchar();
    int ok=1,cnt=0;
    while(Q--)
    {
        msg.input();
        if(!ok) continue;
        if(msg.s[0]=='I')
        {
            if(ok)++cnt;
            int a=msg.readnum();
            int b=msg.readnum();
            int c=msg.readnum();
            if(c==-1)//-1表示只有两个数
            {
                findset(a);
                if(!know[p[a]]) know[p[a]]=1,val[p[a]]=b^v[a];
                else if((v[a]^val[p[a]])!=b) ok=0;
            }
            else
            {
                findset(a);findset(b);
                if(p[a]==p[b]) ok=((v[a]^v[b])==c);
                else if(know[p[a]]&&know[p[b]]) ok=(v[a]^val[p[a]]^v[b]^val[p[b]])==c;
                else {
                    if(know[p[b]]) v[p[a]]=c^v[a]^v[b],p[p[a]]=p[b];
                    else v[p[b]]=c^v[a]^v[b],p[p[b]]=p[a];
                }
            }
        }
        else
        {
            int sz=msg.readnum(),ans=0,ok=1;


            for(int i=1;i<=sz;++i) a[i]=msg.readnum(),done[i]=0,findset(a[i]);
            for(int i=1,x;i<=sz;++i) if(!done[i])
            {
                x=a[i];
                if(know[p[x]]) ans^=v[x]^val[p[x]];
                else 
                {
                    int tok=0;
                    for(int j=i+1;j<=sz;++j)if(!done[j]&&p[a[j]]==p[x]) {
                        done[j]=1,ans^=v[a[j]]^v[x];tok=1;break;
                    }
                    if(!tok) {ok=0;break;}
                }
            }

            if(!ok) printf("I don't know.\n");
            else printf("%d\n",ans);
        }
    }
    if(!ok) printf("The first %d facts are conflicting.\n",cnt);
    putchar('\n');
}

int main()
{
    while(scanf("%d%d",&n,&Q)&&(n||Q)) solve();
    return 0;
}
【AI平台】n8n入门2:第一个工作流,调用本地大模型 n8n是一款开源的,专注于AI工作流构建,支持灵活的自定义与集成。就是可以把大模型和其他工具联合起来,这就厉害了。而且,免费功能又强大,目前很火,来研究一下。 阅读详情

相关推荐

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

LA4487 Exclusive-OR (加权并查集)

题意: 有N个数X[0] ~ X[N], 事先并不知道他们的值,有三种操作(^为异或): I P V :告诉你X[P] = V I P Q V:告诉你X[P] ^ X[Q] = V Q K P1..PK:询问X[P1]^X[P2]^...X[PK]的值 如果信息矛盾 或者 不能知道查询的结果输出一些提示信息。 思路:对于第一种操作, X[P] = V 可以看做第二种操作的

hnust_Derker的博客 470

WPF窗口定位技巧:从基础到高级的三种实现方法

本文详细解析WPF窗口定位的三种核心方法:屏幕居中(CenterScreen)、父窗口居中(CenterOwner)和手动定位(Manual)。通过对比其适用场景、实现代码与注意事项,帮助开发者根据实际需求选择最佳方案,从而提升WPF应用程序的用户体验与专业度。

weixin_29224309的博客 273

la4487 加权并查集,异或的性质

两个数异或是一个值,这个时候只要再有任意一个数,两个数就都可以知道了 而如果知道了a和b的异或,a和c的异或,显然就可以知道b和c的异或 对于这题首先我的思路: 我的思路特别麻烦……因为受到了以前做并查集一题的影响:每个数的每一位都存起来,把它与它的反都存一遍,并查集维护与他相同的位的,并且用一个0一个1来表示和其他位的关系 但是问题在于……碰到一大堆异或在一起的话,有一些未知关系

qq_21704477的博客 604

《AI大模型评测与智能测试》

第三篇“实践蓝图”(第6-7章)着眼于测试领域AI应用,重点介绍了RAG、AI Agent开发及构建端到端智能测试系统的方法。本书聚焦AI时代的“质量”核心,以“AI赋能测试”(AI For Testing)与“AI模型评测”(Testing For AI)为双轮驱动。内容不仅深入剖析如何科学度量AI大模型的内在质量,还系统讲解如何利用AI赋能传统软件测试,帮助读者贯通从模型原理、评测到应用开发的全链路知识。

酌沧 1140

vc formal实例

gui 方式启动命令,

weixin_45077935的博客 682

并查集(加权) LA 4487 Exclusive-OR

题目传送门 题意:训练指南P245 分析:首先这道是经典的并查集题目,利用异或的性质。异或性质:x ^ 0 = x -> a ^ a = 0 -> x ^ a ^ a = x,即一个数对某个数异或偶数次等于它本身。 第一种操作:p = v,设立一个超级根节点RT,rt[p] = RT, edge[p] = v,表示p的父亲节点是RT,到它的值就是p本身的值(p^0)。第二种...

weixin_33755847的博客 175

实战优化!C#上位机串口通信卡顿问题:超时机制+数据缓存方案

串口名</param>/// <param name="baudRate">波特率

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1065

LA 4487 Exclusive-OR

题目:Exclusive-OR 思路: 并查集。 先将  I p v  的格式转化成  I p n v ,其中n为一个虚拟的根节点,在此后,n一定也要做根节点。然后就可以借助并查集来记录两数之间的关系。其中 fa[i] 记录 i 的根, d[i]=i ^ fa[i] 。如果x、y共一个根节点,那么 x^y = x^fa^y^fa = d[x]^d[y] 。对于每一个询问,要知道它是否

iwi 342

AI 实战篇 |基于 AI开放平台实现 人脸识别对比 功能,超详细教程【附带源码】

本篇文章来学习一下怎样使用 Unity实现简单地人脸识别 功能。 关于人脸识别,我们可以选择很多平台的SDK接入Unity来实现人脸识别的功能。

努力前行,总会成为自己心中的那道光 5万+

Unity引擎开发:复杂动作系统_动作捕捉数据的应用与整合

通过以上步骤,我们可以在Unity中有效地应用和整合动作捕捉数据,以实现更加真实和流畅的动画效果。从导入文件格式的选择,到预处理和优化,再到实时应用和调试验证,每一步都至关重要。希望本文能帮助你在Unity项目中更好地利用动作捕捉数据,提升动画质量和性能。

chenlz2007的博客 959

HDU3234&&UVA12232&&LA4487:Exclusive-OR(经典带权并查集)

Problem Description You are not given n non-negative integers X0, X1, ..., Xn-1 less than 220 , but they do exist, and their values never change. I'll gradually provide you some facts about them

ACM!荣耀之路! 2592

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[la P4487] Exclusive-OR

[la P4487]Exclusive-OR Time limit 3000 ms OS Linux You are not given n non-negative integers X0, X1, . . . , Xn−1 less than 220, but they do exist, and theirvalues never change. I’ll ...

a8233821的博客 181

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

异或(Exclusive-OR,Wuhan 2009,LA 4487)

异或La4487 并查集解法

Leo的博客 1509

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

UVALive(LA) 4487 Exclusive-OR(带权并查集)

题意:对于n个数X[0]~X[n-1],但你不知道它们的值,通过逐步提供给你的信息,你的任务是根据这些信息回答问题,有三种信息如下: I p  v : Xp = v;    Xp 的值为v I p q v :  Xp ^ Xq = v;   Xp 异或Xq的值为v Q k X1 X2 X3 ..... Xk  : 问X1异或X2异或X3....异或Xk的值为多少? 解题思路

Ash.的博客 601

LA4487 加权并查集

点击打开链接异或具有很多奇妙的性质: - aa ^ bb = bb ^ aa; - (aa ^ bb) ^ cc = aa ^ (bb ^ cc); - 若aa ^ bb = cc,那么aa ^ cc = bb。若XpXp XORXOR XqXq = vv,那么我们可以把XpXp与XqXq连一条边,权值为vv。 若XpXp = vv,那么就有XpXp XORXOR 00 = vv,所以我们可以把X...

MasterG 440

la4487

此题是带权的并查集、     对于xp ^ xq =v 就相当于并查集一条边     对于Xp=v ,可以假设一个0点,那么就可以看成与0异或     而所有的^ 操作是从叶节点到跟节点的路径压缩     判断是否矛盾只需判断xp ^ xq =v是否成立就行(此处要注意p和q需为同一集合中)     对于判断是否唯一确定只要判断是否所有元素都合成为一棵树就行了。因为只有一棵树的时

lyc 1038

LA 4487

LA 4487题意是有n个数,Q个操作,你并不知道这n个数的具体值。操作有三种: 1)I p v,告诉你第p个数值为v 2)I p q v,告诉你第p个数和第q个数的异或值为v 3)Q k a1…ak,询问a1…ak这k个数的异或值 考虑并查集,par[x]保存x的父节点,v[x]保存x和par[x]的异或值。 I p q v时,合并p和q,并在寻根时路径压缩,更新父节点以及和父节点的异或

Infinity的博客 536

异或(exclusive OR)

异或(exclusive OR) 异或,英文为exclusive OR,缩写成xor ​异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则 为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)​ 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。 异或也叫半加运算,其运算法则相当于不带进位的二进制加法:...

Old flame.Scar 1万+

UVALive 4487 Exclusive-OR

#pragma warning(disable:4996) //UVALive 4487 /* 题意:每次告诉你两个变量的异或值,或者是一个变量的确切值,询问一些变量的异或值 考点:并查集 思路:每次告知信息时:将两个变量添加到并查集里(只给一个变量的确切值的时候看做是和一个数值为0的超级变量异或,因为x^0=x) 并且对于每个节点记录此节点与其祖先节点的异或值,做法就是从此结点一直更新到祖

我是一颗小星星~ 849

uva 12232 - Exclusive-OR(加权并查集)

题目链接:uva 12232 - Exclusive-OR 题目大意:有n个数,一开始并不知道具体的值,现在进行Q次操作。 I u k:au的值为kI u v k:au⨁av=kQ k q1q2…qk:求q1⨁q2…⨁qk 对于Q操作不能确定的话输出"I don't know." 对于I操作矛盾的话则输出是第几条I操作出现矛盾的,并且停止后面所有的操作。 解题思路:加权并查集

不慌不忙、不急不躁 1939

UVa11582 巨大的斐波那契数列

题目 vjudge炸了,隔天再补上 题解 作为一道数学题这个还是比较interesting的,首先在%n意义下,斐波那契是会有循环节的,这个循环节是多少呢?因为只要有任意两个一样,那么后面一直累加出来的数列也是一样的,那就会出现一个循环节。有n^2个不同的两个的组合,所以n^2项左右一定会出现循环节,实测n=1000的话循环节在1501,比想象的小很多。找到循环节了就可以%了,k=a^b%M

QWsin的博客 2817
上一篇: LA4258 Metal
下一篇: UVa 11768 Lattice Point or Not
QWsin
博客等级 码龄11年 51粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值