同余最短路

【算法笔记】一步一步推出来的同余最短路优化思路(千字长文,超详细) 同余最短路 同余最短路实际上使用最短路模型来优化DP问题,使用同余模型来优化极大的数据范围。 基本思想:通过同余构造某些状态,状态之间的关系类似于两点之间的带权有向边。 通常是解决给定m个整数,求这m个整数能拼凑出多少的其他整数(这m个整数可以重复取)或给定m个整数,求这m个整数不能拼凑出的最小(最大)的整数。 我们首先考虑一个问题: 给你一个数M,三个数x,y,z,问111 ~ MMM间一共多少个数可以由111开始,通过 +x,+y,+z,归零(变成1)+x,+y,+z,归零(变成1)+x,+y, 阅读详情

题意大致就是 一张无向图  每条边可以多次经过  问s,到t 的不小于k的最短路  (或者仅仅等于k的最短路)


取m=2*min(s到下一个点的最短路径):   如果一条路径长度sum可行   那么sum+m也是可行的   

然后 dis[i][j]表示从起点s到i点 ,路径长度%m==j  的最短路径    

最后就是利用同余的性质去跑最短路spfa


题目  HDU 6071

          51NOD 1326

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <algorithm>  
#include <iostream>  
#include <cstdlib>  
#include <cstring>  
#include <string>
#include <cstdio>  
#include <climits>
#include <cmath> 
#include <vector>
#include <set>
#include <queue>
#include <stack>
#include <map>
#include <sstream>
#define LL long long
#define fora(i,a,n) for(int i=a;i<=n;i++)
#define fors(i,n,a) for(int i=n;i>=a;i--)
#define sci(x) scanf("%d",&x)
#define scl(x) scanf("%lld",&x)
const int MAXN = 100024;
const long long INF = 1e18 + 60002;
const double eps = 1e-8;
using namespace std;
struct Node {
	LL v, mod, diss;
	Node(LL _v, LL _mod, LL _diss) {
		v = _v; mod = _mod; diss = _diss;
	}
	Node() {}
};
LL t, k, m;
LL g[4][60003];
bool vis[4][60003];
LL dis[4][4];
void spfa(LL v) {
	queue<Node>q;
	memset(vis, 0, sizeof(vis));
	memset(g, 0x3f, sizeof(g));

	q.push(Node(1, 0, 0));
	vis[1][0] = 1;

	LL nex_dis, nex_mod, nex_v;
	while (!q.empty()) {
		Node f = q.front(); q.pop();
		vis[f.v][f.mod] = 0;
		for (int i = -1, j = 0; j <= 1; i += 2, j++) {
			nex_v = (f.v + i + 4) % 4;
			nex_dis = f.diss + dis[f.v][nex_v];
			nex_mod = nex_dis%m;
			if (g[nex_v][nex_mod]>nex_dis) {
				g[nex_v][nex_mod] = nex_dis;
				if(!vis[nex_v][nex_mod]){
					vis[nex_v][nex_mod] = 1;
					q.push(Node(nex_v, nex_mod, nex_dis));
				}
			}
		}
	}
	LL Min = 4*INF, num;
	for (int i = 0; i<m; i++) {
		num = g[1][i];
		if (num<k) { num += ((k - num - 1) / m + 1)*m; }
		if (num<Min)
			Min = num;
	}
	printf("%lld\n", Min);
}
int main() {
#ifdef local
	freopen("ini.txt", "r", stdin);
	//freopen("out.txt","w",stdout);
#endif
	scanf("%lld", &t);
	while (t--) {
		memset(dis, 0, sizeof(dis));
		scanf("%lld", &k);
		for (int i = 0; i<4; i++) scanf("%lld", &dis[i][(i + 1) % 4]), dis[(i + 1) % 4][i] = dis[i][(i + 1) % 4];
		m = 2 * min(dis[1][0], dis[1][2]);
		spfa(1);
	}
	return 0;
}

2021英伟达暑期实习面经(芯片设计) 2021英伟达暑期实习面经(芯片设计前端/DFT) 准备了将近一个月,终于赶在三月的最后一天拿到了offer,暑期实习算是上岸了,后面还有阿里/华为等一些国内公司的面试,但既然拿到了nv的offer,后面的先就当积累面试经验吧~ 网上关于nv的实习or秋招面经很少,硬件岗的更少(约等于没有好吧)。之前准备面试的时候,在网上找了半天,好像就只在牛客网上见过一篇关于nv硬件岗的面经,幸好当时认真看了哈哈。所以既然幸运上岸了,想趁自己还记得,record一下,希望可以帮到有缘人呀~ 好了,废话不多说,开始正题。 阅读详情

相关推荐

【物联网毕设】多模态智能门禁系统设计(STM32+人脸识别+蓝牙联动)

本文详细介绍了基于STM32的多模态智能门禁系统设计,整合了人脸识别、蓝牙联动、RFID和密码等多种开锁方式。文章从硬件选型、电路设计、嵌入式软件编程到手机APP开发,提供了完整的毕设实现方案与调试指南,帮助物联网与嵌入式方向的学生构建一个功能全面、可扩展的智能门禁系统。

rain6的博客 247

同余最短路(总结)

