首页 > 其他分享 >G71 可删除线性基+离线处理 P3733 [HAOI2017] 八纵八横

G71 可删除线性基+离线处理 P3733 [HAOI2017] 八纵八横

时间:2024-07-24 19:54:16浏览次数:16  
标签:cnt edg idx int 八横 sum 离线 P3733 bit

视频链接:G71 可删除线性基+离线处理 P3733 [HAOI2017] 八纵八横_哔哩哔哩_bilibili

 

 

 

G67 线性基+贪心法 P4151 [WC2011] 最大XOR和路径 - 董晓 - 博客园 (cnblogs.com) 

P3733 [HAOI2017] 八纵八横 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

// 可删除线性基+离线处理 O(1000*q)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <bitset>
using namespace std;

const int N=1010;
typedef bitset<N> bit;
int n,m,q,cnt,tot;
int tim[N],add[N],edg[N],del[N];
pair<int,int>xy[N];
bit p[N],sum[N],val[N];
bool vis[N];
int idx,head[N];
struct E{
  int to,ne; bit w;
}e[N];

void Add(int u,int v,bit w){
  e[++idx].to=v,e[idx].w=w,e[idx].ne=head[u],head[u]=idx;
}
void insert(bit x,int t){
  for(int i=1000;i>=0;i--){
    if(x[i]){
      if(tim[i]<t) //用x替换删除时间早的基
        swap(tim[i],t),swap(p[i],x);
      x^=p[i];
    }
  }
}
void dfs(int x){
  vis[x]=true;
  for(int i=head[x];i;i=e[i].ne){
    int y=e[i].to;
    // 没有搜过y,则继续搜索
    // 否则 把环的异或和插入线性基
    if(!vis[y]) sum[y]=sum[x]^e[i].w, dfs(y);
    else insert(sum[x]^e[i].w^sum[y],N);
  }
}
void print(bit &b){
  int s=0;
  for(int i=1000;i>=0;i--)if(b[i]){s=i;break;}
  for(int i=s;i>=0;i--) putchar('0'+b[i]);
  puts("");
}
void query(int t){
  bit b;
  for(int i=1000;i>=0;i--)
    if(tim[i]>t&&!b[i]) b^=p[i];
  print(b); //输出
}
int main(){
  cin>>n>>m>>q; string s,z;
  for(int i=1,x,y;i<=m;i++){
    cin>>x>>y>>z; bit w(z);
    Add(x,y,w); Add(y,x,w);
  }
  dfs(1); //预处理
  query(0);
  
  for(int i=1;i<=q;i++)del[i]=N; //初始化
  tot=q+1;
  for(int i=1,x,y,k;i<=q;i++){ //离线处理
    cin>>s;
    if(s[1]=='d'){ //Add
      cin>>x>>y>>z; 
      bit w(z);
      add[i]=++cnt; //添加的边
      edg[cnt]=cnt; //边的编号
      val[cnt]=(w^sum[x]^sum[y]); //环值
      xy[cnt]={x,y}; //路径的端点
    }
    else if(s[1]=='h'){ //Change
      cin>>k>>z; 
      bit w(z);
      del[edg[k]]=i; //删除的时间
      add[i]=--tot;  //添加的边
      edg[k]=tot;    //边的编号
      val[tot]=(w^sum[xy[k].first]^sum[xy[k].second]);
    }
    else{ //Cancel
      cin>>k;
      del[edg[k]]=i; //删除的时间
    }
  }
  for(int i=1;i<=q;i++){
    if(add[i]) insert(val[add[i]],del[add[i]]);
    query(i);
  }
}

 

标签:cnt,edg,idx,int,八横,sum,离线,P3733,bit
From: https://www.cnblogs.com/dx123/p/18314744

