自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ lambda表达式+变参模板+完美转发的结合使用

垃圾CSDN写个文章上下乱蹿。还是用知乎吧。点我

2022-05-16 19:06:50 342

原创 c++高性能编程(SIMD矢量化)

HW03作业地址个人作业主页作业描述加速程序思路对step()加速。首先改写成SOA结构,并用std::array替换std::vectorconstexpr size_t N = 48using ArrF = std::array<float, N>;struct Star { ArrF px, py, pz; ArrF vx, vy, vz; ArrF mass;};Star stars;提取运算中不变量,提前计算出结果。除法用乘法代替

2022-01-27 13:41:20 1682

原创 c++高性能编程hw03(模板)

HW02作业地址个人作业主页作业描述见main.cpp思路ppt中很多东西都有,注意使用std::variant时候多结合std::visit和lambda表达式来使用。#include <iostream>#include <vector>#include <variant>// 请修复这个函数的定义:10 分template <class T>std::ostream &operator<<(std::ostr

2022-01-25 11:51:41 507

原创 C++高性能编程hw02(RAII)

HW01作业地址作业描述修改 main.cpp,改良其中的双链表类 List:避免函数参数不必要的拷贝 5 分修复智能指针造成的问题 10 分改用 unique_ptr 10 分实现拷贝构造函数为深拷贝 15 分说明为什么可以删除拷贝赋值函数 5 分改进 Node 的构造函数 5 分并通过 main() 函数中的基本测试。如果你把 List 改成了基于迭代器的,或是作为模板 List: 只要是在 满足作业要求的基础 上,这是件好事! 老师会酌情加分,视为“独特的创新点”,但最多不超过

2022-01-23 18:10:01 690

原创 C++高性能编程hw01(CMAKE)

HW01作业地址作业描述在 main.cpp 中为了导出两个"美好的图像",使用了 stb_image_write.h 这个头文件。 他在 CMakeLists.txt 中也引用了 stbiw 这个库,然而这个库还没有被定义。你的任务就是 定义 stbiw 这个库,他的内容应该包含 stbi_write_png() 的实现, 以及允许通过尖括号导入头文件 <stb_image_write.h>。运用上课所学知识,尽量不修改 main.cpp 的内容,只修改 stbiw 子目录下的内容,

2022-01-22 17:16:22 553

原创 牛丼饭做法

牛丼饭做法很简单,味道也不错,推荐。材料(两人量)肥牛卷(厚切的,不要合成的)。酱汁:一点黑/白胡椒粉,半勺多盐,一勺半生抽,半勺老抽,两勺料酒,一勺糖,一勺淀粉,一小碗水。白洋葱一个做法肥牛焯水,撇掉浮末,捞出备用。加入油,洋葱,翻炒一会加入肥牛,炒均匀后后加入酱汁。收汁到粘稠。...

2021-10-06 14:43:35 85

