当前位置: 首页 > news >正文

2025春季杭电多校4题解

进入正题

1004

  这道题没写出来最后,但依然有所收获。正如题解所说,像这种一大堆操作得到某种符合设定的东西,然后进行计数的题,往往都需要一个简洁的性质。这种性质不是手模样例搞出来的,就是猜出来的。但是像我这种蒟蒻,脑电波不容易对上的,模又模不出来,猜也猜不对,拿到一个题根本无法下手。但是这个1004,却给了我一种新的思考方式:从设定推出性质,使得这种性质能够连接操作和最后的设定。更具体的说,设操作为A,设定为C,我们需要某种性质使得A->B->C且C->B。手模样例得到性质,或许就是A->B的过程;而猜结论,或许是B->C再检验是否符合操作的过程。这样还剩下的一种解法是C->B。即直接从设定入手找到设定C成立的充要条件且能与A相联系。
比如这个1004,可以从最后的设定入手。这个设定有什么性质?
首先是\([Min,Max]\)的数每个都有一个,这个是个充要条件,对吧?但是好像很难利用。
第二个性质是这个集合里的数的和一定能算出来,等差数列嘛。在操作的过程中,\(Max\)\(Min\)肯定是不变的,那我找到了最值就能求和,但是真的能利用这个性质吗?和一定的时候它的集合一定是我们想要的吗?简单证明一下发现成立;
第三个性质是差分数组满足特殊性,构成是\(Min、1、1、1……\)。而对两个数进行操作能够减小他们之间的差值。我通过手写样例发现,每次操作两个数可以让差变成两个一半,比如数列{2,6},差分数组是{2,4},操作后变成{2,2,2},又可以继续操作,变成{2,1,1,1,1}。至此,我们得到了题解中提到的“最终目标就是将差分数组变为全是1 。那么如果相邻的\(a_{i}-a_{i-1}\)都是2的次幂,那么答案显然为 Yes”。这个过程中也发现了另外一个结论,两个奇偶性相同的数,差值一定为偶数(超级好证明)。但是此时又会发现我上面的操作都是对相邻的两个奇偶性相同的数进行操作,如果不相邻勒?这个时候就是题解中提到的特殊情况了。我推到这里就没法往后推了,遂看题解。但是题解里来了一句“不难发现”,这可很难发现啊!!!这种特殊情况是如何量化到gcd上,gcd又是如何能代表所有情况,好像真的需要点脑电波。不过我没有QWQ;
其实哔哔了这么多,说的还是一个事情,拿到这种题不知道怎么下手的时候,可以从设定推设定具有的性质,然后再考虑这些性质能推出来什么。好吧,其实可能像这个1004一样很难往下推,但是起码有个方向不是?

1007

  在杭电第二场的博弈论中,我学会了SG函数打表,SG值为0时,先手必败,反之先手必胜。(附上那道题的打表代码)

int sg[100][100];int init(int a,int b){if(sg[a][b]!=-1) return sg[a][b];set<int>s;for(int k=1;k<=3;k++){if(a>=k)s.insert(init(a-k,b));}if(b>=1){s.insert(init(a+1,b-1));s.insert(init(a,b-1));if(a>=1)s.insert(init(a-1,b-1));}if(b>=2){s.insert(init(a+1,b-2));}for(int i=0;;i++){if(!s.count(i)){return sg[a][b]=i;}}
}
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);memset(sg,-1,sizeof(sg));for(int i=1;i<=10;i++){for(int j=1;j<=10;j++){init(i,j);}}for(int i=1;i<=10;i++){for(int j=1;j<=10;j++){cout<<sg[i][j]<<" ";}cout<<endl;}return 0;
}

  但是SG函数有个缺陷,就是博弈最后一定有人赢有人输,不会像这道题一样平局(如果出现平局了SG函数会一直递归,没办法终止)。或许我们可以设定一个递归次数?递归10000次还没结束就说明是平局?感觉能行,这个时候我就可以不用SG函数了,都是递归,直接dfs去搜吧。但是怎么确定这里的10000?递归次数多了会爆,少了答案又不正确,似乎很难。虽然这道题好像还真能确定这个次数,不过我不会。
