自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 多智能体强化学习Efficient Communication in Multi-Agent Reinforcement Learning via Variance Based Control

多代理强化学习 (MARL) 最近受到广泛关注,因为它适用于广泛的实际应用。然而,实现代理之间的有效通信一直是 MARL 中的首要问题。在这项工作中,我们提出了基于方差的控制(VBC),这是一种简单而有效的技术,可以提高 MARL 中的通信效率。通过在训练阶段限制代理之间交换的消息的方差,可以有效地消除消息中的噪声成分,同时可以保留有用的部分并供代理使用以获得更好的性能。

2023-05-17 10:18:54 519

原创 多智能体强化学习TOM2C: TARGET-ORIENTED MULTI-AGENT COMMUNICATION AND COOPERATION WITH THEORY OF MIND

能够预测他人的心理状态是有效社交的关键因素。这对于分布式多代理系统也很重要,在这种系统中,代理需要进行通信和合作。在本文中,我们介绍了一种重要的社会认知技能,即心理理论 (ToM),以构建能够有效沟通和合作以完成具有挑战性任务的社会智能代理。使用 ToM,每个代理都能够根据其(本地)观察来推断他人的心理状态和意图。根据推断的状态,代理人决定“何时”以及与“谁”分享他们的意图。通过观察、推断和接收的信息,智能体决定他们的子目标并在团队中达成共识。最后,低级执行者独立采取原始行动来完成子目标。

2023-05-16 12:28:37 405

原创 cmd命令行进行C++代码编译运行;实现进程调度和存储管理

       最近刚考完一门,也算是有点闲暇时间,写个博客,就当做操作系统实验的笔记吧。       客官先别急着白嫖点个赞再看吧求求了文章目录一、在cmd命令行下编译运行C++源代码1.进入目标目录2.编译3.运行二、进程调度程序设计1.流程图三、存储管理程序设计1.流程图2.上代码3.样例1.页表输入2.指令输入一、在cmd命令行下编译运行C++源代码1

2020-12-10 21:48:46 1753 1

原创 PATB 1026 程序运行时间

题记这道题主要牵扯到四舍五入的问题,如果我们想要对(c2-c1)/100的结果四舍五入,那么首先要让(c2-c1)/100的结果是一个浮点类型然后再加0.5最后强制类型转换为int,如果c2,c1都是整数类型的那么结果自然就是做商之后小数点前面的数字,也就是一个整数类型,所以这里我们可以把c1,c2定义为浮点类型,或者再定义一个中间变量,把100修改成100.0这样结果会自动向上转换类型。#include <iostream>using namespace std;int ma.

2020-10-26 21:42:08 122

原创 PATB 1016 部分A+B

题记注意题目中的A,B比较大如果用int会爆,所以这道题可以用long long来做,不断取余判断然后做商。当然也可以用字符串遍历一遍就行了。当然如果想省事,直接用algorithm头文件中的count(first,end,value)函数查出来指定的字符出现的次数也是非常方便的。#include <iostream>using namespace std;typedef long long ll;int calculate(ll a,ll d){ ll sum=0;.

2020-10-26 21:15:22 93

原创 PATB 1011 A+B 和 C

#include <iostream>using namespace std;int T;int main(){ cin>>T; long long a,b,c; for(int i=1;i<=T;i++){ cin>>a>>b>>c; if(a+b>c) cout<<"Case #"<<i<<": tru.

2020-10-26 20:56:20 63

原创 PATB1032 挖掘机技术哪家强 (20分)

题记需要注意学校的编号是从1开始的#include <iostream>using namespace std;const int Maxn=1e5+10;int school[Maxn];int N;int main(){ cin>>N; int index,goal,maxIndex=0; int ansSum=0,ansIndex; for(int i=0;i<N;i++){ cin>&gt.

2020-10-26 20:44:54 176 2

原创 HTML表单

点击 1

2020-10-23 16:22:11 95

原创 HTML列表

List 用于例举实例,常用的列表有三种格式:有序列表(ordered list)无序列表(unordered list)定义列表(definition list)一、无序列表无序列表用ul来定义,li定义单个列表项单个列表项li或者无序列表标签有type属性,默认情况下是实心圆,常用的有:1.disc:实心圆 2.circle:空心圆 3.square:实心方块列表标签和列表项之间可以嵌套实例代码如下<!DOCTYPE html><html lang="en"&g