同余最短路(总结) 同余最短路其实是一种优化最短路建图的方法。 通常是解决给定m个整数,求这m个整数能拼凑出多少的其他整数(这m个整数可以重复取)或给定m个整数,求这m个整数不能拼凑出的最小(最大)的整数。 时间复杂度:O(mlogn)O(mlogn)O(mlogn) P3403 跳楼机 给定x,y,z,hx,y,z,hx,y,z,h ax+by+cz=kax+by+cz=kax+by+cz=k,a,b,c≥0a,b,c\ge 0a,b,c≥0,求满足条件k≤hk\le hk≤h的kkk有多少个。 考虑令d

Harris-H的博客 1706

nRF52382低功耗蓝牙应用开发之入门教程-软件烧录

准备工作在上一篇文章讲过了,这里就讲讲nRFgo studio的使用 硬件准备: J-link:2线 供电:3.3V 如下图打开nRFgo studio界面介绍, 2、如果J-link正常,如下图 3、如果蓝牙芯片正常 4、烧录过程,如果蓝牙芯片之前有烧录过程序,需先点擦除,再点烧录 5、烧录代码路劲,例如 F:\nRF\SDK\nRF5_SDK_15.2.0_...

LinQiPing233的博客 1945

【学习笔记】同余最短路

我牙刷,以前学过??就是一整个大失忆

1288

【翼型】基于Matlab的NACA翼型气动性能仿真与优化【附源码】

本文详细介绍了如何使用Matlab进行NACA翼型的气动性能仿真与优化。内容涵盖从生成NACA翼型坐标、利用面板法快速估算升阻力,到进阶的粘性流模拟与优化设计入门。通过清晰的代码示例和分步指南,帮助读者掌握基于Matlab的翼型分析与优化流程,为飞行器或叶片设计提供实用工具和方法。

weixin_29032489的博客 411

计算光刻效率革命:为什么Hopkins模型比Abbe模型快?深入解析TCC的魔力

本文深入解析了计算光刻中Hopkins模型相比Abbe模型的效率优势,重点探讨了TCC(透射交叉系数)的工程智慧。通过预计算光学系统特性并复用TCC矩阵,Hopkins模型实现了数量级的加速,特别适用于复杂照明条件下的光刻仿真。文章详细介绍了TCC的物理意义、模态分解技术以及GPU并行计算等关键加速策略,为半导体制造中的光刻工艺优化提供了实用见解。

weixin_33364627的博客 389

同余最短路(总结)

同余最短路 **能解决的问题:**给定nnn个整数,求这nnn个数能拼凑出多少其他的整数(可重复取)。或者求nnn个整数不能拼出的最大/最小数。 这类题目较少,主要的就这两道题,看例题吧 P3403 跳楼机 若暴力:O(h)O(h)O(h) 若动态规划:完全背包 当hhh到达long  longlong\;longlonglong级别时,就不好用了,只能用同余最短路 咋做: **先用同余思想将O(h)O(h)O(h)复杂度降到O(min{a})O(min\{a\})O(min{a})

xxayt的博客 1046

【MATLAB强化学习工具箱】学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent

Simulink中便于搭建各类动力学与控制模型,通过将原有的控制器替换为AI控制器,可以方便使用已有模型,提供增量效果。 本节的重点是如何引入Simulink模型作为env,其他的内容在之前的文章中已有说明。 以水箱模型watertank为例,如下图所示: 采用PI控制器,控制效果如下所示: 将此PI控制器替换为神经网络控制器后,系统架构如下图所示: 具体替换策略如下所示: (1)删去PID控制器; (2)增加RL Agent模块; (3)观测器模块: 观测向量为:,其中...

bear_miao的博客 1万+

同余最短路学习笔记

最短路我们学过,那同余最短路又是什么东西呢??可以用来解决什么问题??往下看。我们从一道题来得到这个算法的思路。

weixin_42366947的博客 964

Ubuntu Server 22.04.5系统安装教程

该教程主要是演示在服务器上安装Ubuntu server 22.04系统的详细步骤,主要包含,安装系统前的准备(镜像的下载,启动盘的制作),安装系统时的语言选择,网络设置,切换镜像源(可根据实际需求来配置,本文使用清华镜像源),手动分区,用户设置,ssh服务安装等。以上就是关于Ubuntu Server 22.04系统安装的详细过程。

逆水行舟,不进则退。 7761

第一章:信号链的精度之战:深入解决电流采样偏差

摘要:本文深入探讨了FOC控制中电流采样偏差问题及其解决方案。电流采样偏差主要来源于偏移误差、增益误差、非线性误差和温漂四大类,其中偏移误差对FOC性能影响最为严重。硬件方面建议采用高精度采样电阻、低失调运放和独立基准电压等设计;软件层面提出了上电自动零点校准、在线实时补偿和模型闭环补偿三种策略。最后介绍了量产自动化校准系统,通过硬件优化和软件补偿相结合,确保每台产品电流采样精度的一致性,为FOC控制奠定坚实基础。

汽车软件开发 602
上一篇: 关于二分图最大匹配等于最小点覆盖的证明
下一篇: HDU 6069 求区间[L,R]每个数的k次方的因子数之和
DIDCJS
博客等级 码龄11年 5粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值