只能换一种做法了。
博弈论,大多数情况下是一种局面情况转移的过程吧,我们知道必胜策略的时候,我转移的时候就能够采取必胜策略,类似DP;我们不知道必胜策略的时候我只能打表推结论;如果两个都不知道,该怎么办?既然是情况的转移,我们就可以把每个情况看作一个节点,每次转移看作一条边,建图,这与SG函数有异曲同工之妙,我的理解是SG函数省掉了建图的过程直接求结果。对于先手,如果一个状态经过操作后能够使局面变成必败态,那轮到后手,后手肯定会输,这个状态称为必胜态(对应的SG值为1);反之,如果先手操作后只能使局面变成对后手有利的必胜态,那这个状态一定是对先手而言的必败态,注意这里我强调了“只能”,为什么?考虑一个状态既能转移到必胜态也能转移到必败态,如果是你你会怎么做?显然是采取最优策略,操作后转移到必败态给后手造成最劣局面而不是转移到必胜态让对手去win,那么这种状态依然是必胜态。所以我们在定义必胜态的时候,说的是操作后只要能够使局面变成必败态,那它就是必胜态;而只能让局面变成必胜态就是必败态。当我定义完所有的必胜态必败态后,没被定义的就是平局了。总结一下:
1.如果一个状态操作后能转移到必败态,那么该状态是对先手而言的必胜态;
2.如果一个状态操作后只能转移到必胜态,该状态对先手而言是必败态;
3.未被定义的状态是平局,一定能在有限操作结束游戏的背景下不会出现平局。
那么回归做题,写代码的时候我们对每种情况编号,抽象成节点,用一个队列存放所有已知状态的节点,比如这道题,\(a_{x}=0,a_{y}=0\)时,该节点A赢,已知状态,我就把它放到队列中。我们可以在给情况赋编号的时候将这类已知状态的点先放入队列中,类似拓扑排序中刚开始入度为0的点。然后我们建边。建边是根据博弈的规则建边的,比如A操作时是\([a_{x}][a_{y}][b_{x}][b_{y}]\),轮到B时或许就变成了\([b_{x}][b_{y}][(a_{x}+b_{x})\% 10][a_{y}]\),我们把这两个节点建一条单向边(更细节的是这个数组的前两维放的是当前操作者手上的数,比如A操作时前两维放\(a_{x},a_{y}\),B操作时前两维放\(b_{x},b_{y}\) )。每次从队列中取出节点,由于这些节点是知道状态的,所以就能利用上面的规则去更新能到达这个节点的节点的状态。但是我们建图方式只能知道当前节点能到达哪些节点,不知道哪些节点能到达当前节点。怎么解决?再开一个数组存反向边就行。也就是说我们的正向边是按照博弈规则建立的,我们的反向边是用来推其他节点的状态的。具体看代码,更好理解:

const int N1=11;
const int N2=2e5+10;int id[N1][N1][N1][N1],idx;//编号int ans[N2];//存节点的答案vector<int>e[N2];//正向边
vector<int>re[N2];//反向边int cnt[N2];void init(){queue<int>q;//对列,存已知状态的点for(int a=0;a<=9;a++){for(int b=0;b<=9;b++){for(int c=0;c<=9;c++){for(int d=0;d<=9;d++){id[a][b][c][d]=++idx;//所有情况量化成节点if(a==0&&b==0){ans[idx]=1,q.push(idx);//已知状态放入队列作为遍历的起点}else if(c==0&&d==0){ans[idx]=2,q.push(idx);}}}}}auto add=[&](int u,int a,int b,int c,int d)->void{int v=id[c][d][a][b];	e[u].push_back(v);re[v].push_back(u);};//建边for(int a=0;a<=9;a++){for(int b=0;b<=9;b++){for(int c=0;c<=9;c++){for(int d=0;d<=9;d++){//根据规则建边int u=id[a][b][c][d];if(a!=0){if(c!=0) add(u,(a+c)%10,b,c,d);if(d!=0) add(u,(a+d)%10,b,c,d);}if(b!=0){if(c!=0) add(u,a,(b+c)%10,c,d);if(d!=0) add(u,a,(b+d)%10,c,d);}}}}}while(!q.empty()){int x=q.front();q.pop();//若当前点为必胜态if(ans[x]==1){//利用反向边找到哪些点能到当前点xfor(auto y:re[x]){//已经判断过状态的点跳过,反之检查if(ans[y]==0){cnt[y]++;//记录当前点能到达多少个必胜态if(cnt[y]==e[y].size()){ans[y]=2;q.push(y);//更新状态并入队}//cnt[y]=e[y].size(),说明y能到达的点全是必胜态,对应结论一个点只能到达必胜态则是必败态}}}else{for(auto y:re[x]){//已经判断过状态的点跳过,反之检查if(ans[y]==0){ans[y]=1;q.push(y);}//只要能到必败态,那他就是必胜态,也是对应的结论}}}//只有必胜态和必败态入队,没入队的就是平局了
}
signed main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);init();int T;cin>>T;while(T--){int a,b,c,d;cin>>a>>b>>c>>d;cout<<ans[id[a][b][c][d]]<<endl;}return 0;
}

