自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 论文笔记——《Multi-Modal Self-Supervised Learning for Recommendation》

作者通过设计多模态推荐场景下的自监督任务来:1)建模模态信息启发的用户交互偏好(即,建立模态内容和协同信号之间的依赖);2)建模各个模态之间关系;它们能够专门针对多模态场景引入自监督信号以一定程度地缓解推荐系统一直以来存在的数据稀疏性问题。模型 MMSSL 在多个公开数据集上取得了优于 SOTA 多模态推荐模型的实验结果

2023-02-28 15:33:50 1504

原创 Breaking Isolation: Multimodal Graph Fusion for Multimedia Recommendation by Edge-wise Modulation

EgoGCN:引入edge-wise的多模态融合机制,在保留模态内部信息传播的基础上,引入了模态之间的信息,同时解耦多模态和ID嵌入传播,使模型更加简洁且优秀。

2023-02-21 11:15:14 371

原创 CSP常用知识点

有unsigned long long 这种类型bitset< n > b

2021-09-12 15:50:48 1078

原创 Emiya家今天的饭

题目来源: Emiya家的饭代码#include <bits/stdc++.h>using namespace std;const int MOD = 998244353;const int N = 1e2 + 10;const int M = 2e3 + 10;typedef long long ll;int a[N][M];int s[N];int n, m;int dp[N][N << 2];//dp[i][j]表示前i种烹饪方法,越界食材-合法食材的差为

2021-09-05 10:04:27 121

原创 常用图算法