原创 魔兽世界一 : 备战

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define WARRIOR_NUM 5/* dragon 、ninja、iceman、lion、wolf*/class CHeadquarter;class CWarrior { private: int ID; // 英雄编号 int

2021-01-28 21:40:42 117

原创 单调队列优化多重背包问题

/* 朴素更新 for (int i = 0; i < n; i++) { cin >> v >> w >> s; for (int j = 0; j <= m; j++) for (int k = 0; k < s && k * v <= j; k++) f[j] = max(f[j], f[j-k*v] + k * w);

2021-01-15 16:55:35 142

原创 POJ3691 DNA repair (AC自动机+DP)

类似于之前发的indeed tokyo设计密码那个题。只不过这个的模式串有多个,所以需要AC自动机。dp的过程都类似。这里要求的是改变的最小代价,其实和设计一样从0开始考虑,只不过当要加入的字母和母串不一样的时候代价➕1这里定义f[i][j]f[i][j]f[i][j] 为到母串第i个位置位置,处在安全节点j的最小改变数则f[i+1][p]=min0<k<4(f[i][j]+t) p∈tr[j][k]f[i+1][p] = min_{0<k<4}(f[i][j]

2020-07-27 20:49:20 138

原创 AcWing1052设计密码(IndeedTokyo2019校招笔试题)(kmp+dp)

题目链接题目描述你现在需要设计一个密码 S,S 需要满足:S 的长度是 NS 只包含小写英文字母S 不包含子串 T例如:abc 和 abcde 是 abcde 的子串,abd 不是 abcde 的子串。请问共有多少种不同的密码满足要求?由于答案会非常大,请输出答案模 109+7 的余数。f[i][j]f[i][j]f[i][j]定义到第i位密码位置与子串T匹配长度为j时的密码数目。要求的答案为∑j=0m−1f[N][j]\sum_{j=0}^{m-1}f[N][j]j=0∑m−1

2020-07-27 14:55:25 301

原创 洛谷博客地址

新开的洛谷博客

2020-06-26 08:58:20 587

原创 Noip 2018 Day2 T1 P5022 旅行(基环树)

思路根据题目所给的数据范围,可能是O(n2)O(n^2)O(n2)的复杂度,n=m+1n=m+1n=m+1的时候,是一棵树,很明显就是选择子节点中的小的那个点先遍历。n=mn=mn=m的时候,基环树,我们可以发现如果要遍历图中的所有顶点,那么必然有一条边是不会遍历到的,而这条边的选择,就会影响到结果序列中字典序的大小,也就是说你选择一条边不走,一旦到达这条边就跳过,那么在剩下的树中遍历的时候,结果是不同的,我们就暴力的去枚举这条边就好了。注意建图的时候借助到了邻接矩阵,根据邻接矩阵在用前向星建.

2020-05-27 16:11:13 298

原创 [USACO5.3]校园网Network of Schools 强连通tarjan

题目描述一些学校连入一个电脑网络。那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”)。注意即使 BB 在 AA 学校的分发列表中,AA 也不一定在 BB 学校的列表中。你要写一个程序计算,根据协议,为了让网络中所有的学校都用上新软件,必须接受新软件副本的最少学校数目(子任务 A)。更进一步,我们想要确定通过给任意一个学校发送新软件,这个软件就会分发到网络中的所有学校。为了完成这个任务,我们可能必须扩展接收学校列表,使其加入新成员。计算最少需要增加几个扩展,使得不论我们给哪个学

2020-05-24 08:32:08 238

原创 luogu P3387强连通缩点模板(tarjan+拓扑排序+DP)

题目描述给定一个 nn 个点 mm 条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大。你只需要求出这个权值和。允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次。思路强连通模板题...

2020-05-23 10:04:14 202

原创 [USACO2.3]奶牛家谱 Cow Pedigrees

[USACO2.3]奶牛家谱 Cow Pedigrees题目题目链接(luogu)思路dp,开始随便写了个dfs结果得了33分。看标签发现是dp,然后发现dp确实可行。dp[i][k]代表节点数目为i深度为k的结构数,转移方程如下:dp[i][k]代表节点数目为i深度为k的结构数,转移方程如下:dp[i][k]代表节点数目为i深度为k的结构数,转移方程如下:dp[i][k]=∑m=1k−1∑j=1i−2f∗dp[j][k−1]∗dp[i−1−j][m]dp[i][k] =\sum_{m=1}^

2020-05-16 23:24:23 290

原创 牛科普及组16D杀树(树形DP)

题目思路树形DP先注意到数据范围可知二维dp可行。定义dp[v][j]dp[v][j]dp[v][j]为使得以vvv为端点的所有链长不超过jjj并且树上的任意链长不超过l的最小代价。特别的,dp[v][0]dp[v][0]dp[v][0]代表删除节点vvv。状态转移:1)删除节点vvv:dp[v][0]=∑ dp[u][j]  ∀ u∈Son...

2020-05-03 16:42:20 322

原创 牛客NowCoder OI周赛普及组14题解

牛客NowCoder OI周赛普及组14题解A. String题目开一个数组直接统计。#include <iostream>#include <cstring>using namespace std;int a[300];string s;int main() { cin >> s ; int cnt = 0; for...

2020-04-26 23:03:47 188

原创 牛客NowCoder OI周赛普及组15题解

牛客NowCoder OI周赛普及组15题解A咪咪游戏A题略B.三角形题目:思路两种思路,堆和背包dp。堆先看堆的,维护一个含有K个元素的最大堆,逐个遍历每个箱子的宝物,每次只维护价值之和是前K小的,因为比这些元素大的必定不会出现在之后的结果里。具体就是,先把堆中元素全部弹出,存入一个数组中,然后依次从大到小令其中的元素同当前宝箱中的宝物的价值相加,将重新得到元素加入堆中。#i...

2020-04-26 22:36:03 200

原创 电话聊天狂人(C++STL)

这个题就小题小做把,直接map vector走起。如果把电话号码当作string读入,有超时的危险。如果用长整型会稍微快一点。#include <iostream>#include <map>#include <vector>using namespace std;typedef long long ll;map<ll, int> m...

2020-04-16 21:32:47 335

原创 Poj3579Median二分查找第K大

题目链接题目给定一组数XiX_iXi​,我们可以得到C(n,2)C(n,2)C(n,2)个差值∣Xi−Xj∣(i<j)|X_i-X_j|(i < j)∣Xi​−Xj​∣(i<j),问求这些差值组成的数列中第kkk个(k=C(n,2)/2)(k=C(n,2)/2)(k=C(n,2)/2)是多少。思路比较常见的二分题目。首先对输入的数据从小到大排序,然后在[0,X[n−1]...

2020-04-16 17:42:09 165

原创 PAT sort with swap(0, *) (索引排序)

PAT sort with swap(0, *) (索引排序)稍微有点难度的一道题,开始写一个给超时了,直接把for循环套在了while里,硬生生的把复杂度从O(mN)拉到了O(N^2)为了解决这道题,首先需要知道一些知识:N个数字的排列由若干个独立的环构成。这句话什么意思?比如对于一个从(0,N−1)(0,N-1)(0,N−1)的排列,表示成数组的形式,记为A[N]A[N]A[N],令...

2020-04-14 17:47:09 140

原创 USACO training chapter1 入门/section1.6

USACO training chapter1 入门/section1.6Number Triangles(DP)Prime Palindromes(埃筛)SuperPrime Rib(dfs)第一章终于完结了,撒花。Number Triangles(DP)经典的数字三角形,一般用来入门动态规划。把三角形存储在矩阵里,每行下标从0开始存。dp[i][j]dp[i][j]dp[i][j] ...

2020-04-14 10:32:21 244

原创 PAT Judge

PAT Judge这个题没什么算法。。直接用sort就好了。多关键字排序。思路看代码/*注意点: 1.score高低排序。 2.solved高低排序 3.id高低排序 4.输出时候,没有提交的问题输出-1,提交但是没编译通过的输出0; 5.不应该输出没有提交或者没有编译通过的人。 */ #include <iostream>#include <cst...

2020-04-14 10:14:02 406

原创 TopK问题

TopK问题水一下今天看完了排序,想到了之前写过的一道题,输出前K大元素。先吧比较常用的一种基于快排的算法的复杂复分析快排的平均复杂度分析。T(N)=T(N/2)+m∗N\quad T(N) = T(N/2) + m*NT(N)=T(N/2)+m∗N   =T(N/4)+m∗N+m∗N/2\qquad \quad \ \ \ = T(N/4) +m*N+m...

2020-04-13 11:19:27 253

原创 CF149D Coloring brackets(区间dp)

CF149D Coloring brackets(区间dp)题目链接CF149D括号染色问题,经典区间dp。题目大意就是给你一串正确的括号序列(每个括号都有与他唯一的匹配),问按照如下的规则进行染色:1)每个括号要么被染成红色、蓝色,或者不染色。2)对于每一对相互匹配的括号只能对其中的一个括号。3)相邻的两个括号不能被染成相同的颜色(但是可以都不染色)。问你有多少种染色方案,注...