追更

1010

  从昨天晚上想到现在,不得不说这是一个很好的图论题;
求一个有向无环图上两个点之间的路径数,一般有三种做法,拓扑排序,bfs ,反向建图dfs+记忆化搜索。所以我拿到这个题的第一想法就是把图搞出来,然后再求路径数。但是这样肯定是对下标\(i\)建图。这就有一个问题,我在遍历每个无序对的时候,需要知道有哪些下标上的数是\(a_{i},a_{j}\)。这个过程可以在输入的时候预处理,\(a_{i}.push\_back(i)\)就行。也就是说把每一个\(a_{i}\)看作一个群体,这个群体下有若干个下标使得该下标上的元素是\(a_{i}\),也可以理解成题解说的“颜色”。处理的时候遍历群体\(a_{i}\)\(a_{j}\),枚举\(a_{i}\)中的每一个数字,与\(a_{j}\)中比它大的数字连边。由于是无序对,所以还需要用同样的方式处理\(a_{j}\)。时间复杂度明显来到了平方级别。更细节的。假设\(m=1\),无序对是1和2,数组的左半部分是1,右半部分是2,此时,每一个1都要和右边的2连边,是\(\frac{n}{2}\)条边,那有\(\frac{n}{2}\)个1,一共就是\(\frac{n^{2}}{4}\)条边,这个稠密度显然没办法用拓扑排序或者搜索去求路径数。于是我得到了第一个猜想,不能直接对下标进行连边。
手模样例。遍历到\(i=2\)时需要加上\(i=1\)\(i=2\)的路径数贡献,遍历到\(i=3\)时需要加上\(i=1\)\(i=2\)\(i=3\)的路径数贡献。或者说,我遍历到\(i=1\)时就把1对后继节点的贡献提前给他算好,但是你总不能遍历所有\(i=1\)的子节点吧,图都建不了。不过后面的\(i=2\)\(i=4\)都是属于群体\(a_{i}=2\),1对这个群体都产生了贡献,而这些群体又是\(a_{1}\)的子节点!!!这说明,可以对\(a_{i}\)连边。
深入思考,设\(ans[i]\)为以1为起点,i为终点的路径数,\(f[j]\)为前面节点对j产生的贡献,固有代码:

for(int i=1;i<=n;i++){ans[i]+=f[a[i]];//到达i的路径数为前面的节点对a[i]产生的贡献for(auto j:e[a[i]]){f[j]+=ans[i];//节点i对a[i]的后继节点产生的贡献}
}

