c++11:using的使用

1.当子类想使用父类的非virtual函数时,可以使用using,例如class father{ void func();}class chilren public : father{ using father::func;}
分类: 其他 发布时间: 03-07 08:34 阅读次数: 0

c++11:std::bind

事情是这样的,有两个类,A类中的成员函数要作为B类的回调函数。查阅资料发现,c++11之前类的非静态成员函数,是不能作为回调函数的,编译器会报错。这是因为类的成员函数有一个隐藏的this指针,而回调函数的函数指针的参数是事先确定的,所以只要之前大部分是使用普通函数或静态函数作为回调指针的。c++11后 std::bind可以解决这个问题。例如:class A{public: bool make_callback(int a, std::string& s);//类的非静态成员函数}
分类: 其他 发布时间: 03-07 08:34 阅读次数: 0

c++11:unordered_map和pair合用的坑

事情是这样的,今天在编译的时候报错,很长,报错的地方是std::ordered_map的insert操作,但换成stdmap就没问题,大概是跟std::unordered_map和std::pair有关,我截取几段,error: no matching function for call to ‘std::pair<key, std::_List_iterator<long long int> >::pair(const key&, std::_List_ite
分类: 其他 发布时间: 03-07 08:34 阅读次数: 0

c++ undefined reference to 构造函数

事情是这样的:写了一个普通的类,基本的实现都在头文件中,// data.hppclass data{public: data(); virtual ~data(){}public: int func1() { retunr 1+1; }}我在另外一个类中new 这个data类,但是报错了 “ undefined reference to “data::data()”意思就是无法调用你的构造函数。开始一头雾水,后来才发现,因为我没有创建源文件并且没有在
分类: 其他 发布时间: 03-07 08:33 阅读次数: 0

Conan了解一些

[requires] Poco/1.9.0@pocoproject/stable [generators] cmake
分类: 其他 发布时间: 03-07 08:33 阅读次数: 0

小算法

引入color the ball这是我们都做过的例题color the ball,就是一个简单的差分数组。但是如果我们把n拓展到1e19,最后的询问改成查询第i个气球。朴素的差分数组就显得力不从心了,因为根本就打不出1e19的数组。我们需要离散化来节约空间。定义离散化:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。我们有时候开了一个1e7甚至1e8的数组来维护数据结构,但是实际用到的点只有1e4或者1e5,中间的很多空间就浪费了。就像上面这张图,我们只需要维护和五个点
分类: 其他 发布时间: 03-07 08:32 阅读次数: 0

字符串基础算法

manacherfor(int i=1;i<=2*len;i++){ if(mx>i)p[i]=min(p[2*id-i],mx-i); else p[i]=0; while(s[i+p[i]+1]==s[i-p[i]-1])++p[i]; if(id+p[i]>mx) { mx=id+p[i]; id=i; }}
分类: 其他 发布时间: 03-07 08:32 阅读次数: 0

二分图与网络流

一、二分图匹配(匈牙利算法)匈牙利算法的本质是在二分图里面搜索增广路,因为每条增广路取反可以使最大匹配+1。可以证明:如果在某一时刻,找不到以x为起点的增广路,则增广几轮之后仍不会找到。所以只需要遍历一次左部的点,对于每个点寻找一次增广路即可。需要注意的是vis[i]的功能,因为增广路为u−>to−>u′−>to′...u->to->u'->to'...u−>to−>u′−>to′...因为我们知道增广路没有环,所以需要标记vis[to]vis[
分类: 其他 发布时间: 03-07 08:31 阅读次数: 0

树和树上算法

一、建树及树的遍历vector<int>v[100005];ll dep[10000],fa[10000];int dfs(int x,int pre){ for(int i=0;i<v[x].size();i++) { if(v[x][i]==pre)continue; dfs(v[x][i],x); }}int main(){ int n,m; scanf("%d",&n); for
分类: 其他 发布时间: 03-07 08:31 阅读次数: 0

强化学习&动态规划2 | 策略完善 Policy Improvement

接下来问题就是如何找到更好的策略了,找到更好的策略以后,然后带入该策略,再次进行迭代策略评估,这个过程不断循环得到最优策略。具体过程如下策略评估获得了一个策略并产生值函数,然后我们使用该值函数和策略完善的方法,获得一个潜在完善的新策略,然后带入新策略再次进行策略评估,然后进行策略完善,不断重复,直到收敛于最优策略。那么我们知道值函数以后如何求得更好地策略呢?第一步,将状态值函数转化为动作值函数第二步,选取最大动作值函数的动作算法伪代码如下图表示...
分类: 其他 发布时间: 03-07 08:31 阅读次数: 0

强化学习&动态规划3 | 策略迭代 Policy Iteration

将迭代策略评估和策略优化结合起来,就得到了策略迭代算法算法的伪代码如下,从对等概率随机策略开始,对于每个状态选择动作的概率是一样的。然后进行迭代策略评估获得相应的值函数和策略完善获得更好或者对等的的策略,直至收敛。当然在策略评估这一过程中,我们可以不用θ作为我们的终止条件,而是设定迭代次数,这个算法称为截断策略迭代因为我们其实不用获得极其接近结果的值函数才获得最优策略,如果状态动作对之间的相对值正确,改策略实际上是相同的最优策略...
分类: 其他 发布时间: 03-07 08:31 阅读次数: 0

rdkit&python | 通过isomericSmiles消除smiles中的立体结构信息

from rdkit import Chemsmi = 'CCC/C=C/CC' m = Chem.MolFromSmiles(smi)Chem.MolToSmiles(m, isomericSmiles=False)‘CCC=CCCC’smi = 'CCCC[C@@H](I)C' m = Chem.MolFromSmiles(smi)Chem.MolToSmiles(m, isomericSmiles=False)‘CCCCC(C)I’
分类: 其他 发布时间: 03-07 08:30 阅读次数: 0

python | 判断集合是否在另一个集合中

a = {1,2,3,4}b = {2,3}b <= aTrueb = {2,3,5}b <= aFalse
分类: 其他 发布时间: 03-07 08:30 阅读次数: 0

AI&模型融合 | 基于牛顿冷却的概率融合

模型融合trick针对F1的权重衰减f1_0, f1_1, f1_2, f1_3, f1_4 = 0.703,0.696,0.715,0.723,0.677f1 = [f1_0, f1_1, f1_2, f1_3, f1_4]f1 = sorted(f1,reverse = True)import mathlamb = 1/4 #超参数 1/3, 1/5def weight_f1(x): """ 牛顿冷却定律 """ return math.exp(-lamb
分类: 其他 发布时间: 03-07 08:30 阅读次数: 0

rdkit&nlp | smiles数据扩增与smiles标准化

from rdkit import Chemfrom rdkit.Chem.Draw import IPythonConsolesmi = 'CC(=O)OC1=CC=CC=C1C(=O)O'mol = Chem.MolFromSmiles(smi)用doRandom产生随机smilesrandom_equivalent_smiles = Chem.MolToSmiles(Chem.MolFromSmiles(smi),doRandom=True)random_equivalent_smil
分类: 其他 发布时间: 03-07 08:30 阅读次数: 0

python&CUDA | 使用numba对三维矩阵在gpu上进行运算

import cv2import numpy as npfrom numba import cudaimport timeimport mathdef process_cpu(img, dst): rows, cols, channels = img.shape for i in range(rows): for j in range(cols): for c in range(channels): colo
分类: 其他 发布时间: 03-07 08:29 阅读次数: 0

VS2019&CUDA | VS2019编程CUDA环境配置

1.打开vs2019,(我们可以观察到,在VS2017模板一栏下方出现了“NVIDIA/CUDA 10.2”。)创建一个空win32程序,即cuda_test项目。2.选择cuda_test,点击右键–>生成依赖项–>生成自定义,选择CUDA10.2。3.右键源文件文件夹->添加->新建项->选择CUDA C/C++File,取名cuda_main。4.点击cuda_main.cu的属性,在配置属性–>常规–>项类型–>选择“CUDA C/C++”。5
分类: 其他 发布时间: 03-07 08:29 阅读次数: 0

rdkit&python | 清洗化学反应脚本

from rdkit import Chemdef canonicalizatonsmi(smi): newsmi = Chem.MolToSmiles(Chem.MolFromSmiles(smi)) return newsmidef canon_reaction(rxnstring): #print("rxnstring:",rxnstring) r,p =rxnstring.split('>>') rs = r.split('.')
分类: 其他 发布时间: 03-07 08:29 阅读次数: 0

pickle导入文件报错AttributeError: Can‘t get attribute ‘XXX‘ on <module ‘__main__‘ from处理

class CustomUnpickler(pickle.Unpickler): def find_class(self, module, name): try: return super().find_class(__name__, name) except AttributeError: return super().find_class(module, name)pickle_data = CustomUnp
分类: 其他 发布时间: 03-07 08:29 阅读次数: 0

CUDA & C++ | 测试环境安装成功 Hello,CUDA!

#include <iostream>#include <stdio.h>__global__ void myfirstkernel(void) {}int main(void) { myfirstkernel << <1, 1 >> > (); printf("Hello, CUDA!\n"); return 0;}__global__告诉编译器在这个限定符后面的函数定义应该在设备上(gpu)而不是主机上(cpu)上运行
分类: 其他 发布时间: 03-07 08:28 阅读次数: 0