首页 > 其他分享 >2024.07 别急记录

2024.07 别急记录

时间:2024-07-03 14:43:34浏览次数:14  
标签:2024.07 别急 记录 int void tot nx ban hd

1. CEOI2023 - Balance

考虑 \(S=2\)。令 \((a_{i,j},j+T)\) 连一条无向边,若 \(a_{i,j}\) 度数为奇数则连 \((a_{i,j},S+T+1)\),在这张图上跑出一个欧拉回路,则对边进行定向后每个题目入度与出度相同,去掉点 \(S+T+1\) 后入度与出度差 \(1\),刚好符合题目要求。于是若欧拉回路中 \(j+T\to a_{i,j}\) 则令其放到左边一列,否则放到右边一列。

对于 \(S=2^k\) 的情况,相同处理后可以递归下去。

点击查看代码
// Problem: P9731 [CEOI2023] Balance
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P9731
// Memory Limit: 1 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
using namespace std;

const int N = 6e5 + 10, M = 2e6 + 10;
int n, m, t;
vector<int> a[N];
int ind[N], cnt, id[N], cb[N];
int hd[N], fr[M], to[M], nx[M], tot = 1;
int vis[N], ban[M];
int cl[N], cr[N];
vector<int> st;

void add(int x, int y){
	fr[++tot] = x;
	to[tot] = y;
	nx[tot] = hd[x];
	hd[x] = tot;
}
void dfs(int x){
	vis[x] = 1;
	for(int &i = hd[x]; i; i = nx[i]){
		int y = to[i];
		if(ban[i]){
			continue;
		}
		int eg = i;
		ban[i] = ban[i^1] = 1;
		dfs(y);
		st.push_back(eg);
	}
}
void solve(int l, int r){
	if(l == r){
		return;
	}
	int mid = l + r >> 1;
	for(int i = 1; i <= n; ++ i){
		for(int j = l; j <= r; ++ j){
			if(!ind[a[i][j]]){
				id[a[i][j]] = ++ cnt;
				cb[cnt] = a[i][j];
			}
			++ ind[a[i][j]];
		}
	}
	for(int i = 1; i <= n; ++ i){
		for(int j = l; j <= r; ++ j){
			add(id[a[i][j]], i+cnt);
			add(i+cnt, id[a[i][j]]);
		}
	}
	for(int i = 1; i <= cnt; ++ i){
		if(ind[cb[i]] & 1){
			add(i, n+cnt+1);
			add(n+cnt+1, i);
		}
	}
	for(int i = 1; i <= cnt + n + 1; ++ i){
		if(!vis[i]){
			dfs(i);
		}
	}
	reverse(st.begin(), st.end());
	for(int i = 1; i <= n; ++ i){
		cl[i] = l, cr[i] = r;
	}
	for(auto i : st){
		int x = fr[i], y = to[i];
		if(x <= cnt && y <= n + cnt){
			a[y-cnt][cl[y-cnt]++] = cb[x];
		}
		if(x <= n + cnt && y <= cnt){
			a[x-cnt][cr[x-cnt]--] = cb[y];
		}
	}
	
	vector<int> ().swap(st);
	for(int i = 1; i <= cnt; ++ i){
		ind[cb[i]] = id[cb[i]] = 0;
		cb[i] = 0;
	}
	for(int i = 1; i <= cnt + n + 1; ++ i){
		vis[i] = hd[i] = 0;
	}
	for(int i = 1; i <= tot; ++ i){
		ban[i] = 0;
	}
	cnt = 0;
	tot = 1;
	solve(l, mid);
	solve(mid+1, r);
}

int main(){
	int T = 1;
	while(T--){
		scanf("%d%d%d", &n, &m, &t);
		for(int i = 1; i <= n; ++ i){
			a[i].resize(m+5);
			for(int j = 1; j <= m; ++ j){
				scanf("%d", &a[i][j]);
			}
		}
		solve(1, m);
		for(int i = 1; i <= n; ++ i){
			for(int j = 1; j <= m; ++ j){
				printf("%d ", a[i][j]);
			}
			puts("");
		}
	}
	return 0;
}