2020-10-23 09:50:08 501

原创 第十一届蓝桥杯大赛第二次模拟(软件类)真题

1.【问题描述】在计算机存储中,12.5MB是多少字节?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。2.【问题描述】一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边)【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。3.【问题描述】将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AA

2020-10-15 19:28:23 373

原创 蓝桥杯第十一届校内模拟

1.【问题描述】在计算机存储中,15.125GB是多少MB?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。2.【问题描述】1200000有多少个约数(只计算正约数)。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。3.【问题描述】一棵包含有2019个结点的二叉树,最多包含多少个叶结点?【答案提交】这是一道结果填空的题,你只

2020-10-15 19:21:09 96

原创 PREV-49 发现环 并查集大法好

题记主要考察并查集。如果直接dfs然后用vector保存路径,100000的数据量有点可怕。首先对于每一个链子,看两端的端点的根结点是否一样,如果一样,他们之间还又增添了新的通路,他们之间的通路就不唯一了(一条是直接相连,其他的是通过共同的根结点)那么就必然有环的存在。找到了出现环的位置,我们就得到了两个结点,大家可以dfs也可以像我下面写的那样,先保存一下其中一个结点直到根结点的路径,然后用同样的方法走一遍另一个结点通往根结点的路径,走的过程中发现的第一个存在于以求得的那条路径中的结点就是环的终点。再.

2020-10-12 16:13:24 114

原创 蓝桥杯 PREV-50

题记先分析题干,显然如果分数不在一个等差数列上的分数是互不影响的,比如K=2,那么分数1,3,5,7,9和2,4,6,8是互不影响的,因为这两组任意两个都没法匹配,所以我们大致的思路就是按照给的K先划分一个组,考虑每个组的最大人数,然后再相加。在每一个组内怎么求最多有多少个人不匹配呢,如果一下子全部都考虑规模太大了,我们试着缩小规模,最后一个人比较有代表性,那么算上他所在的分数之后怎么算呢。仔细揣摩也就两种情况,加上他的这个分数或者不加他的这个分数,这就有点动态规划的内味儿了。我们在考虑一下组内的特点.

2020-10-11 20:52:29 69

原创 蓝桥杯 PREV-51观光铁路

题记很迷惑的一道题,说的期望时间也不知道到底咋求的,从例题可以大致判断出来是每个结点的总度(这个图是个无向图)除以该结点的度,除以该结点的度这一点可以理解,但是为啥要用总度作为被除数,解释不来。最后得了65分,我看了各位大佬的博客,应该是官网的例子中有些精确度有问题,所以也别纠结了,快点做下一道题吧。#include <iostream>using namespace std;int degree[50];int main(){ int n,m; int .

2020-10-11 19:11:49 251

原创 蓝桥杯 试题 历届试题 小数第n位

题记这道题涉及到带余除法:要求a/b后面的小数,首先a对b求余,余数乘10再除b保留新的余数,除数就是第一个小数,新的余数乘10再除b得到第二位小数…这道题这样做可以拿到部分分数,但是如果n特别大的话,n一个一个减小会特别慢,运行会超时,所以先一次减10快速逼近小数点后第n位。#include <iostream>using namespace std;typedef long long ll;int main(){ ll a,b,n; cin>&.

2020-10-08 21:50:13 74

原创 蓝桥杯 试题 历届试题 分考场

题记安排每一位同学之前先看看之前的考场能否让这位同学安排进去,也就是依次遍历这位同学是否跟这个教室里所有同学都不认识。因为不好证明这样做就是正确的,所以保险起见还要考虑为这个同学开辟一个新的考场的情况。注意回溯!!!还有回溯的时候是判断当前计算的考场数是否大于等于已经计算的最小考场数roomMin,如果是直接retun。#include <iostream>using namespace std;const int Maxn=100+5;int relation[Maxn][

2020-10-08 21:09:07 140

原创 蓝桥杯 试题 历届试题 合根植物