感觉有点绕,对着样例思考这个代码其实很容易理解
但是,这个代码的复杂度是不可接受的,第一维是n,第二维受到e[a[i]]的节点数决定。如果e[a[i]]的节点数比较小,是不是就可以接受了,比如\(logn\)或者\(\sqrt{n}\)。如果你熟悉根号分治的话,就知道怎么处理了,所谓的根号分治,无非就是把某个东西分成\(<\sqrt{n}\)\(>\sqrt{n}\)两个部分,一个直接暴力枚举,复杂度不超过\(\sqrt{n}\),另外一个预处理。在图论中的根号分治主要是度数根号分治。一个节点的出度,意味着其子节点的数目,比如代码中的\(j:e[a[i]]\),这样就可以使复杂度可以接受了。但是这样有个问题。我们只算了度数\(<\sqrt{m}\)(m是边数)的节点对后继节点的贡献,但是没算度数\(>\sqrt{m}\)的节点产生的贡献。细想一下,当我遍历到i时,只要知道前面的节点有哪些是度数比根号m大的,就能算出之前没算的贡献。而度数大于根号m的节点数不超过根号m(可以简单证明),那我是不是可以建反向边,只要一个节点的初度大于根号m,那我就遍历这个节点的所有子节点(由于度数大于\(\sqrt{m}\)的节点个数不超过\(\sqrt{m}\)。这些子节点又是大度数点,所以不超过\(\sqrt{m}\),平衡了复杂度),然后建反向边,这样在后继处理的时候,我就知道前面有哪些度数比根号m大的节点与这个节点连了边。我补上这一部分贡献,在去算这个点对后继节点的贡献。

vector<int>ans(n+1,0);ans[1]=1;//记录到i的路径数
vector<int>f(c+1,0);//记录来自小度数节点的贡献
vector<int>g(c+1,0);//记录来自大度数节点的贡献for(int i=1;i<=n;i++){ans[i]+=f[a[i]];//先加上前面小度数节点对的贡献for(auto j:re[a[i]]){ans[i]+=g[j];//加上前面大度数节点的贡献,这种节点如果没出现在前面,他的g[j]=0,不影响结果}g[a[i]]+=ans[i];//不管这个节点是不是大度数,先维护,如果是大度数,后继如果遍历某个节点的大度数点有他,就算贡献,没他,计算时不加上他也没影响if(e[a[i]].size()<=B){for(auto j:e[a[i]]){f[j]+=ans[i];//当前节点对后继节点产生的贡献}}
}	

上完整代码

const int mod=1e9+7;void solve(){int n,c;cin>>n>>c;vector<int>a(n+1);for(int i=1;i<=n;i++){cin>>a[i];}int m;cin>>m;vector<vector<int>>e(c+1);for(int i=1;i<=m;i++){int u,v;cin>>u>>v;e[u].push_back(v);if(u!=v) e[v].push_back(u);}vector<vector<int>>re(c+1);int B=__builtin_sqrtl(m);for(int i=1;i<=c;i++){if(e[i].size()>B){for(auto j:e[i]){re[j].push_back(i);}}}vector<int>ans(n+1,0);ans[1]=1;vector<int>f(c+1,0);vector<int>g(c+1,0);for(int i=1;i<=n;i++){ans[i]=(ans[i]%mod+f[a[i]]%mod)%mod;for(auto j:re[a[i]]){ans[i]=(ans[i]%mod+g[j]%mod)%mod;}g[a[i]]=(g[a[i]]%mod+ans[i]%mod)%mod;if(e[a[i]].size()<=B){for(auto j:e[a[i]]){f[j]=(ans[i]%mod+f[j]%mod)%mod;}}}	cout<<ans[n]<<endl;
}

相关文章:

2025春季杭电多校4题解

进入正题 1004这道题没写出来最后,但依然有所收获。正如题解所说,像这种一大堆操作得到某种符合设定的东西,然后进行计数的题,往往都需要一个简洁的性质。这种性质不是手模样例搞出来的,就是猜出来的。但是像我这种蒟蒻,脑电波不容易对上的,模又模不出来,猜也猜不对,拿…...

2025春季杭电多校5题解