标签:2024.07,别急,记录,int,void,tot,nx,ban,hd
From: https://www.cnblogs.com/KiharaTouma/p/18281591/2024-07

相关文章

  • 机器学习与优化 (罗伯托·巴蒂蒂(Roberto Battiti) etc.)-技术记录
    书:pan.baidu.com/s/1hNegko58yFJU01fPQ9PBnQ?pwd=rz68我的阅读笔记:优化算法在机器学习中的应用: 探讨各种优化算法,如梯度下降法、遗传算法、模拟退火等在机器学习问题中的应用。深度学习与优化: 对深度学习模型中的优化问题进行深入研究,包括对神经网络权重的优化和超参数调整......
  • 【《视觉十四讲》例程运行记录】——运行ch9后端优化CeresBA和g2o求解BA的实践例程
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、运行ch9的例程代码1.MeshLab安装2.编译例程代码前的修改3.编译例程二可能的报错:c++:internalcompilererror:已杀死(programcclplus)1.问题描述2.原因分析3.解决总结一、运行ch9......
  • 详细记录海思相机适配新的sensor(IMX585)(一)——Hi3519DV500
     一、前言这几天手里有个任务,组里买了个相机模组,soc是HI3519DV500,配的是IMX585的sensor,但是HI3519DV500的SDK中支持的sensorlist没有IMX585,需要进行适配工作。查遍了全网能找到的博客,也咨询了一些博主,进行记录。(海思的坑是真的多,组里也没人搞,所以一个人四处踩坑;衷心感谢每一......
  • NetCore的全局日志记录
    Http进来的数据和出去的数据都记录在log中publicclassHttpLoggingMiddleware{privatereadonlyRequestDelegate_next;privatereadonlyILogger<HttpLoggingMiddleware>_logger;publicHttpLoggingMiddleware(RequestDelegatenext,ILogger<HttpLoggingM......
  • C#基础2024.07.02
    目录1.变量的作用域有哪些?2.成员变量和静态变量的区别?成员变量(实例变量)静态变量(类变量)3.利用递归,写个文件目录遍历,打印出文件名、扩展名、文件大小4.简述访问修饰符有几种,各有什么不同?(1)public(2)private(3)protected(5)internal(6)protectedinternal5.重点比较public、pr......
  • 2024.07.02【读书笔记】|医疗科技创新流程(第二章 创新创造 监管基础概述)
    监管基础概述监管基础涉及对医疗设备监管环境的理解,包括监管机构的组织结构、监管途径以及产品分类等。美国食品药品监督管理局(FDA)是全球领先的监管机构,其对医疗设备的监管流程为全球许多其他国家的监管机构所借鉴。FDA的背景和组织结构FDA是一个科学性的监管机构,负责保......
  • 2024.07.02【读书笔记】|医疗科技创新流程(第二章 创新创造 报销基础概述)
    报销基础概述在医疗领域,报销是指医疗设备、药品或服务在提供给患者后,由保险公司或支付机构对其进行补偿的过程。报销基础是医疗设备创新过程中的一个重要组成部分,它影响着产品的市场成功和可及性。报销的重要性医疗设备的报销直接影响到产品的市场接受度和销售潜力。如果......
  • fastjson低版本反序列化bug/设计缺陷记录
    1.问题场景 _id正常的赋值相同的代码我们继续跑 _id的值被反序列化到id上了???相同的代码,跑出不一样的反序列化结果,amazing2.问题探究2.1List<FieldInfo>反序列化时会先创建一个List<FieldInfo>每一个FieldInfoList<FieldInfo>的填充方式:遍历Methods[],取出所有的set......
  • 2024.07.02
    //二选一多路选择器modulemuxtwo(out,a,b,sl);  //模块名字(端口)    inputa,b,sl;            //输入信号名    outputout;              //输出信号名    regout;       ......
  • 【Springboot】基于AOP实现操作日志记录
    基于AOP实现操作日志记录文章目录基于AOP实现操作日志记录前言一、AOP1.介绍2.AOP核心概念二、基于AOP实现操作日志记录1.准备工作2.创建自定义注解和切面类3.实现日志记录总结前言 在springboot项目中,往往需要在用户完成某些操作(例如:增,删,改)时,能够将相关操作信......