随笔分类 - high school
摘要:#### 题意: 有一个背包,总体积为V,给出一个物品 $i$ 体积为 $v[i]$ 价值为 $v[i]*w[i]$ ,求最大价值 #### 解法: 背包dp ```cpp #include #include using namespace std; int main() { int n,m,w[3
阅读全文
摘要:# dd_engi 的背包九讲 # 背包问题 ### P1-01背包 每种物品仅有一件,每件有 $v[i]$ 的体积,$w[i]$ 的价值,背包容量一共为V,每件物品可以选择放或者不放 求最大可获得的价值 `f[i][v]=max(f[i-1][v],f[i-1][v-c[i]]+w[i]);` $
阅读全文
摘要:#### 题意: 有N个罪犯,将关至2个监狱中。其中,罪犯如果关在同一个监狱,则两两之间存在怨气值c[i]。求第一个怨气值,要求此怨气值最小。 #### 解法: 贪心,先对怨气值从大到小排序,然后将两名罪犯关至不同的监狱。直至存在一对罪犯无法关至不同的监狱(若关至同一监狱,则会和已经关押的罪犯产生怨
阅读全文
摘要:#### Kruskal 按照每条边的权值大小排序,每次加入一条最小的边(保证不会形成环,用并查集维护)直到加入了n-1条边 Kruskal适用于稀疏图 $O(m\ log \ m)$ ```cpp //kruskal bool cmp(Edge x,Edge y){return x.disdis[
阅读全文
摘要:题意:在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通。 在满足条件1的情况下使路径最短。 注意:图 G 中可能存在重边和自环,题目保证终点没有出边。 请你输出符合条件的路径的长度
阅读全文
摘要:题意:在一张无向图上有n个点 m条边,第i个点在t[i]的时间生成。有q次询问,求u,v两点在d时候是否连通,如连通,求其最短路。 解法:Floyd,考察到了Floyd的本质dp。题目给数据的时候因为已经排序,正好对应了它的的第一维,剩下就是套Floyd //INF应该定义成 0x7fff 或 1e
阅读全文
摘要:题意:给出一个迷宫,判断能不能走到距离无限远的地方 分析:本来想复制成3*3的图然后走的,但是空间有点困难。后面改成了2*2的图,不过我开了3*3的图的空间还是过了。 解法:dfs #include<iostream> #include<cstring> #define re register us
阅读全文
摘要:题意:给出一张无向图,有q次询问,每次给出u v两个点,求u到v时经过的权值最小的边 解法:kruskal最小生成树+LCA #include<iostream> #include<algorithm> #define re register using namespace std; const i
阅读全文
摘要:题意:给出一张有向图,求原点到所有点的最短路和所有点到原点的最短路的距离之和 解法:反向建图+spfa #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; const i
阅读全文
摘要:题意:在长为L的线段上原有N个点,现要求插入K个点,使点之间距离最短。 解法:二分答案 #include<iostream> using namespace std; const int MAX=100000; int l,n,k,a[MAX+5],r,L; bool p(int x); int m
阅读全文
摘要:题目简述: 给两个互质的数a,b,要求求一个数N使方程N=ax+by无负数解,x,y为整数 主要是一道数学题,代码非常简单 N=a*b-a-b 证明如下: 由于两数互质,所以gcd(a,b)=1 lcm(a,b)=a*b 如果一个数k可以被表示出,那么k=ax+by N=ax+by 因为N不能被合法
阅读全文
摘要:题目描述 花匠栋栋种了一排花,每株花都有自己的高度。花儿越长越大,也越来越挤。栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较别致。 具体而言,栋栋的花的高度可以看成一列整数h_1,h_2,...,h_nh1,h2,...,hn。设当
阅读全文
摘要:题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确。 A++语言的循环结构如下: F i x y 循环
阅读全文
摘要:题目描述 春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为nn的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是h_ihi。 在搭建开始之前,没有任何积木(可以看成nn块高度为00的积木)。接下来每次操作,小朋友们可以选择一段连续区间[l, r][l,r
阅读全文
摘要:题目描述 有一个仅由数字00与11组成的n \times nn×n格迷宫。若你位于一格0上,那么你可以移动到相邻44格中的某一格11上,同样若你位于一格1上,那么你可以移动到相邻44格中的某一格00上。 你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。 输入格式 第11行
阅读全文
摘要:有C(n,m)=C(n-1,m-1)+C(n-1,m) //其实跟杨辉三角是一样的 由于询问次数很多,所以要先预处理出C(2000,2000)前的值然后再读取。 因为每个测试点的k值都是唯一的,所以所有%k==0的数就是要求的答案。 储存的时候可以用前缀和的方式保存下来。 最终式子就是:C(n,m)
阅读全文

浙公网安备 33010602011771号