2020-04-12 08:17:12 309

原创 PAT Insertion or Heap Sort

Insertion or Heap Sort题目给定一段初始序列和一段已经排序部分的序列,判断是插入排序还是堆排序。思路和Insert or Merge差不多,但是判断堆排序更简单。众所周知堆排序的顺序从大从小进行的,即已经排好序的部分位于数组的后面,未排好序的部分位于数组的前面部分,并且第一个位置就是堆顶,如果是大根堆的话,就是元素最大的位置。我们的任务是需要找到已经排好部分和未排好部分...

2020-04-11 19:16:21 112

原创 PAT Insert or Merge

PAT Insert or Merge给你一段初始序列,以及已经排序了一部分的序列,需要判断是采取的插入排序还是归并排序,并输出下一次迭代后的序列。如果是考试的话,我肯定会直接模拟,把整个排序的过程写出来,然后每次排序一部分后对比,看看是否和题目所给的序列符合。当然我一次就直接这么写的,然后基本上什么都不用考虑就过了。因为数据范围很小,所以也不会超时。但是这道题的目的肯定不是让你这么写。思路...

2020-04-11 18:06:27 134

原创 归并排序的非递归版本

归并排序的非递归版本相信递归版本的大家都会写,那么非递归版本的呢,众所周知,过多的递归调用会影响代码运行的效率,还会有爆栈的危险,那么写成非递归版本就万事大吉了。我们把递归版本的理解了,就可以容易的写出非递归版本,首先就是从长度为1的有序序列开始,每次合并相邻的两端长度为L的序列,合并完后,长度加倍,继续合并,知道整个序列有序。展示成归并树的形式如下。空间开销只需要O(N)就可以了,和递...

