同余最短路,可以用来解决像“给定 \(n\) 个整数,求这 \(n\) 个整数能拼凑出多少的其他整数(\(n\) 个整数可以重复取),以及给定 \(n\) 个整数,求这 \(n\) 个整数不能拼凑出的最小(最大)的整数,或者至少要拼几次才能拼出模 \(K\) 余 \(p\) 的数”的问题。
同于最短路是利用同余来构造状态,状态转移通常为 \(f_{i + j} = f_i + j\),类似于 \(dis_{v} = dis_u + e_{u, v}\)。
有 \(n\) 个数,分别为 \(a_1, a_2, a_3, a_4, \cdots, a_n\) ,算出这 \(n\) 个数最大的不能拼出的数,\(50 \le n \le 10^7\)
某凯的疑惑?
只能说很像,但不完全是,毕竟这有 \(n\) 个数,某凯的疑惑是两个数。
这里,我们就可以用同余最短路来做了,首先,取出 \(\min_1^n(a_i)\) 来作为我们的模数 \(mod\),对于一个余数 \(x (0 \le x \le mod - 1)\),会有一个数 \(k\),使得 \(k \cdot mod + x\) 可以被拼出而 \(k \cdot (mod - 1) + x\) 不能被拼出,那么,对于 \(x\) 来说,\(k \cdot (mod - 1) + x\) 就是最大的不能被拼出的数,对于每一个余数,我们会发现,都有一个 \(k\) 可以满足这样的关系(\(k\) 可能为负数),因此我们只需要找出这些数中最大的数即可。具体如何操作,看代码。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, int> pil;
#define fir first
#define sec second
const int N = 1e7 + 5;
int n, m, seed, mod;
int a[N];
ll dis[N];
bool vis[N];
void dijkstra() {
priority_queue<pil, vector<pil>, greater<pil>> q;
for (int i = 0; i <= mod; ++ i) {
dis[i] = 1e18;
}
q.push({0, 0});
dis[0] = 0;
while (!q.empty()) {
pil it = q.top();
q.pop();
int u = it.second;
if (dis[u] != it.first) continue;
for (int i = 1; i <= n; ++ i) {
int v = (u + a[i]) % mod;
if (dis[v] > dis[u] + a[i]) {
dis[v] = dis[u] + a[i]; // 找到最小的能被拼出的数
q.push({dis[v], v});
}
}
}
}
int main() {
scanf("%d%d%d", &n, &m, &seed);
mt19937 rng(seed);
auto get = [&]() {
uniform_int_distribution<int> qwq(2, m);
return qwq(rng);
};
mod = m;
for (int i = 1; i <= n; i++) {
a[i] = get();
mod = min(mod, a[i]);
}
dijkstra();
ll ans = -1;
for (int i = 0; i < mod; ++ i) {
ans = max(ans, dis[i] - mod);
// dis 中存的是最小的能被拼出的数
//所以只要再 -mod,就是最大的不能拼出的数
}
printf("%lld\n", ans);
return 0;
}
随着企业使用更多云服务,多云解决方案正在兴起。这些解决方案还与高速5G网络结合,同时使用人工智能和机器学习来优化和自动化多云管理协同工作。多云是一种云计算架构,企业利用两个或多个云计算供应商提供的云平台进行数据的处理和存储。其结果是构建一个统一而异构的云架构,它将多种云计算资源结合在一起。企业使用多云具有成本效益,可以从市场上优秀的云计算提供商那里获得最好的资源和平台,定制他们自己的云计算解决方案。以下是有关多云市场的一些信息:多云市场的发展全球多云市场2021年的市值为63.7亿美元。预计在2021年到2028年期间将保持26.3%的复合年增长率,到2028年年底将达到327.5亿美元。 从区域上看,全球多云市场预计将快速增长。美国多云市场在2020年占据最大的市场份额,为29.98%,其市值为5.783亿美元,预计到2027年的复合年增长率将达到27.3%。中国多云市场预计将以27.2%的复合年增长率增长,到2027年将达到19亿美元的市值。加拿大和日本预计在2020年至2027年期间的复合年增长率分别为24%和25.1%。在欧洲,德国是复合年增长率最高的国家之一,为19.7%。到
作者|梁唐大家好,我是梁唐。这是EasyC++系列的第74篇,来聊聊面向对象继承。继承(一)在我们进行开发的时候,我们经常会遇到抽象出来的类之间具有继承关系。举个简单的例子,比如我们在设计某游戏,当中需要定义Human也就是人这个类。每个人有名字,以及一定的血量,能够工作。也就是说Human这个类具有名字和血量这两个成员变量,还有一个工作的函数。现在我们还需要开发一个英雄Hero类,英雄也是人,他应该也有名字和血量,以及也可以工作。但英雄又和普通人不同,他具有一些特殊的属性。比如变异,比如超能力等等。那么我们在开发Hero这个类的时候,绝大多数的功能都和Human一样,但是又需要额外开发一些超能力函数。这个时候我们就会很自然地想到,如果Hero类能够复用Human类当中的内容,那么只要单独额外开发超能力相关的功能即可。让一个类能够复用另外一个类当中所有的功能,这样的功能叫做继承。在日常开发当中,类似的需求反复出现,因此继承是面向对象当中非常重要的一个部分。一个类继承了另外一个类,被继承的类成为基类或父类,继承的类成为子类或派生类。为了更好地说明,我们来看一个例子:classHuman{
一、Nginx的常用命令查看nginx编译过后的目录结构:#ll/data/nginx total0 drwx------2nobodyroot6Jun2311:16client_body_temp drwxr-xr-x2rootroot333Jun2313:20conf#存放了nginx相关的配置文件 drwx------2nobodyroot6Jun2311:16fastcgi_temp drwxr-xr-x2rootroot40Jun2311:15html#默认提供的web服务的”根目录” drwxr-xr-x2rootroot58Jun2313:31logs#logs目录是nginx日志的存放目录 drwxr-xr-x2rootroot135Jun2311:15modules#存放了一些模块会用到的库 drwx------2nobodyroot6Jun2311:16proxy_temp drwxr-xr-x2rootroot19Jun2311:15sbin#存放了nginx的二进制文件 drwx------2nobodyroot6Jun2311:16scgi_temp drwx
完整约束与非完整约束非完整约束机器人主要只是机器人系统动力学满足非完整约束的特点。例如空间机器人,移动机器人等。对于任何的机电系统,如果系统中存在任何的非完整约束,则该机电一体化系统/机器人即为非完整系统。物理系统可以分类为完整系统与非完整系统。许多理论或方程成立的条件之一,就是系统里所有的约束都必须是完整约束。例如,假若一个物理系统是完整系统与单演系统,则拉格朗日方程成立的必需与足够的条件是哈密顿原理。与完整约束不同的是,非完整约束是有其特殊定义的。对于完整约束系统,系统可以由以下方程式表示:f(x_1,x_2,......,x_n,t)=0非完整系统则无法用上式唯一表示。完整约束方程式与位置、时间有关,与速度无关。非完整系统主要表现特征是存在不可积分的微分约束。非完整系统至少存在于三个状况:物体在做滚动运动;系统的约束包括不等式;系统的约束与速度有关(例如普法夫约束)。也就是说,如果一个系统表示如下形式:f(x_1,x_2,......,x_n,\dotx_1,\dotx_2,......,\dotx_m,t)=0如果方程中,\dotx_1,\dotx_2,......,\dotx
rdkit用于处理分子的模块 rdkit.Chem.Atompairs对Atom-pair指纹的实现可以通过以下函数访问指纹:-GetAtomPairFingerprint-GetHashedAtomPairFingerprint(与GetAtomPairFingerprint相同)-GetAtomPairFingerprintAsIntVect-GetAtomPairFingerprintAsBitVect参考文献:R.E.Carhart,D.H.Smith,R.Venkataraghavan;“AtomPairsasMolecularFeaturesinStructure-ActivityStudies:DefinitionandApplications”JCICS25,64-73(1985).实现代码:rdkit.Chem.AtomPairs.Pairs.ExplainPairScore(score,includeChirality=False)>>>fromrdkitimportChem#倒入一个分子>>>m=Chem.MolFromSmil
作者|马腾飞1.研究背景现有的高通量筛选实验用于确定药物和靶标之间的生物活性是一个昂贵费时的步骤。因此,基于已经在临床实验中测量的相互作用,使用统计学和机器学习模型来估计新的药物-靶标的相互作用的强度是重要的替代方案。澳大利亚Deakin大学的SvethaVenkatesh课题组提出了GraphDTA,一种基于图神经网络的药物-靶标结合亲和力的预测方法。 2.相关工作2.1药物表征发明了SMILES表示计算机可读的分子,开发了多个有效的应用程序,包括快速检索和子结构搜索。根据SMILES可以计算药物描述符用作预测亲和力的特征。可以将SMILES视为字符串使用自然语言处理(NLP)技术来强化药物,也可以视为1D表示,输入卷积神经网络(CNN)以学习模型来预测亲和性。化学结构到SMILES字符串SMILES可通过rdkit开源软件生成graph的形式,然后通过图卷积网络表示学习得到药物特征向量。图形卷积网络(GCN)最流行的深度学习方法可用于药物-靶标结合亲和力的预测,GCN是卷积神经网络(CNN)到图结构数据的推广。GCN可分为两大类:基于谱的方法和基于空间的方法。基于谱的方法中,图首先
本文重点内容: 1、检测水体 2、应用水的阻力和浮力 3、在水中游泳,包括水面上和水面下 4、让物体漂浮这是关于控制角色移动的系列教程的第九部分。它让物体能够漂浮在水中并在水中移动。本教程是CatLikeCoding系列的一部分,原文地址见文章底部。本教程使用Unity2019.4.1f制作。它还使用了ProBuilder包。Unity升级我已经升级到Unity2019.4LTS和ProBuilder4.2.3版本,所以一些视觉效果有所改变。(泳池里玩的愉快)1水很多游戏都有水,并且大都是可以游泳的。然而,对于交互式水没有现成的解决方案。PhysX并不直接支持它,所以我们必须自己创造一个水的近似值。1.1水场景为了演示水,我创建了一个包含游泳池的场景。它有多种岸形,两个水面,两个水隧道,一座水桥,还有一些你可以在水下行走的地方。我们的水也可以在任意重力下工作,但这个场景使用简单的均匀重力。(泳池)水面由具有半透明蓝色材质的单面平网格制成。从上方可见,但从下方看不到。(水表面)水的体积必须用设置为触发器的碰撞器来描述。我在大部分的体积中使用了没有网格的盒碰撞器,比需要的尺寸稍微大一些,所
在对话式AI系统中,语音交互是主要的输入输出方式。对语音输出而言,有两种主要的方法,一种是事先制作好音频,然后根据用户的请求,播放音频;另一种是通过语音合成中的TTS技术,将文本转化为语音。在很多情况下,制作的音频往往要比语音合成的用户体验要好,因为人的声音中有更多的“色彩”,语音语调中可以有更多的情绪。但是,预先制作的工作量往往较大,而且由于预制的确定性,导致输出内容的动态性较弱。按需定制,动态输出正是TTS的强大之处。那么,如何让TTS的表达更加生动呢?在对话式AI系统DuerOS中,内容的生动化表达是通过SSML实现的。什么是SSMLSSML是一种标准的,基于XML的标记语言,使用这些标识来命令语音合成器/服务把文本(输入)转化成可读的输出结果。简单来说,就是把带有一定文字标识格式的文本语言转化语音输出结果。SSML设计的最初目的就是为了帮助开发人员提高合成结果的内容,通过格式化和标准化的标记方式来控制语音输出的各种属性,例如发音,音量等参数设置。因此,SSML设计的几个关键要素如下:一致性:提供可预测的语音输出控制,支持不同的语音合成服务部署兼容性:支持W3C的标准,包括但不仅
截至发稿,东芝还未就此作出正式回应。近日有消息称,在经过长时间的沟通后,西部数据已与东芝达成协议,西部数据将领衔财团以174亿的价格收购日本科技大厂东芝旗下的半导体业务。日本创新网络公司、日本政策投资银行、美国基金KKR分别出资3000亿日元,西部数据则出资1500亿日元。双方将于本周四,东芝董事会召开之际正式对外宣布这一收购消息。至此,这场长达半年之久的“抚养权”争夺战就此结束。抚养权终定案事件三方能否就此走上“康庄大道”?众所周知,为弥补核电子公司西屋电器造成了数十亿美元亏损,东芝急需出售业务获取资金来帮助自己脱离困境。而东芝芯片部门作为全球排名第二的NAND芯片生产商,其归属问题从一开始就广受行业关注。也因此,开启了西部数据与东芝长达半年之久的“抚养权”争夺战。 如今案继定,三方未来路会怎样,我们做个小预测:东芝相关数据统计,截至2016年第四季度,全球NAND芯片市场,三星的市场占有率达36%,位列第一;紧随其后的便是东芝,市场占有率为18.3%;而西部数据则以17.7%的占有率位居第三。在芯片业务被接手后,东芝势必要从第三的位置退下来,甚至从此退出NAND芯片的主流市场。但值
dubbo服务开发流程,运行流程?zookeeper注册中心的作用?使用流程:第一步:要在系统中使用dubbo应该先搭建一个注册中心,一般推荐使用zookeeper。第二步:有了注册中心然后是发布服务,发布服务需要使用spring容器和dubbo标签来发布服务。并且发布服务时需要指定注册中心的位置。第三步:服务发布之后就是调用服务。一般调用服务也是使用spring容器和dubbo标签来引用服务,这样就可以在客户端的容器中生成一个服务的代理对象,在action或者Controller中直接调用service的方法即可。Zookeeper注册中心的作用主要就是注册和发现服务的作用。类似于房产中介的作用,在系统中并不参与服务的调用及数据的传输。redis为什么可以做缓存?项目中使用redis的目的是什么?redis什么时候使用? 1)Redis是key-value形式的nosql数据库。可以快速的定位到所查找的key,并把其中的value取出来。并且redis的所有的数据都是放到内存中,存取的速度非常快,一般都是用来做缓存使用。2)项目中使用redis一般都是作为缓存来使用的,缓存的目的就是
感谢erixhao的作品,长文需细品:CodeWalkthrough是我们新的一个系列,主要以阅读,分析源代码为主要目的,特此介绍一下。我们先以最经典的JDK-HashMap来拆解,相信很多我们极客小伙伴自己也读过源码,不要紧,就当温故而知新吧,况且我们是庖丁解牛,逐行阅读,或许会有新发现。 总目录HashMap总览作者简介类变量定义构造器内部数据结构hash/index核心代码其他代码总结HashMap,无需多介绍,几乎每个Java程序员都使用过,并且可以说几乎每天都差不多要与之接触,或直接使用或间接使用,其重要性可见一斑,我们直接进入正题,让我们来看看这个不算注释不超过1000行的代码如何实现那么多神奇的功能,同时我们可以看看自己项目中的代码,反思一下。这里假设极客朋友们都非常熟悉HashMap本身用法,同时至少知道HashMap是由数组Bucket再加上链表构成,这样我们下面解牛的时候,至少可以区分大腿与小腿骨头了。:)哈哈。1.HashMap总览按照我们的习惯,由大局观开始俯视整体架构。当然,前提是我们假设所有人都已经非常清楚HashMap本身的用途,当然类的注释不可少。包结构
如何在CentOS9Stream上安装MariaDBMariaDB是一个免费的开源数据库管理系统,可以替代OracleMySQL服务器。MariaDB是MySQL的开发,它专注于稳定性和性能,并免费提供给用户。 步骤在CentOS9Stream上安装MariaDB步骤1.首先,让我们首先确保您的系统是最新的。sudodnfupdate复制出现Complete即更新成功,为保证顺利运行,请重启系统。reboot复制步骤2.默认情况下,CentOS9Stream基础存储库中提供了MariaDB。现在我们运行以下命令将MariaDB安装到您的系统:sudodnfinstallmariadb-server复制安装完成后检查版本:mariadb--version复制安装完成后,现在启用MariaDB(系统启动时自动启动),启动MariaDB,并使用以下命令验证状态:sudosystemctlstartmariadb sudosystemctlenablemariadb sudosystemctlstatusmariadb复制步骤3.安全MariaDB安装。默认情况下,MariaDB未加固。mys
KotlinFlow是基于Kotlin协程基础能力搭建的一套数据流框架,从功能复杂性上看是介于LiveData和RxJava之间的解决方案。KotlinFlow拥有比LiveData更丰富的能力,但裁剪了RxJava大量复杂的操作符,做得更加精简。并且在Kotlin协程的加持下,KotlinFlow目前是Google主推的数据流框架。1.为什么要使用Flow?LiveData、KotlinFlow和RxJava三者都属于可观察的数据容器类,观察者模式是它们相同的基本设计模式,那么相对于其他两者,KotlinFlow的优势是什么呢?LiveData是androidx包下的组件,是Android生态中一个的简单的生命周期感知型容器。简单即是它的优势,也是它的局限,当然这些局限性不应该算LiveData的缺点,因为LiveData的设计初衷就是一个简单的数据容器。对于简单的数据流场景,使用LiveData完全没有问题。LiveData只能在主线程更新数据:只能在主线程setValue,即使postValue内部也是切换到主线程执行;LiveData数据重放问题:注册新的订阅者,会重新收到Li
LeetCode笔记:BiweeklyContest901.题目一1.解题思路2.代码实现2.题目二1.解题思路2.代码实现3.题目三1.解题思路2.代码实现4.题目四1.解题思路2.代码实现比赛链接:https://leetcode.com/contest/biweekly-contest-90/1.题目一给出题目一的试题链接如下:2451.OddStringDifference1.解题思路这一题的题目难度感觉全在读题上面,看懂了题目基本就是按照题意翻译一下就行。找到每一个单词的pattern,然后将唯一一个pattern不同string挑选出来返回即可。2.代码实现给出python代码实现如下:classSolution: defoddString(self,words:List[str])->str: deffn(word): res=[] n=len(word) foriinrange(n-1): res.append(ord(word[i+1])-ord(word[i])) returntuple(res) cnt=defaultdict(int) forwinwor
这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟。 对如何提问的一点见解。 对Google开发流程的吐槽。 如果你 打算去国外工作。 对Google的开发流程感兴趣。 想成为一个不错的开发者。 那么请继续阅读。 如果你 觉得使用英文单词和缩略语就是装逼(例如此人LRui@和其代表作)。 无法忍受一个来自新人的言论。 那么请点击页面左上角或右上角的关闭,谢谢。 正文 区别 不同于一般公司,Google所使用的技术绝大多数是自己的技术,基础类库、文件IO、网络通信,什么都是自己的。尽管开源了不少,但更多的东西是不对外开放,这样就带来两个问题: 缺乏学习资源(由于Google技术大多不对外开放,所以是没有书籍可供参考,只能通过内部教程和文档再加上项目代码,自己去一点点摸索)。 出了问题没法Google(废话,Google会把自己的内部技术放到GoogleSearch上么),也没法Stackoverflow(同前)。 以上两点对于本屌这个曾经的微软系程序员打击极大——至少本屌从来没有在没有书看且没法
题意 懒得粘贴了,自己去找吧。 思路 啊哈我重构了代码,换了fhqtreap,这次秒过了。 思路还是比较显然的,就每行一棵treap,然后结尾一棵treap。 注意我们不可能维护每一个值,所以肯定是维护区间,那么把人叫走的操作就是将区间拆成三块,然后把中间那块拿走。在实现上就专门写了一个split_new来实现拆区间。 代码 /* ByNeroClaudiusCaeserAugustusGermanicus, EmperoroftheRomanEmpire. */ #include<bits/stdc++.h> usingnamespacestd; namespaceStandardIO{ template<typenameT>voidread(T&x){ x=0;Tf=1;charc=getchar(); for(;c<'0'||c>'9';c=getchar())if(c=='-')f=-1; for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';
一、自定义centos的DockerFile 1、从阿里源里拉的centos镜像新建的容器实例中,没有vim编辑器和ifconfig命令,所以自定义centos的DockerFile,创建自己想要的镜像。 FROMcentos MAINTAINERdyy<dyyjxcjdx@163.com> ENVMYPATH/tmp#设置环境变量 WORKDIR$MYPATH#$表示引用上面的路径 RUNyum-yinstallvim#安装vim RUNyum-yinstallnet-tools EXPOSE80#端口为80 CMDecho$MYPATH CMDecho"success------ok" CMD/bin/bash复制 2、执行DockerFile生成自定义的镜像,-f后面指定DockerFile文件的路径,-t后面加新镜像的名称和TAG,最末尾要加上一个“.”号。 dockerbuild-f/mydocker/DockerFile2-tmycentos:1.3.#注意最后要加一个.号复制 3、基于自定义创建的镜像,创建新的容器实例。 dockerrun
在Spark中有许多聚类操作是基于combineByKey的,例如group那个家族的操作等。所以combineByKey这个函数也是比较重要,所以下午花了点时间看来下这个函数。也参考了http://www.tuicool.com/articles/miueaqv这篇博客。 先看下combineByKey定义: /** *Genericfunctiontocombinetheelementsforeachkeyusingacustomsetofaggregation *functions.TurnsanRDD[(K,V)]intoaresultoftypeRDD[(K,C)],fora"combinedtype"C *NotethatVandCcanbedifferent--forexample,onemightgroupanRDDoftype *(Int,Int)intoanRDDoftype(Int,Seq[Int]).Usersprovidethreefunctions:
1.预备环境准备 请确保是在环境中安装使用: 64bitOSLinux/Unix/Mac,推荐使用Linux系统。 64bitJDK1.8+;下载.配置。 Maven3.2.x+;下载.配置。 3个或3个以上Nacos节点才能构成集群。 上述是naco官网要求(https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html),本次安装以CentOS7为例 2.Nginx安装及配置 #安装rz工具,将windows中的文件拷贝给linux [root@localhost~]#yum-yinstalllrzsz #准备目录 [root@localhost~]#mkdir/usr/local/nginx [root@localhost~]#cd/usr/local/nginx/ #解压nginx [root@localhost~]#tar-zxvfnginx-1.10.2.tar.gz #解压完毕后,移至目录 [root@localhost~]#cdnginx-1.10.2 #设置nginx安装路径,如果不设置,默认为/usr
编写Android程序从网络中获取图片资源,练习AsyncHttpClient、SmartImageView等开源框架的使用。 1.编写APP程序,导入AsyncHttpClient、HttpClient、SmartImageView、Gson四个开源框架的Jar文件包。 2.搭建Tomcat网络服务器,将imgInfo.json文件部署到服务器中并测试运行效果。 3.利用AsyncHttpClient访问网络服务器,获取json文件并解析其内容。 4.利用SmartImageView通过json文件中解析出的网络地址下载图片,并在界面列表中显示图片与相应文字,界面如图所示 这次写的有些坎坷,最后还没写完,最后有一个小问题没解决,因为时间不够了,就先放上来,慢慢修改吧 先给上xml文件 homework_12.xml <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" an