题记这道题首先可以暴力搜索,读完之后一个个地dfs,这里就不赘述了。另一个思路就是并查集,其实也挺容易想到的,如果a,b两个植物的根不一样,那么就把b的总根挂在a的总根下面,最后遍历一遍找出来plant[i]==i的就是最后的大根,数出来就是答案了。#include <iostream>using namespace std;const int Maxn=1e6;int plant[Maxn];//寻根int findBase(int x){ while(...

2020-10-06 21:48:11 133

原创 PATB 1004 成绩排名

#include <iostream>using namespace std;int n;struct Student{ string name; string num; int goal;};int main(){ Student highest,lowest; int max=0,min=100; Student tmp; cin>>n; for(int i=0;i<n;i++){ .

2020-09-25 21:45:16 79

原创 PATB1003 我要通过!

题记这道题一开始没发现规律,虽然过了但是写了80行代码,又看了看别人的代码发现有规律可循,a、b、c当中字符’A’的个数分别表示为numa、numb、numc,那么就有numa*numb=numc,这个需要自己推一下。我们一开始很直观地可以发现最基本的情况是xPATx,其中x可以是任意多个字符’A’组成的字符串(当然长度并不能超过题目给的范围),接着看第三条,这其实是一个递推公式,最基本的情况也就是b所包含的字符’A’的个数是一,之后每一次b中A的个数加一,而且我们知道如果b只有一个A的时候第三个条.

2020-09-25 21:27:57 119

原创 PATB1001 害死人不偿命的(3n+1)猜想

题记这道题就是简单的模拟,如果是一个数据输入,那么一个简单的循环就可以实现,但是如果数据量多的话这个算法效率会极其低下那么可以用剪枝的做法。代码如下#include <iostream>using namespace std;int n;int main(){ int count=0;//记步数 cin>>n; while(n!=1){ if(n%2==0) n=n/2; else.

2020-09-24 21:35:08 59

原创 CCF 201812-3 CIDR合并 注释非常详细

ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzQ5MjYy,size_16,color_FFFFFF,t_70#pic_center)题记这题用位运算可以很好的解决,但是注意一个坑:>>运算符的优先级比较低,如果不注意可能算的顺序跟你的思路不一致,所以没有把握就多加括号!!!多加括号!!!注释快能顶过代码行数了,就不赘述了。#include <iostream>#in..

2020-09-01 18:26:43 274

原创 CCF 201903-4 消息传递接口

题记这道题最关键就是要发现每次配对都是发生在每个进程的最开始,还有一点比较绕的是每个进程必须完全执行完一次才能进入下一次任务,但是对方进程不一定马上回应,可以执行完另一个任务再响应,但是总的来说配对还是发生在最开头。比如有三个进程a,b,c。a发一个任务等b回应,b第一个任务是和c进行交互,完成后b第一个就变成了对a的回应。所以每次对各个进程第一个取出来,看看它们之间是否存在可以配对的,如果没有,说明存在死锁或者所有任务都完成了。#include <iostream>#include &.

2020-09-01 13:57:05 140

原创 CCF 201903-3损坏的RAID5 90分(详细注释)

题记这道题依然是考阅读理解(无奈)关键点在于找出来查找的b在哪个硬盘上,并且在这个硬盘的第几块,好好理解一下题意其实公式都是细心推可以推出来的,因为代码里有很多注释,这里就不再赘述了。#include <iostream>#include <string>#include <cstring>#include <iomanip>using namespace std;const string base="0123456789ABCDEF"...

2020-08-31 17:23:13 262

原创 CCF 201912-4 区块链

博主在2020年8月30日写的,运行什么的都没有错,但是到官网一直编译出错,没有用非标准的头文件,之后我去找了各位大佬的源码,不知道为啥也是编译出错,可能今天官网服务器有点问题吧,之后再试试看看是什么情况题记一开始输入的时候总是运行到一半自己退出来,最后发现是ios::sync_with_stdio(false);其实本来没什么问题,但是我用了getchar()读取换行符,这两个一块用就容易出问题,所以尽量还是用cin.get()度换行符比较稳妥。因为代码内部注释很详细,所以别的就不再赘述了#i..

2020-08-30 17:13:05 179

原创 CCF 202006-4 1246(digits)

题记这道题的关键点在于能看出来长度为1和2的字符串的组合是一定的,一共14种,自己可以推一下,有些是不存在的#include <iostream>#include <map>#include <string>using namespace std;typedef long long LL;const int Maxn=5e5+10;//int数组一般开到5e5const int mod=998244353;LL dp[Maxn][15]={0}...