1009这么能猜?这个数据范围,对博弈论来说一定存在某种结论。故这题是结论题。设\(dp[n]\)表示有\(n\)个物体时敌方先手,我的胜率。则敌方先手后轮到我时有n-1或者n-4个物体,我再取物体。我取物体时肯定要的是胜率最大,所以有转移方程\(dp[n]=\frac{1}{2}*max(dp[n-1-1],dp[…...

Window10 关闭Edge浏览器的多选项卡通过Alt+Tab组合键切换的方式

在系统设置页面。 进行如下操作即可。这里就设置为图中的选项即可。之后切换的时候就会对Edge浏览器窗口级别进行切换了,不会再出现Alt+Tab组合键对Edge浏览器的选项卡级别的切换了。复制请注明出处,在世界中挣扎的灰太狼...

云行 | 国云聚智 AI甬动,天翼云中国行宁波站成功举办!

近日,以“国云聚智 AI甬动”为主题的天翼云中国行宁波站暨2025浙江电信AI+产业融合创新主题活动在宁波成功举办。作为第十五届智慧城市与智能经济博览会的重要组成部分,本次活动邀请到宁波市人民政府副市长金珊,宁波市人民政府副秘书长虞礼勇,宁波市通信管理局局长杨碧慧,…...

2025春季杭电多校3题解

翻车了 1005 没什么好说的,并查集维护就行 void solve(){int n;cin>>n;map<int,bool>vis;vector<int>a(n+1);for(int i=1;i<=n;i++){cin>>a[i];vis[i]=true;}vector<int>fa(n+1);iota(fa.begin(),fa.end(),0);auto find=[&](int x)->…...

华为鸿蒙(4.0)应用开发(4)—ArkTs开发语言 – 每天进步一点点

文链接:华为鸿蒙(4.0)应用开发(4)—ArkTs开发语言 – 每天进步一点点 鸿蒙4.0用的编程语言是ArkTs。它是在TypeScript的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。 简单来说,TypeScript是JavaScript的超集…...

【人工智能通识专栏】第十讲:阅读理解 - 指南

【人工智能通识专栏】第十讲:阅读理解 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !i…...

jenkins部署消息发送至钉钉--钉钉配置

钉钉配置: 1、在群设置里面点击机器人选项 2、点击添加机器人 3、选择自定义机器人 4、然后安全设置选择关键字就行,简单,内容随便输个 5、点击完成后会自动生成webhook,复制下来,钉钉这边的配置就完成了...

HyperWorks许可规划

在当今竞争激烈的工程设计与仿真市场中,高效且经济的资源管理成为企业成功的关键。HyperWorks作为一款功能强大的工程仿真软件,其许可规划功能帮助用户科学、合理地规划和管理许可资源,确保资源的高效利用,进而推动业务的持续增长。 什么是HyperWorks许可规划? HyperWorks…...

[GCJ 2015 #3] River Flow

定义函数 \(f_t(x)=\left\lfloor\dfrac{x}{2^t}\right\rfloor \bmod 2\),也就是周期为 \(2^{t+1}\) 的值域为 \([0,1]\) 的方波。 现在给定你一个离散函数 \(g\) 的长为 \(n\) 的片段,问你能不能将他表示为若干个如下函数的和: \[g(x)=\sum_ik_if_{t_i}(x+b_i) \]如果能,构…...

2025ICPC网络赛第一场题解

D题:树形DP 题意:给定一棵树,树上每个节点都有权值,断开若干条边,使树变成若干个连通块,定义每个连通块的贡献为连通块内最大点权\(-\)最小点权。算出总贡献和\((ans)\),要求和最大。 观察:考虑一个连通块,发现对连通块有贡献的仅为最大最小点权所在的点,其他节点贡献…...

拦截抓浏览器数据DrissionPage的演示

有时候一些网站进行了加密,显示的内容还用JS搞活字乱刷术,但是可以通过抓包抓到XHR中的JSON数据,而drissionpage(下文简称DP)相较于selenium可以更方便地抓这种数据; 本文内容仅用于学习交流,不得用于商用,侵权告删;可以看到唯独工资这块,被JS动了,由于参数很多,逆向…...

登录认证-下篇:基于 Redis 实现共享session登录

将验证码 (session.setAttribute("code", code));用户信息 (session.setAttribute("user", userDTO))改为存入redis中 将随机生成的token作为登录凭证,放在请求头中的authorization字段 并设置两层拦截器,解决状态登录刷新的问题业务流程图1业务流程图2…...

用 Go + Tesseract 实现英文数字验证码识别

一、为什么选 Go 二进制部署方便、启动速度快,适合在服务器或微服务中部署 OCR 接口。 gosseract 是成熟的 Go 对 Tesseract 的封装,调用简单。 可与 Go 的并发模型天然结合,便于批量或并发识别。 二、环境准备安装 Go(1.18+ 推荐) 更多内容访问ttocr.com或联系1436423940…...

基于MATLAB的CNN大气散射传播率计算与图像去雾实现

1. 核心流程设计 通过CNN直接学习大气散射模型中的传播率(透射率 t(x)),结合物理模型实现端到端去雾,流程如下: % 整体流程框架 input_img = imread(hazy_image.jpg); % 输入雾图 preprocessed_img = preprocess(input_img); % 预处理 [t_pred, A_pred] = cnn_model(prepr…...

.net连接MYSQL数据库字符串参数详细解析(总结)

通常数据库连接字符串为:Database=dbname;Data Source=192.168.1.1;Port=3306;User Id=root;Password=****;Charset=utf8;TreatTinyAsBoolean=false;其中常用的参数如下:Server,host, data source, datasource, address, addr, network address: 数据库位置(以上任何关键字均…...

Kubernetes 数据存储

在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。 Volume是Pod中能够被多个容器访问的共享目录…...

软件工程第一次作业

| 这个作业属于哪个课程 | <班级的链接> | | ----------------- |--------------- | | 这个作业要求在哪里|https://edu.cnblogs.com/campus/gdgy/Class12Grade23ComputerScience/homework/13469 | | 这个作业的目标 | 自我介绍、预习教材、总结自己想要在这门课程中获得…...

软件工程第一次作业:自我介绍+软工五问

这个作业属于哪个课程 计科23级12班这个作业要求在哪里 作业要求这个作业的目标 通过编写自己的博客来进行自我介绍,以此来熟悉博客园,github1.自我介绍 我是广东工业大学23级计算机科学与技术1班的廖永祺,爱好打游戏,运动。 2.问题 1.这个课程的最终目标是让学生学会什么 …...

软件著作权市场与加密货币趋势

尽管市场对美联储9月降息存在分歧,但Coinbase最新月度展望报告指出,这并不意味着加密货币市场已触及局部顶点。数据显示,当前货币市场基金中超过7万亿美元的散户资金仍处于观望状态,美联储宽松政策可能在未来几个月释放更多市场参与潜力。这一判断与软件著作权领域呈现的扩…...

The 3rd Universal Cup. Stage 37: Wuhan

Preface 这场打的时候出现了各种突发情况,比如中途和教练在机房讨论了若干问题,徐神 J 题写一半临时有事走了之类的 再加上有人犯病了魔改欧拉回路板子导致 E 题完全对的思路最后没过,直接 9 题变 7 题了 我再也不乱改板子了.jpgA. Problem Setting 队友开场写的签 #include…...

炸裂:SpringAI新版发布,终于支持断线重连了!

盼星星盼月亮,Spring AI 新版 1.1.0-M1(1.1.0 里程式版本)终于支持 Steamable HTTP 了,也就意味着 Spring AI 的 MCP 服务终于支持自动断线重连了。 1.SteamableHTTP 定义:Streamable HTTP 是基于标准 HTTP 协议的流式数据传输模式,允许客户端或服务器在数据完全生成前,…...

spring 事务实战:声明式vs 编程式

------------------------------------------------------------------------------------------------------ 在 Spring 中,事务管理有两种核心实现方式:声明式事务和编程式事务。它们各有适用场景,下面通过实战示例对比两者的实现方式和特点。 一、编程式事务(Programmat…...

Mysql 事务提交回滚退回

mysql 验证可以通过事务 START TRANSACTION; 进行提交或者回滚 避免错执行START TRANSACTION; 执行SQL rollbacl 这个sql执行后会回滚 ,下个SQL 执行会正常提交 执行 commit rollback 就已经触发 start transactionSTART TRANSACTION; 执行SQL commit 执行玩数据会正…...

鸿蒙前端开发3-ArkTS语言基本语法

官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-basic-syntax-0000001504650057-V2 1.基本语法 装饰器   用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定…...

solo博客容器化运行访问

在实验之前,需要准备一个solo包,linux虚机(centos,ubantu,Euler),数据库 solo博客通过java语言启动,也通过java语言进行运维。当前java版本最高有23,我们采用的是17. dnf -y install java 命令这样执行,java版本只会是11,可以通过java -version查看 dnf install jav…...

Flutter应用架构设计:基于Riverpod的状态管理最佳实践

Flutter应用架构设计:基于Riverpod的状态管理最佳实践本文基于BeeCount(蜜蜂记账)项目的实际开发经验,深入探讨如何使用Riverpod构建可维护、可扩展的Flutter应用架构。项目背景 BeeCount(蜜蜂记账)是一款开源、简洁、无广告的个人记账应用。所有财务数据完全由用户掌控,支持…...

P12502 「ROI 2025 Day1」天狼星的换班 「线段覆盖问题」

题目传送门线段覆盖问题,数据结构优化 DP。题意 是否能从给定的 \(k\) 条线段 \((l,m,r)\) 中按照某种顺序地挑出任意个线段覆盖区间 \([1,n]\),并满足如下条件: 后挑出的线段的 \(m\) 不能落在已挑出的线段上。 \(1 \leq n,k \leq 5 \times 10^5\),\(1 \leq l \leq m \leq…...

动态规划DP问题详解,超全,思路全收集

1. 01背包问题 (01 Knapsack Problem) 问题描述: 有 N 件物品和一个容量为 V 的背包。第 i 件物品的体积是 v[i],价值是 w[i]。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。第一步:dp[i][j] 的定义是: dp[i][j] 表示从前 i 件物品中任意选…...

SQL入门与实战

SQL:用于访问和处理数据库的计算机语言...

day05 课程

day05 课程课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=94 5.1 学习字符串的必要性5.2 认识字符串5.3 字符串输出5.4 字符串输入5.5 下标5.6 切片简介5.7 体验切片5.8 字符串常用方法简介5.9 字符串常用操作方法之查找5.…...

【JPCS独立出版Fellow杰青云集】2025年先进材料与航空航天结构力学国际学术会议(AMASM 2025)

会议将聚焦“先进材料”、“结构力学”、“航空航天工程”等前沿领域,旨在为来自国内外高校、科研机构、企事业单位的专家、教授、学者、工程师等搭建一个交流最新研究成果、分享专业经验、拓展学术与产业网络的国际平台。大会将深入探讨本领域面临的关键技术挑战与发展方向,…...

算法-TSP旅行商问题-03 - jack

目录问题的核心要素问题的复杂性常见的解法对于大规模问题:穷举动态规划实现 (Held-Karp) 旅行商问题 (Traveling Salesperson Problem, TSP) 旅行商问题是计算机科学和运筹学领域一个非常经典且著名的组合优化问题, 给定一系列城市和每对城市之间的距离,找到一条最短的哈密…...

AI编程⑤:【Cursor保姆级教程】零基础小白从安装到实战,手把手教你玩转AI编程神器!

一、什么是AI编程? 以前的编程是靠专业技术人员+学习至少一门擅长的编程语言去写程序 现在是通过对话聊天+AI大模型写程序 对话+AI大模型=AI编程 所有的模型对话上下文都有长度限制,这也是目前AI编程一个短板所在 二、Cursor免费和收费的区别,怎么充值?模式特点免费只能使用…...

ArkTS

装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新。 UI描述:以声明式的方式来描述UI…...

一文读懂基因检测PLM、体外诊断试剂PLM的功能、价值、解决方案

在体外诊断(IVD)与基因检测行业,研发面临 “高合规门槛、高数据复杂度、高协同需求” 三重挑战:合规需满足 ISO 13485、FDA 21 CFR Part 11、NMPA 等多标准,疏漏易致上市延期;基因试剂需记录上百种物料参数,实验数据关联复杂,传统 Excel 管理易出错、难追溯;研发与 SA…...

ai本地部署工具有哪些?新手入门AI推荐这几个

随着ai技术的火热,越来越多新手想尝试在本地部署ai模型,体验ai的魅力。但面对复杂的部署流程,不少人望而却步。其实,选对工具能让部署变得简单。今天就给大家推荐几款适合新手的ai本地部署工具,其中首推DS本地部署大师,还会详细介绍用它部署DeepSeek的操作步骤。 一、几款…...

匿名内部类

...

文件上传、分片上传结合antdProComponents表格展示,点击上传

文件上传、分片上传结合antdProComponents表格展示,点击上传上传组件:// ChunkUpload.jsx import React, { useCallback, forwardRef, useState, useImperativeHandle, useEffect, useRef } from react; import { UploadDropZone } from @rpldy/upload-drop-zone; import {Ch…...

2025 年 PLM 市场新锐崛起:五家厂商以创新技术引领行业变革新路径

在制造业数字化转型的汹涌浪潮中,产品生命周期管理(PLM)领域正历经着前所未有的深刻变革。往昔传统的软件模式逐渐式微,一批将技术创新奉为圭臬的新锐厂商强势登场。它们凭借独具差异化的解决方案,宛如矫健的黑马,在市场中迅速崭露头角,为制造企业精心打造出从研发设计的…...

2025 年国产 PLM 系统发展全景:厂商实力与核心功能深度解读

随着国产 PLM 技术的持续突破,本土厂商在功能适配性、行业针对性和服务响应速度上的优势愈发凸显,为不同规模、不同领域的制造企业提供了更贴合需求的解决方案。本文将聚焦 2025 年国产 PLM 系统主流厂商,全面解析厂商特色与系统核心功能模块,为企业选型提供参考。一、2025…...

开发效率翻倍!编码助手+云效 AI 评审如何破解代码质量与速度难题?

如今随着 AI 技术的突破,这一问题出现了全新解法:使用编码助手(包括不限于通义灵码、Qoder、Cursor、Claude Code 等工具,本文以通义灵码作为示例) + 云效 AI 评审,助力解决传统开发流程中的一些挑战。作者:致信 背景 随着软件开发复杂度的持续攀升和产品迭代周期的不断…...

SSL部署完成,https显示连接不安全如何处理?

在部署 SSL 后,如果浏览器仍然显示 “连接不安全” 或 “Not Secure”,通常是由以下几种原因导致的。针对每种可能的原因和问题,以下提供了详细的排查和解决方案。1. 排查问题的可能原因 1.1 SSL 证书未正确安装 如果 SSL 证书安装不完整或配置错误,浏览器会显示连接不安全…...

各省简称

各省简称目录一、华北地区二、东北地区三、华东地区四、华中地区五、华南地区六、西南地区七、西北地区八、特别行政区记忆小技巧: 一、华北地区省份全称 简称 由来简述北京市 京 直接取自全称中的字。历史上是京城的所在地。天津市 津 直接取自全称中的字。意为“天子的渡口”…...

完整教程:HDFS基准测试与数据治理

完整教程:HDFS基准测试与数据治理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; f…...

var code = 76cb2b4f-5a26-4a70-a3bf-dc8f2ae5162f

var code = "76cb2b4f-5a26-4a70-a3bf-dc8f2ae5162f"...

解放双手!三端通用的鼠标连点神器

前言在日常工作和游戏中,我们经常遇到需要大量重复点击的情况——无论是抢购、快速通过游戏关卡,还是处理繁琐的数据录入工作。手动重复点击不仅枯燥乏味,还容易导致手腕疲劳。今天给大家分享一款轻巧易用的鼠标连点器工具,支持多种点击模式,彻底解放你的双手!为什么推荐…...

用 C# 与 Tesseract 实现验证码识别系统

一、项目概述 验证码识别在自动化测试、爬虫开发与用户辅助系统中具有重要价值。本文将介绍如何使用 C# 调用 Tesseract OCR 实现验证码图像识别功能,并对验证码图像进行简单预处理,以提高识别准确率。 二、开发环境准备安装 Tesseract 更多内容访问ttocr.com或联系143642394…...

【9月19日最终截稿,SPIE出版】2025年信息工程、智能信息技术与人工智能国际学术会议(IEITAI 2025)

2025年信息工程、智能信息技术与人工智能国际学术会议(IEITAI 2025)将于2025年9月26-28日在黑龙江哈尔滨盛大召开。旨在为全球学者、工程师及行业专家提供一个高水平交流平台,围绕信息工程、人工智能、大数据、物联网、5G/6G通信等前沿领域展开研讨,分享最新研究成果与技术…...

Dockerfile:如何用CMD同时启动两个进程

场景 在一个Dockerfile中,如何编写CMD指令,使得可以同时启动两个进程? 方案 这两个进程假设分别为Springboot Jar工程、sh脚本:app.jar script.sh需要明确一点:CMD指令本身只能直接执行一个命令 所以我们只能通过间接方式来做到启动多个进程:使用启动脚本start.sh,在其中…...