草庐IT

acwing-Diango

全部标签

AcWing1134/洛谷P1144 最短路计数

AcWing传送门洛谷传送门题目大意\(\qquad\)给一个无向图,边权都是\(1\),求出以\(1\)为源点,到各个点(\(1\simn\))的最短路数量解题思路\(\qquad\)边权都是\(1\)的图中最短路,我们选择用\(BFS\)解决这个问题\(\qquad\)对于每个点\(j\),我们进行以下讨论:(假设这个\(j\)在这轮\(BFS\)中由\(i\)点转移而来)\(\qquad\)\(1.\)当\(dist_{\j}的时候,由于队列的性质,\(点1\)到\(点j\)的若干条最短路中\(\color{Red}{\huge必定没有i}\),所以我们可以直接忽视这种情况\(\qqua

AcWing1134/洛谷P1144 最短路计数

AcWing传送门洛谷传送门题目大意\(\qquad\)给一个无向图,边权都是\(1\),求出以\(1\)为源点,到各个点(\(1\simn\))的最短路数量解题思路\(\qquad\)边权都是\(1\)的图中最短路,我们选择用\(BFS\)解决这个问题\(\qquad\)对于每个点\(j\),我们进行以下讨论:(假设这个\(j\)在这轮\(BFS\)中由\(i\)点转移而来)\(\qquad\)\(1.\)当\(dist_{\j}的时候,由于队列的性质,\(点1\)到\(点j\)的若干条最短路中\(\color{Red}{\huge必定没有i}\),所以我们可以直接忽视这种情况\(\qqua

Acwing 327. 玉米田

算法分析棋盘型状态压缩dp这类dp有一个通用的状态表示法:f[i][j][k],表示前i行(放了j个棋子后)的状态表示为k。由于本题无棋子要求,因此可以省去中间一维,即:  用f[i][j]表示前i行土地的状态为j。首先由于玉米地有不肥沃的地方不能种植,因此需要通过二进制表示出来可以种植和不可以种植的地方,我们是将整行用一个二进制数表示的,可种为0,不可种为1,在输入的时候即可判断:  g[i]+=(!x由于是棋盘型,因此根据我们的经验显而易见可以知道需要分别分析棋盘的列和行:根据题意相邻的两格内不能同时种玉米可知:  (以x为当前格)则 (x&x>>1)=0;  这很容易理解,比如x的二进制

Acwing 327. 玉米田

算法分析棋盘型状态压缩dp这类dp有一个通用的状态表示法:f[i][j][k],表示前i行(放了j个棋子后)的状态表示为k。由于本题无棋子要求,因此可以省去中间一维,即:  用f[i][j]表示前i行土地的状态为j。首先由于玉米地有不肥沃的地方不能种植,因此需要通过二进制表示出来可以种植和不可以种植的地方,我们是将整行用一个二进制数表示的,可种为0,不可种为1,在输入的时候即可判断:  g[i]+=(!x由于是棋盘型,因此根据我们的经验显而易见可以知道需要分别分析棋盘的列和行:根据题意相邻的两格内不能同时种玉米可知:  (以x为当前格)则 (x&x>>1)=0;  这很容易理解,比如x的二进制

AcWing-1022

题解借鉴两位大佬的解析墨染空&&野生铅笔本题是一道01背包的扩展题——二维费用01背包问题把野生宝可梦看做物品,则捕捉他需要的精灵球个数就是第一费用,战斗皮神要掉的血就是第二费用在背包问题中,体积w与价值v是可以互逆的!可以将f[i]表示为体积为i能装的最大价值,也可以将f[i]表示为价值为i所需的最小体积。以上就是本题的阅读理解分析部分,接下来直接上闫氏DP分析法#include#include#includeusingnamespacestd;constintN=110,M=1010,K=510;intn,m,t;intv1[N],v2[N];intf[M][K];intmain(){ci

AcWing-1022

题解借鉴两位大佬的解析墨染空&&野生铅笔本题是一道01背包的扩展题——二维费用01背包问题把野生宝可梦看做物品,则捕捉他需要的精灵球个数就是第一费用,战斗皮神要掉的血就是第二费用在背包问题中,体积w与价值v是可以互逆的!可以将f[i]表示为体积为i能装的最大价值,也可以将f[i]表示为价值为i所需的最小体积。以上就是本题的阅读理解分析部分,接下来直接上闫氏DP分析法#include#include#includeusingnamespacestd;constintN=110,M=1010,K=510;intn,m,t;intv1[N],v2[N];intf[M][K];intmain(){ci

AcWing 1018. 最低通行费(线性DP)

题目链接题目描述一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N−1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。题目模型子题目:摘花生因为要在(2N-1)个单位时间穿越出去,而从(1,1)走到(n,n)正好需要(2N-1)个单位时间,所以不能走回头路。题目代码#include#include#includeusin

AcWing 1018. 最低通行费(线性DP)

题目链接题目描述一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N−1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。题目模型子题目:摘花生因为要在(2N-1)个单位时间穿越出去,而从(1,1)走到(n,n)正好需要(2N-1)个单位时间,所以不能走回头路。题目代码#include#include#includeusin

AcWing 787.归并排序(Java)

题目来源:https://www.acwing.com/problem/content/description/789/题目描述给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数n。第二行包含n个整数(所有整数均在1∼109范围内),表示整个数列。输出格式输出共一行,包含n个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:531245输出样例:12345思路讲解首先确定中间基准点mid=left+(right-left)/2,在每次进行方法时先进性一次递推进行数组的分割,将数组分为单个值后进

AcWing 787.归并排序(Java)

题目来源:https://www.acwing.com/problem/content/description/789/题目描述给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数n。第二行包含n个整数(所有整数均在1∼109范围内),表示整个数列。输出格式输出共一行,包含n个整数,表示排好序的数列。数据范围1≤n≤100000输入样例:531245输出样例:12345思路讲解首先确定中间基准点mid=left+(right-left)/2,在每次进行方法时先进性一次递推进行数组的分割,将数组分为单个值后进