2020-08-28 16:08:57 937 2

原创 CCF201909-3 字符画

#include <iostream>#include <sstream>#include <string>#include <iomanip>using namespace std;int m,n;int p,q;unsigned char point[1100][1950][3];unsigned char calculate(char a,char b){ unsigned char ch=0; if(a&...

2020-08-27 13:22:34 207

原创 CCF 201909-4 推荐系统

#include <iostream>#include <set>#include <vector>using namespace std;struct Good{//商品结构体 int type; int id; int score;};struct Del{//删除的物品 int type; int id;};int m,n;bool operator <(const Good& ...

2020-08-27 13:18:19 140

原创 PATA 1030 Travel Plan

题记这道题我想记录的地方是这道题需要记录最短路径的路线。其他地方跟另一道题思路基本一样,点击查阅PATA 1003 Emergency 思路:1.首先考虑如何记录;假设当前到原点s最短距离的点是u,u再往外走一步的结点记为v,u的最短距离是d[u],c[u]指到u的最优路径的花费,cost[u][v]是u到v的花费,pre[v]记录到结点v的最优路径的前驱结点;如果d[u]+G[u][v]<d[v],那么更新v的前驱结点pre[v]=u;如果d[u]+G[u][v]==d[v]并且c[u].

2020-08-13 14:17:46 108

原创 PATA 1003 Emergency

题记本题在最基础的单源结点最短距离的基础上增加了点权,并且让求出最短距离路线的条数。关键思路(如何求最短路线条数和召集最多的救援人员)假设当前到原点s最短距离的点是u,u再往外走一步的结点记为v,u的最短距离是d[u],它的最短路线数目是num[u],它所在位置(距离最短的前提下)最多能到达的救援人员数目是w[u],v点同样,G[u][v]记录了u到v的距离此时u的相关信息是已经是最优的了1.如果d[u]+G[u][v]<d[v],说明v借助u可以达到更优,那么d[v]=d[u]+G[u]..

2020-08-13 11:17:35 159

原创 PATA 1076 Forwards on Weibo

#include <iostream>#include <queue>#include <vector>#include <cstring>using namespace std;const int Maxn=1010;struct Node{ int layer; int id;};//输入int N,L;vector<Node> Adj[Maxn];//邻接表bool inq[Maxn]={fa..

2020-08-12 11:31:51 111

原创 PATA 1034 Head of a Gang

栽的坑记录一下1.通话记录一共不超过1000,那么最多有多少人呢?2000!!!2.//给一个顶点DFSvoid DFS(int nowMember,int &gangNum,int &head,int &totalTime){ isTraver[nowMember]=true; gangNum++; if(weight[nowMember]>weight[head]) head=nowMember; for(int ..

2020-08-12 11:31:26 132

原创 PATA 1079 Total Sales of Supply Chain

题记思路这道题读懂题就好做多了。大概意思就是每个结点的销售单价都比父结点的单价贵%r,计算最后零售店的销售额。首先建立起一棵树,这棵树不是二叉树,所以需要用vector来保存孩子结点的下标。之后再找到每个叶子结点的高度(用来计算单价)具体步骤1.建立结点的数据结构,读入数据,在读入数据的同时建立起二叉树2.进行先根遍历,根节点的深度是0,往下每次一层深度加一3.根据叶子结点深度计算各自的销售额并且相加易错点1.不要在读入数据的时候简单的认为孩子结点的深度等于当前结点深度加一就急着更新记录..

2020-08-11 14:13:50 114

原创 PATA 1102 Invert a Binary Tree

题记思路:首先得先建立一棵二叉树,但是这道题我怎么想也没想出来用传统的方法(结构体,然后指针),因为最一般的方法建树我们需要知道根节点,需要按照顺序往下建立,但是题目中输入的顺序让我们没法直接做,如果我们先保存这些信息。然后遍历找到根节点再建树好像可以,但是好像没有必要用指针,因为我们的结点只有下标没有值。有没有输入完就建立完呢?仔细思考发现是可以的。1.建立结点结构体,每个结点有3个值,左孩子,右孩子,父亲结点的下标2.输入的时候判断左孩子右孩子在不在,在的话把孩子的结点进行赋值,不存在就是-1.

