习题集
文章平均质量分 56
okouk
ACMer
展开
-
闲来无事写点图
01电路维修https://www.acwing.com/problem/content/177/题意每次移动一个木棍,让其转方向,问最少转动几次能从左上角到右下角。解析 (巧妙建立01权图+最短路问题)难点在于建图,长和宽分别是r,cr,cr,c那么总共的点就有(r+1)×(c+1)(r+1)\times(c+1)(r+1)×(c+1)个顶点,每个顶点都需要建4条边,如果为“/”,那么说明右上角和左下角的代价为0,同理左上角和右下角的代价为1。因此这张图就建成了只有0 和 1 的有向图,只需要原创 2021-11-15 16:42:44 · 826 阅读 · 0 评论 -
牛客小白月赛38 E-又一数区间问题
https://ac.nowcoder.com/acm/contest/11215/E给定一个长为nn的数字串(只包含11到99的整数),求有多少个区间[l,r](l\leq r)l,r满足区间长度等于区间内所有数字的积。输入描述:第一行输入一个整数n代表数字串的长度第二行给出该数字串,保证之中只含有1到9的数字。输出描述:输出一个整数,表示满足条件的区间个数。解析如果全都是非1的数字的话,累乘是非常之快的,因此一下子就超出了区间。但是如果存在1的,乘上1对我们的答案是没有贡献原创 2021-09-18 23:25:37 · 326 阅读 · 2 评论 -
dd爱科学1.0
题目描述大科学家dddd最近在研究转基因白菜,白菜的基因序列由一串大写英文字母构成,dddd经过严谨的推理证明发现,只有当白菜的基因序列呈按位非递减形式时,这株白菜的高附加值将达到最高,于是优秀的dddd开始着手修改白菜的基因序列,dddd每次修改基因序列的任意位需要的代价是11,dddd想知道,修改白菜的基因序列使其高附加值达到最高,所需要的最小代价的是多少。输入描述:第一行一个正整数n(1≤n≤1000000)第二行一个长度为n的字符串,表示所给白菜的基因序列保证给出字符串中有且仅有大写英文字原创 2021-09-14 10:59:42 · 145 阅读 · 0 评论 -
[SDOI2012] Longge 的问题
题意解析首先设gcd(i,n)=tgcd(i,n)=tgcd(i,n)=t,答案就是ttt的累加,ttt一定是nnn的因子,所以考虑枚举nnn的所有因子ttt,gcd(i,n)=t==>gcd(i/t,n/t)gcd(i,n)=t ==> gcd(i/t,n/t)gcd(i,n)=t==>gcd(i/t,n/t) 所以 gcd(i,n)\gcd(i,n)gcd(i,n)的个数就是 ϕ(n/t)\phi(n/t)ϕ(n/t),对答案的贡献值就是ϕ(n/t)∗t\phi(n/t)*tϕ原创 2021-09-07 17:59:46 · 143 阅读 · 0 评论 -
Visible Lattice Points
题意在第一象限,每个点和原点有连线,给N*N大小,求解线的数量解析gcd(x,y)=mgcd(x,y)=mgcd(x,y)=m 可以分解为 m∗gcd(x,y)=1m*gcd(x,y)=1m∗gcd(x,y)=1; 因此斜率肯定相同,会重复。所以只要统计gcd(x,y)=1gcd(x,y)=1gcd(x,y)=1 的个数。现在的问题转化成, 0<=x<=N,0<=y<=N0<=x<=N , 0<=y<=N0<=x<=N,0<=y原创 2021-09-07 17:08:02 · 123 阅读 · 0 评论 -
P4017 最大食物链计数
https://www.luogu.com.cn/problem/P4017题意有向图,找到其中,有且仅有 一个入度为0,出度为0的子图,求此图中满足条件的子图的个数。解析入度为0,出度为0,考虑拓扑排序。求子图的个数考虑动态规划。假设ABC能到达D,那么从D出发的总方案数是ABC之和。我们按照拓扑排序的顺序来进行dp。整体来看:在每一个子图之中,最后一个点一定是出度为0的点,即我们拓扑排序的终点,因此保证了动态规划的顺序。再考虑每个点:我们按照拓扑排序的顺序,在我们队列中的元素入度都是为原创 2021-08-12 19:28:36 · 146 阅读 · 0 评论 -
P1113 杂务
传送解析前缀知识:拓扑排序,建图,dp首先,并发进行,每个点的开始时间是在最慢的前驱时间的开始,考虑状态转移。我们先思考一下,如果是最后一个点,时间是不是最慢的前驱节点+自己的时间。对于每个点也同样适用,我们用拓扑排序不断清理每个点的入度,然后维护各点的最晚开始时间+自身的时间。代码#include<bits/stdc++.h>using namespace std;typedef pair<int,int>pii;const int N=1e4+4;typed原创 2021-08-11 22:38:27 · 165 阅读 · 0 评论 -
P1024 [NOIP2001 提高组] 一元三次方程求解
题意解析我们观察到,整个式子的单调性并不明确,但是每个根之间的距离<1,所以对于长度为1的区间,如果这个区间存在根,在根的右边和左边的值一定某一个大于0,另一个小于0,因此符合区间的单调。值得注意的是,如果区间长度设置为1,那么可能会重复计算,因此区间长度设置为0.99。当我们对某个存在根的区间进行二分查找时,首先要确定其单调性。代码#include<bits/stdc++.h>using namespace std;const int N=1e6+5;typedef原创 2021-08-11 17:35:45 · 256 阅读 · 0 评论 -
P7167 [eJOI 2020 Day1] Fountain
传送门题意按顺序从上到下给出n个石板,每一块容量cic_ici,直径did_idi,qqq次询问,每一次询问:从aaa个石板倒bbb个水,问最后能停留在哪个石板。水只能往下流,且只能被比自己直径大的石板接到水。解析很容易联想到单调栈,单调栈可以过掉一般数据,但是如果遇到递增的序列,单调栈每次查询的时间复杂度就会很高。因此考虑用ST表来处理数据,进行倍增处理,时间复杂度单调栈 O(N)O(N)O(N),倍增O(NlogN)O(NlogN)O(NlogN),回答询问 O(QlogN)O(Qlo原创 2021-08-08 22:08:39 · 268 阅读 · 0 评论 -
P5318 【深基18.例3】查找文献
https://www.luogu.com.cn/problem/P5318题意分析由于输出的时候是按序号大小的先后进行输出,因此考虑用vector存图,进行排序。然后就是bfs+dfs。代码#include<bits/stdc++.h>using namespace std;const int N=1e5+5;typedef long long ll;vector<int>e[N];int v[N];int n,m;void add(int a,int b原创 2021-08-10 11:05:11 · 267 阅读 · 0 评论 -
P3916 图的遍历
题意给出N个点,MM条边的有向图,对于每个点v,求A(v)表示从点v出发,能到达的编号最大的点。解析反向建图+dfs邻接表反向建图,考虑从大的顶点遍历到小的顶点,并标记,细节不用多说,看代码即可。代码#include<bits/stdc++.h>using namespace std;const int N=1e5+5;typedef long long ll;int n,m,k;int e[N],h[N],ne[N],idx,v[N],dis[N];void add(i原创 2021-08-09 22:10:42 · 132 阅读 · 0 评论 -
习题传送门
day1:二分,双指针,单调栈,单调队列,day2:KMP,哈希映射,并查集,带权并查集day3: 图论入门,图的DFS,BFS,拓扑排序,二分图,trie树day4 最短路算法(Dijkstra,Bellman-Ford,SPFA,Floyd)day5: 最小生成树(Prim,Kruskal),二分图算法(染色,匈牙利)day6: 数论(质数,快速幂,矩阵快速幂,同余,中剩,组合数)day7: 线性dp,状压dp>day1day2day3[二分图]https://bl.原创 2021-07-20 14:43:57 · 683 阅读 · 1 评论