2020-04-10 19:30:06 190

原创 POJ部分状压dp的题目(更新进度3/5)

状压dp刷题记录挑战后面四道状压dp。Poj2441–Arange the BullsPoj2441题目链接在上面了。根据题目的数据范围,很显然就可以状态压缩,最多只有20的Barns,但是需要注意不能直接开 N * (1<<M)大小的dp数组,会爆。需要对空间优化,用滚动数组,从后往前递推。因为使用了滚动数组,所以不能记忆化搜索。#include <iostrea...

2020-04-09 16:30:45 149

原创 USACO training chapter1 入门/section1.5

USACO training chapter1 入门/section1.5Arithmetic ProgressionsMother's Milk简单的搜索入门,只有两题,都可以用深搜来做,第二题可广搜,但是代码很烦,用dfs简单点。Arithmetic Progressions先枚举公差,然后枚举起点。貌似可以证明公差只需要+4的枚举。注意枚举范围,否则会很慢。#include &l...

2020-04-08 23:08:31 149

原创 USACO training chapter1 入门/section1.4

USACO training chapter1 入门/section1.4A.Mixing MilkB.Barn RepairC.Prime CryptarithmD.Combination LockE.WormholesF. Ski Course Design花了好几天才把这个section写完,一直在肝浙大的数据结构,最短路给我写吐了,虽然不难,码量好大,抽空弄个专题。接下来写几道状压dp,...

2020-04-07 22:32:18 283

原创 POJ2886 Who Gets the Most Candies?(树状数组+二分+素数)

POJ2886 Who Gets the Most Candies?(树状数组+二分+素数)类似于约瑟夫环的一道题目。关键在于如何快速的求出下一个即将出队的孩子的编号。普通的约瑟夫环问题可以去模拟,但是数据量大不行。所以需要直接求出。下一个即将出队的孩子为+A时,其在剩余孩子中的位置如下: kk=(k+next[pos]−2)%mod+mod+1 \ kk = (k + next...

2020-04-03 20:02:32 164

原创 USACO training chapter1 入门/section1.3

@[TOC](USACO training chapter1 入门/section1.2) (complete search)第二部分还是暴力为主。1.Milking Cows不是很难,对区间的左端点排序,然后遍历一遍。可能会有只有一个工人的情况,记得处理。/*ID: b1703011TASK: milk2LANG: C++ */#include...

2020-04-01 22:16:06 207

原创 高级数据结构——树状数组

数据结构——树状数组一维树状数组二维树状数组改进:区间更新-单点求值(一维差分)改进:区间更新-单点求值(二维差分)一维树状数组在一维树状数组中,我们维护了一个前缀和。 例如对于bit[i],我们维护了从A[i-lowbit(i)+1]到A[i]的前缀和。那么要求到A[i]的前缀和,只要不断的让i减 lowbit(i),通过求出不同区间的前缀和就能求出从0开始到i的和。加上一个...

2020-04-01 12:10:03 208 1

原创 BFS和DFS的一般讲解以及一般模版

PTA 图(上)列出连通集基本上是模版题,就是用BFS和DFS去遍历图。BFS和DFS都是图和搜索问题中很基础的算法,也是基本上所有算法的基础,包括A*,IDA*,迭代加深,双向广搜等。所以对于基础一定要多加重视。DFS主要通过递归实现。一般模版如下。这里用的是费用矩阵。void dfs(int v) { vis[v] = 1; path.push_back(v); ...

2020-03-30 21:13:40 235

原创 USACO training chapter1 入门/section1.2

USACO training chapter1 入门/section1.2A. Your Ride Is HereB. Greedy Gift GiversC.Friday the ThirteenthD.Broken Necklace菜鸡作为提高的第一步,开始刷USACO的题库了,第一章还是水题比较多,但是写模拟也是很重要的能力,希望接下来几个月可以刷通。A. Your Ride Is He...

2020-03-30 13:11:44 303

空空如也

空空如也

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

TA关注的人

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