2020-08-11 11:13:46 69

原创 PATA 1086 Tree Traversals Again

题记思路:1.题目中的push顺序其实就是先序遍历的顺序,pop的时候顺便访问,这样得到的顺序其实就是中序遍历顺序,这两者可以唯一确定一棵二叉树2.对于输入可以一行一行地输入,也可以先输入一个string再输入一个整数,这里我用的是一行一行输入,如果开头是Push那么就把数组前面删掉,然后计算一下数字是多少,压入栈中,顺便把它加到先序遍历数组中;如果是pop就把栈顶元素加到中序遍历数组中并把栈顶元素出栈。3.之后是常规的后序遍历,递归就可以了,注意末尾不要多加一个空格注意:1.题目一定要看清..

2020-08-11 09:59:52 115

原创 PATA 1052 Linked List Sorting

题记思路: 1.建立结点结构体,存储该结点的位置,值,下一个结点的位置,写一个"<"重载,后面优先队列队列就会自动地排序 2.根据头结点遍历一遍这个链表,并把链表中的结点放入利用优先队列当中 3.最后是输出,如果记录的num(链表上有效的结点数目)为0,输出"0 -1",如果不为0,先输出num和队列里的第一个结点的位置,之后循环,先输出队列最前面的结点的位置和值,先别急着输出下一个结点的位置,因为这是一个新的值,而我们并没有改变next,所以先判断一下还有几个结点在队列里,如果还有,就..

2020-08-09 14:01:43 90

原创 codeup1818 最大公约数

最大公约数(辗转相除法证明如下)其实a,b的顺序无所谓,假如a<b,只要再进行一次转换就可以变成a>b的形式#include <iostream>using namespace std;int gcd(int a,int b){ return !b?a:gcd(b,a%b);}int main(){ int m,n; scanf("%d %d",&m,&n); printf("%d\n",gcd(m,n));

2020-08-08 19:34:37 86

原创 PATA 1053 Path of Equal Weight

题记思路:1.这道题是普通的树,建立结点的结构体,用vector来存储孩子结点的下标2.用vector来存储当前得到的路径,递归的前依次把当前结点的孩子加进容器,递归后记得pop_back()。3.进入dfs,参数为index,sum分别指当前结点的下标和当前路径的权值和,如果sum>s直接return;如果sum==s首先判断当前结点是不是叶子,若不是return,若是依次输出路径上各结点的权重;如果sum<s那么进行循环,分别把当前结点的孩子加进path中进行递归,记得递归完p...

2020-08-08 19:34:06 144

原创 PATA 1020 Tree Traversals

题记思路1.创建结点的结构体2.根据中序遍历和后序遍历递归地创建二叉树。假设中序遍历当前的树下标为inL,inR,后序遍历当前的树下标是poL,poR。后序遍历最后一个就是根结点,循环中序遍历找到根结点,记录下标为k,中序遍历左边的是左子树,右边的是右子树,得到左子树结点个数为numLeft=k-inL,于是得到当前的树的左子树中序遍历下标范围为[intL,K-1],后序遍历为[poL,poL+numLeft-1],右子树中序遍历下标范围为[k+1,inR],后序遍历下标范围为[poL+numLef.

2020-08-08 14:12:34 81

原创 PATA 1032 Sharing

题记思路1:采用静态链表的数据结构2:为了方便识别第一个重复的节点,结构体里再设置一个flag,标志是否是第一个链表的节点3:从第一个链表的起点开始遍历,经过的结点都设置为true,再遍历第二个链表遇到的第一个为true的节点就是公共后缀的第一个字符,如果没有为true的,就输出-1易错点:1:使用%05d的格式输出。2:因为%c会把空格也读进去所以在连续输入地址、数据、后继结点地址时不能写成%d%c%d,必须加空格写成%d %c %d的形式代码如下#include <ios..

2020-08-07 13:01:35 121

原创 PATB 1019 数字黑洞

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int num[5];bool cmp(int a,int b){ return a>b;}void to_array(int n){//n转化成数组,不用在意顺序反了 for(int i=0;i<4;i++){ num[i]=n%10; ..

2020-08-05 17:28:47 97

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除