图算法SPFA算法SPFA算法  SPFA算法在BellmanFord算法的基础上,通过队列的方式,减少了松弛的次数。队列中存储被成功松弛的点,如果邻接点成功松弛,则将其加入到队列中。  下面为利用SPFA计算最长路的C++代码。struct Edge { int to, w;};vector<Edge>G[maxn];int dis[maxn];bool vis[maxn];void spfa(int s) { for (int i = 1; i <= n; i++

2021-08-11 21:52:51 71

原创 CSP201812-3 CIDR合并

CSP201812-3 CIDR合并题目CSP201812-3 CIDR合并解题思路按照题目给出的提示进行解答考虑合并时,将IP地址转换为长整型的数据判断范围如果使用vector会超时,因为第三部合并时涉及到大量的删除和插入操作,所以使用list。代码#include <bits/stdc++.h>using namespace std;/*列表中包含的IP地址可能存在交集*/pair<long long int, long long int> ans;str

2021-08-03 16:52:04 124

原创 CSP201903-3 损坏的RAID5

CSP201903-3 损坏的RAID5题目CSP201903-3解题思路重点在于如何根据给出的块编号得到所在的磁盘编号以及在该磁盘中的行编号。下面解释几个重要的参数:col_id: 表示以条带为单位的行编号,如题目中给出的样例二的块6,7,其col_id为1min_bid:表示当前行,所有磁盘存储的块的最小编号(注意需要减掉校验块)P_pre_disk_id:记录了当前块的上一行的校验块所在的磁盘的编号,因为当前行最小的块的编号是从上一行的校验块的磁盘的正下方开始编号的disk_id:

2021-08-01 16:34:44 133

原创 STL常见用法

C++常见STL用法stringvectormapsetliststringsubstr(size_t Off,size_t Count)获取字符串从off位置开始长度位count的子串对于字符串str="“David Beckham”", 如果要获取其中的字母串:s.substr(2,str.length()-3);结果为David Beckhamreplace()和find()如果要将某一行的所有"{{ abc }}"替换为str=“123”,可以这样做int pos=s.find(

2021-07-09 15:35:45 92

原创 C++ string输入输出问题

C++ string输入输出问题string不能用scanf赋值,也无法用printf进行输出,只能用cin和cout

2021-07-08 17:53:19 164

原创 并查集和Kruskal算法

并查集和Krusal算法并查集并查集是若干个不相交的集合,通常用于较快地合并和判断元素所在集合的操作。可应用与求无向图连通分量的个数以及实现Kruskal算法求解最小生成树。并查集通常需要一个根节点数组和一些特定的函数——初始化函数init()、查找根节点函数find()、合并函数unite()。void init(int n){ for(int i=0;i<n;i++) par[i]=i;}int find(int x){ return x==par[x]?x:par[x]=f

2021-04-07 23:13:44 281

原创 CSP201403-4 无线网络

CSP201403-4 无线网络题目链接:CSP201403-4解题思路  首先考虑这m个位置都可以放路由器,没有k的限制。如果两个路由器的距离不超过r就可以建立连接,则该问题就成了一个图中求两点之间的距离的问题,图中所有边的权重为1。从源点开始BFS,第一次碰到终点得到的距离就是两者之间的最短距离。  加上k的限制后,路由器被分为两部分,一部分是前n个没有数量限制的,另一部分是后m个有数量限制的。在BFS的过程中对于遍历的每一个点多记录一下遍历到这个点的时候已经使用了多少个第二部分的路由器,如果已

2021-04-07 20:11:24 156

原创 POJ2823 Sliding Window

POJ 2823 Sliding Window题目要求给定n个数和大小为k的窗口,窗口每次移动一格输出窗口的最大值和最小值。解题思路  利用单调队列的思想。在求窗口的最小值时,构建单调递增的队列,这样的队列的队首总是窗口的最小值。同理,构建单调递减的队列,队列的队首总是窗口的最大值。  和单调栈的区别是,单调队列不仅要维护单调性还要维护队列的大小,在这里就是必须确保队列的大小不能超过窗口的大小。  和单调栈一样,队列中保存的是元素的下标值。#define _CRT_SECURE_NO_WARN

2021-04-07 16:12:43 99

原创 CSP201312-3 最大矩形

CSP201312-3 最大矩形题目要求:   找出给定直方图中面积最大的矩形。解题思路  利用单调栈的思想。对于输入的高度数组,向右和向左两次遍历扫描,对于当前考虑的元素h[i]来说,分别找到向右的第一个小于h[i]的元素的下标和向左的第一个小于h[i]的元素的下标。两者只差就是可以以h[i]作为矩形高的矩形的长。  这里使用数组来模拟栈。当前考虑的元素为栈顶元素。栈内保存的是元素的下标。利用栈顶元素和循环遍历的元素相比较。值的注意的是,为了能够最后将栈中所有元素都弹出,在向右遍历的时候需要比输

2021-04-06 19:41:59 111

原创 区间选数问题

区间选数问题题目要求  数轴上有 n 个闭区间 [a_i, b_i]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。 其实就是公共区间用同一个点,非公共区间单独使用一个点解题思路  我们可以现将输入的区间按照左端点从小到大排序。规定一个变量right是截止到当前考虑的所有区间中公共区间的右侧端点。显然,如果现在考虑的区间是公共区间的子区间,需要更新right的值为当前区间的右端点;如果仅仅只是和公共区间有重叠部分,则不需要更改right的值。如果当前区间和right

2021-04-01 15:43:44 489

原创 POJ 1606 Jugs

POJ1606 Jugs  题目大意:指定两个水杯的容量A,B和规定的目标容量N,要求通过三种操作——要么倒空,要么续满,要么从一个杯子往另一个杯子里面倒水知道一个被倒空或另一个被倒满为止。  这道题是一个隐式图问题。可以利用BFS搜索进行解答。  在普通的BFS求解最短路径的时候,一般会给出一个二维的数组或是直接给出一张二维的图,我们通过取当前点的邻接点的方法进行遍历。而在隐式图中,我们没有明显的图,无法通过取邻接点的方法进行操作,但是我们只要想到,其实对这两个水杯而言,改变水杯初始状态和下一个状态

2021-03-31 20:59:34 135

原创 POJ3984 迷宫问题

POJ3984 迷宫问题 在POJ中,必须使用G++才可以通过编译并且AC,C++会有报错。  这道题其实就是简单的BFS所搜最短路径的问题。值得注意的是这里题目要求不是输出最短要走多少步,而是要输出路径。  为了得到最后的路径,我们需要一个变量记录当前点(x,y)的前驱结点编号,但在为了拓展不同邻接点是能够得到前驱结点的编号,还需要一个变量记录点(x,y)本身的编号。这个编号是根据插入队列的顺序递增的,且起始点的前驱结点编号为-1,起始点本身的编号为0.当我们结束BFS搜索之后,我们可以得到终点自

2021-03-31 16:03:41 123

原创 CSP201604-4 游戏

CSP201604-4 游戏  该题属于BFS广度优先搜索寻找最短路径的变式。在一般情况下,我们设置vis为二维数组,但是这里应该设置为三维数组,第三维表示时刻。vis[r][c][time]表示的意思是位于第r行第c列的点在time时刻是什么状态。如果这个点是可能存在危险的点,则将对应的所有时刻vis的值置为1,其余的全部初始化为0.这样在遍历邻接点的时候我们寻找vis不为1的点就可以。需要注意的是,当vis[r][c][time]不为1的时候不代表之前没有遍历过第r行第c列的点,只是说在当前一轮中没

2021-03-30 17:38:10 110

原创 CSP201404-9 最优配餐

CSP201404-9 最优配餐BFS应用题。只是在普通的BFS的基础上拥有多个起点。可以引入一个超级源点s,s到所有分店的距离为0.在初始化队列的时候,将所有的分店加入到队列中,并标记已读。在这里引用两个数组,dis和vis,vis表示是否经历过,dis为0表示为分店的点,为-2表示不能经过的点,dis[x][y]为正数则表示到点(x,y)的最小距离。然后套用一般的BFS框架不难得到代码。需要注意的是这里的最后结果会造成int溢出,需要改为long long int类型。//成本=距离*用户的需求

2021-03-29 20:32:31 143

原创 CSP 历年第一二题汇总

201912-1//四个人玩报数游戏(跳过7的倍数和含7的数),输出每个人最后在报出n个数游戏结束后跳过多少个数#include<iostream>using namespace std;int n; //n<=666,n是不包过跳过的数的数,因为不知道最后能报到多大的数,所以不采用暴力的方法bool test(int i) { while (i) { if (i % 10 == 7) //个位为7 return true; else i /= 10;

2021-02-04 15:12:55 367 1

原创 CSP 2019-12 解答

CSP 2019-122019-12-1//四个人玩报数游戏(跳过7的倍数和含7的数),输出每个人最后在报出n个数游戏结束后跳过多少个数#include<iostream>using namespace std;int n; //n<=666,n是不包过跳过的数的数,因为不知道最后能报到多大的数,所以不采用暴力的方法bool test(int i) { while (i) { if (i % 10 == 7) //个位为7 return true; else

2021-01-30 19:19:10 162

原创 CSP 2020-09解答

CSP 2020-092020-09-1 称监测点查询#include<iostream>#include<math.h>#include<algorithm>using namespace std;//n,X,Y表示检测点数和市民所在位置int n, x, y;int checkx[202]; //保存检测点的位置int checky[202];struct distant { int dis; //距离 int order; //序号}dis

2021-01-30 16:01:38 170

原创 CSP 2020-06解答

CSP 2020解答2020-062020-06-10分不知道为啥2020-06-2要求:用(index,value)表示稀疏向量中的值,index从1开始对两个用稀疏表表示的两个向量u,v,求其内积思路:对u,v两个向量的稀疏表示,对index值相同的value进行积求和这里暴力求解容易出现超时的情况。可以根据两个向量的index是有序的来简化。测试时出现得分60分,仔细阅读要求发现|value|<10^6,在相乘过程中可能出现溢出的情况。所以需要更改求和sum为long lo

2021-01-29 18:31:07 132

原创 POJ 2366 Sacrament of the sum

POJ 2366 Sacrament of the sum链接:POJ 2366算法实现:已知两个给定的序列,一个升序排列,一个降序排列,在这两个序列中各找一个数,它们加起来恰好等于 10000。方法一:暴力搜索法。for (int i = 0; i < m; i++) { if (UP_array[i] + DOWN_array[0] < 10000) continue; //对升序序列,如果当前的值与降序的最小相加都小于10000,之后的可以不用考虑了 if (

2020-10-23 15:17:51 487

空空如也

空空如也

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

TA关注的人

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