AcWing
文章平均质量分 69
追风者_
要我自我介绍,挺秃然的
展开
-
ACwing 311. 月之谜 数位dp
题意:问你[l,r]内有多少数,是可以被其数位和整除的。思路:思路:直观想法,用dp[pos][sum1][sum2]dp[pos][sum1][sum2]dp[pos][sum1][sum2],表示枚举到第pos位,组成sum1的数,累加和为sum2时的方案数。由于sum1很大,所以要考虑每步取模。想到,若给定一个m,问你有多少数是被m整除,这个就是一个裸的数位dp板子,用一个dp[pos][sum]dp[pos][sum]dp[pos][sum]就可以表示枚举到第pos位,逐步取模结果为sum原创 2021-08-10 00:03:49 · 270 阅读 · 0 评论 -
【AcWing 198】 反素数 dfs 数论
对于任何正整数x,其约数的个数记作g(x),例如g(1)=1、g(6)=4。如果某个正整数x满足:对于任意的小于x的正整数 i,都有g(x)>g(i) ,则称x为反素数。例如,整数1,2,4,6等都是反素数。现在给定一个数N,请求出不超过N的最大的反素数。输入格式一个正整数N。输出格式一个整数,表示不超过N的最大反素数。数据范围1≤N≤2∗109输入样例:1000输出样例:840题意:如题思路:依照题意,不难得出x是【1,x】中约数个数最大的那个,而且其中没有个数相等的原创 2020-08-03 20:51:15 · 144 阅读 · 0 评论 -
【AcWing 178】第K短路 A*算法
给定一张N个点(编号1,2…N),M条边的有向图,求从起点S到终点T的第K短路的长度,路径允许重复经过点或边。注意: 每条最短路中至少要包含一条边。输入格式第一行包含两个整数N和M。接下来M行,每行包含三个整数A,B和L,表示点A与点B之间存在有向边,且边长为L。最后一行包含三个整数S,T和K,分别表示起点S,终点T和第K短路。输出格式输出占一行,包含一个整数,表示第K短路的长度,如果第K短路不存在,则输出“-1”。数据范围1≤S,T≤N≤1000,0≤M≤105,1≤K≤1000,原创 2020-07-31 20:07:27 · 199 阅读 · 0 评论 -
【AcWing 281】 硬币 多重背包问题
给定N种硬币,其中第 i 种硬币的面值为Ai,共有Ci个。从中选出若干个硬币,把面值相加,若结果为S,则称“面值S能被拼成”。求1~M之间能被拼成的面值有多少个。输入格式输入包含多组测试用例。每组测试用例第一行包含两个整数N和M。第二行包含2N个整数,分别表示A1,A2,…,AN和C1,C2,…,CN。当输入用例N=0,M=0时,表示输入终止,且该用例无需处理。输出格式每组用例输出一个结果,每个结果占一行。数据范围1≤N≤100,1≤M≤105,1≤Ai≤105,1≤Ci≤100原创 2020-07-31 17:42:45 · 254 阅读 · 0 评论 -
【AcWing 373】車的放置 二分图 匈牙利算法
给定一个N行M列的棋盘,已知某些格子禁止放置。问棋盘上最多能放多少个不能互相攻击的車。車放在格子里,攻击范围与中国象棋的“車”一致。输入格式第一行包含三个整数N,M,T,其中T表示禁止放置的格子的数量。接下来T行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。输出格式输出一个整数,表示结果。数据范围1≤N,M≤200输入样例:8 8 0输出样例:8题意:如题思路:观察車攻击的规则,最后的棋盘状态肯定是每个車占一行和一列,换句话说,行和列必须是一一对原创 2020-06-30 13:34:19 · 227 阅读 · 0 评论 -
【Acwings 372】 棋盘覆盖 二分图最大匹配
给定一个N行N列的棋盘,已知某些格子禁止放置。求最多能往棋盘上放多少块的长度为2、宽度为1的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张骨牌都不重叠。输入格式第一行包含两个整数N和t,其中t为禁止放置的格子的数量。接下来t行每行包含两个整数x和y,表示位于第x行第y列的格子禁止放置,行列数从1开始。输出格式输出一个整数,表示结果。数据范围1≤N≤100输出样例:8 0输出样例:32题意:如题思路:构建二分图:破题口在于长度为2宽为1的方块,说明占据的两个位置其i原创 2020-06-28 11:22:19 · 200 阅读 · 0 评论 -
【AcWing 346】 走廊泼水节 最小生成树 思维
给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。求增加的边的权值总和最小是多少。注意: 树中的所有边权均为整数,且新加的所有边权也必须为整数。输入格式第一行包含整数t,表示共有t组测试数据。对于每组测试数据,第一行包含整数N。接下来N-1行,每行三个整数X,Y,Z,表示X节点与Y节点之间存在一条边,长度为Z。输出格式每组数据输出一个整数,表示权值总和最小值。每个结果占一行。数据范围1≤N≤60001≤Z≤100输入样例:23原创 2020-05-29 11:44:56 · 187 阅读 · 0 评论 -
【AcWing 111】 畜栏预定 一看就会的题解 贪心 思维 优先队列
有N头牛在畜栏中吃草。每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏。给定N头牛和每头牛开始吃草的时间A以及结束吃草的时间B,每头牛在[A,B]这一时间段内都会一直吃草。当两头牛的吃草区间存在交集时(包括端点),这两头牛不能被安排在同一个畜栏吃草。求需要的最小畜栏数目和每头牛对应的畜栏方案。输入格式第1行:输入一个整数N。第2…N+1行:第i+1行输入第i头牛的开始吃草时间A以及结束吃草时间B,数之间用空格隔开。输出格式第1行:输入一个整数,代表所需最小畜栏数。第2…N原创 2020-05-27 11:33:40 · 503 阅读 · 0 评论 -
【AcWing 110】 防晒 贪心 详解
有C头奶牛进行日光浴,第i头奶牛需要minSPF[i]到maxSPF[i]单位强度之间的阳光。每头奶牛在日光浴前必须涂防晒霜,防晒霜有L种,涂上第i种之后,身体接收到的阳光强度就会稳定为SPF[i],第i种防晒霜有cover[i]瓶。求最多可以满足多少头奶牛进行日光浴。输入格式第一行输入整数C和L。接下来的C行,按次序每行输入一头牛的minSPF和maxSPF值,即第i行输入minSPF[i]和maxSPF[i]。再接下来的L行,按次序每行输入一种防晒霜的SPF和cover值,即第i行输入SPF原创 2020-05-26 19:31:33 · 427 阅读 · 0 评论 -
【AcWing 165】 小猫爬山 简单dfs + 剪枝优化
翰翰和达达饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。翰翰和达达只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过W。每租用一辆缆车,翰翰和达达就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山?输入格式第1行:包含两个用空格隔开的整数,N和W。第2…N+1行:每行一个整数,其中第i+1行的原创 2020-05-22 18:04:51 · 300 阅读 · 0 评论 -
【AcWing 164】 可达性统计 拓扑排序 bitset优化
给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量。输入格式第一行两个整数N,M,接下来M行每行两个整数x,y,表示从x到y的一条有向边。输出格式输出共N行,表示每个点能够到达的点的数量。数据范围1≤N,M≤30000输入样例:10 103 82 32 55 95 92 33 94 82 104 9输出样例:1633211111题意:如题思路:如果想到点了这个题就不是什么难题。首先,这是一张有向无环图,那么我们可以先拓扑一原创 2020-05-22 17:05:45 · 217 阅读 · 0 评论 -
【AcWing 101】最高的牛 差分 思维
有 N 头牛站成一行,被编队为1、2、3…N,每头牛的身高都为整数。当且仅当两头牛中间的牛身高都比它们矮时,两头牛方可看到对方。现在,我们只知道其中最高的牛是第 P 头,它的身高是 H ,剩余牛的身高未知。但是,我们还知道这群牛之中存在着 M 对关系,每对关系都指明了某两头牛 A 和 B 可以相互看见。求每头牛的身高的最大可能值是多少。输入格式第一行输入整数N,P,H,M,数据用空格隔开。接下来M行,每行输出两个整数 A 和 B ,代表牛 A 和牛 B 可以相互看见,数据用空格隔开。输出格式原创 2020-05-22 15:57:11 · 301 阅读 · 0 评论 -
【AcWing 100】 增减序列 差分+贪心 详解
给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。输入格式第一行输入正整数n。接下来n行,每行输入一个整数,第i+1行的整数代表ai。输出格式第一行输出最少操作次数。第二行输出最终能得到多少种结果。数据范围0<n≤105,0≤ai<2147483648输入样例:41122输出样例:1原创 2020-05-22 13:23:17 · 1714 阅读 · 2 评论 -
【AcWing 238】 银河英雄传说 并查集 深度记录
有一个划分为N列的星际战场,各列依次编号为1,2,…,N。有N艘战舰,也依次编号为1,2,…,N,其中第i号战舰处于第i列。有T条指令,每条指令格式为以下两种之一:1、M i j,表示让第i号战舰所在列的全部战舰保持原有顺序,接在第j号战舰所在列的尾部。2、C i j,表示询问第i号战舰与第j号战舰当前是否处于同一列中,如果在同一列中,它们之间间隔了多少艘战舰。现在需要你编写一个程序,处理一系列的指令。输入格式第一行包含整数T,表示共有T条指令。接下来T行,每行一个指令,指令有两种形式:M原创 2020-05-21 21:58:33 · 201 阅读 · 0 评论 -
【AcWing 97】 约数之和 唯一分解定理 + 分治 + 快速幂
假设现在有两个自然数A和B,S是AB的所有约数之和。请你求出S mod 9901的值是多少。输入格式在一行中输入用空格隔开的两个整数A和B。输出格式输出一个整数,代表S mod 9901的值。数据范围0≤A,B≤5×107输入样例:2 3输出样例:15注意: A和B不会同时为0。题意:如题思路:首先我们得知道唯一分解定理求因数和的公式(分解a)Ans = (q10+q11+q12 …q1a1)·(q20+q21+q22…q2a2)…(qn0+qnn+qn2…qnan)其中q原创 2020-05-21 14:07:37 · 199 阅读 · 0 评论 -
【AcWing 91】 最短Hamilton路径 状压DP + 位运算 详解
给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行输入整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,j])。对于任意的x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]>=a[x,z]。输出格式输出一个整数,表示最短Hamilton路径的长度。数据原创 2020-05-20 22:44:55 · 344 阅读 · 0 评论 -
【AcWing 90】 64位整数乘法 快速幂模板
求 a 乘 b 对 p 取模的值。输入格式第一行输入整数a,第二行输入整数b,第三行输入整数p。输出格式输出一个整数,表示a*b mod p的值。数据范围1≤a,b,p≤1018输入样例:345输出样例:2思路:和快速幂一样,将a*b看成a自增b次,然后每次产分成自增b/2次时的解的两倍。奇数次的时候多加一个a,到b等于0返回0#include<iostream>#include<string>#include<algorithm>#i原创 2020-05-20 20:21:46 · 130 阅读 · 0 评论 -
【AcWing 342】 道路与航线 SPFA SLF优化
农夫约翰正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到T个城镇,编号为1~T。这些城镇之间通过R条道路 (编号为1到R) 和P条航线 (编号为1到P) 连接。每条道路 i 或者航线 i 连接城镇Ai到Bi,花费为Ci。对于道路,0≤Ci≤10,000;然而航线的花费很神奇,花费Ci可能是负数(−10,000≤Ci≤10,000)。道路是双向的,可以从Ai到Bi,也可以从Bi到Ai,花费都是Ci。然而航线与之不同,只可以从Ai到Bi。事实上,由于最近恐怖主义太嚣张,为了社会和谐,原创 2020-05-20 13:38:39 · 151 阅读 · 0 评论 -
【AcWing 340】 通信线路 Dijkstra堆优化 分层图
在郊区有 N 座通信基站,P 条 双向 电缆,第 i 条电缆连接基站Ai和Bi。特别地,1 号基站是通信公司的总站,N 号基站位于一座农场中。现在,农场主希望对通信线路进行升级,其中升级第 i 条电缆需要花费Li。电话公司正在举行优惠活动。农产主可以指定一条从 1 号基站到 N 号基站的路径,并指定路径上不超过 K 条电缆,由电话公司免费提供升级服务。农场主只需要支付在该路径上剩余的电缆中,升级价格最贵的那条电缆的花费即可。求至少用多少钱可以完成升级。输入格式第1行:三个整数N,P,K。第原创 2020-05-20 09:13:08 · 348 阅读 · 0 评论