相关文章

  • 记一次在openEuler系统下离线编译升级到openssh9.8p1
    缘起由于某个项目上甲方对服务器进行漏洞扫描,系统为:openEuler22.03(LTS-SP4)。提示现有OpenSSH版本存在漏洞,需要升级到openssh-9.8p1的版本(目前最新),遂有了这篇记录文章。PS:切记!在升级SSH之前服务器上最好安装telnet或其他远程工具,以防升级失败导致无法链接上服务器。1、检查......
  • 离线分治算法:cdq 分治
    \(\texttt{0x00}\):前置芝士归并排序;树状数组;重载运算符(这个大概都会吧)。\(\texttt{0x01}\):介绍cdq分治是一种离线分治算法,可用来处理以下几种问题:解决和点对有关的问题。1D动态规划的优化与转移。通过CDQ分治,将一些动态问题转化为静态问题。它们的本质都是通过一......
  • 将 conda 环境跨平台离线移动
    我目前正在Windows上使用Anaconda。我想将虚拟环境移动到我的另一个系统,该系统使用linux作为操作系统。问题是linux系统无法访问互联网,所以我需要以某种方式从windows系统下载所有独立安装文件并将它们移动到linux系统。我该如何应对这个问题?这是一个补充问题,但我也遇到了困......
  • 二次离线莫队
    更新答案不是\(O(1)\)?答案可差分?二离来啦。P4887【模板】莫队二次离线先考虑贡献:\(f(x,[l,r])\)表示\(x\)对区间\([l,r]\)。考虑莫队每次的移动:\(r\tor'\)。答案增加为:\[\sum_{i\in[r+1,r']}f(i,[l,i-1])=\sum_{i\in[r+1,r']}f(i,[1,i-1])-f(i,[1,l-1])\]发现前......
  • pycharm如何在离线状态下设置成中文
    手动安装汉化包官方汉化包地址:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions 1、点击链接进入官方汉化包下载页      2、点击versions,找到和自己pycharm相同年份/版本的汉化包,后点击Download,浏览器会自动下载。 3......
  • Linux环境离线安装docker&docker-compose(包含一键安装脚本和一键安装包)
    一、docker离线安装1、下载docker离线安装包下载最新版本的docker(或者选择自己想要安装的版本)到本地。1)docker下载地址:Docker版本获取备注:此地址自2024年7月无法访问下载docker版本,小编已经将可以使用的docker、docker-compose版本整理在百度网盘中如有需要可以自行获取......
  • 【离线】- 莫队
    前言莫队是由莫涛提出的一种离线算法,是分块与双指针的结合,一般可以在\(O(n\sqrtn)\)或者\(O(n\sqrtm)\)的复杂度解决一些种类问题。普通莫队SP3267DQUERY-D-query给你一个长度为\(n\)的数列\(A\),\(m\)次询问,每次询问区间\([l,r]\)内的不同数字的个数。如果......
  • 百度人脸识别Windows C++离线sdk C#接入
    百度人脸识别WindowsC++离线sdkC#接入目录说明设计背景•场景特点:•客户特点:•核心需求:SDK包结构效果代码说明自己根据SDK封装了动态库,然后C#调用。功能接口设计背景•场景特点:--网络:对于无网、局域网等情况,无法连接公网,API方式无法运作。如政府单......
  • 安装docker在线和离线方式
    1、添加阿里云的yum下载源yuminstall-yyum-utilsyum-config-manager--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#查看这个新加的yum源中有那些版本包配置yumlistdocker-ce--showduplicates|sort-r#下载安装需要的rpm包yuminstall......
  • 大数据之路 读书笔记 Day6 离线数据开发之数据开发平台
    回顾Day5数据同步遇到的问题与解决方案Day4数据同步1.统一计算平台1.1MaxCompute概述MaxCompute(原名ODPS,OpenDataProcessingService)是阿里云提供的一种快速、完全托管的EB级数据仓库解决方案。它为用户提供了海量数据存储和实时计算的能力,适用于离线数据处理......