摘要:
题意:给你n个点,m条边,一个起点s,一个终点t的无向图,问在某两个点之间加一条边,不改变s到t的最短路径的值的加法有多少种,所有点一定连接; 思路:首先,默认相邻两点的权值都为1,会改变值的情况有: 从s出发,算出s的单源最短路dist,如果dist[x]+1<dist[t]; 从t出发,算出t的 阅读全文
摘要:
题意:一个有向图,无自环,无重边,让你判断这个图内的任意两点是否有路; 解题思路:首先,判断两个点是否可达一般用出入度来判断,如果在拓扑排序中同时有两个及以上入度同时为零的点,那么,这些入度的为零的点肯定不可达,因为没有路径指向它;然后就是简化图了,一个环的点肯定可达,所以缩下点,再拓扑排序下; 代 阅读全文
摘要:
题意:有n头奶牛,假如奶牛A觉得奶牛B很厉害,那么就有一条由A指向B的边,然后有个传递关系,if(A→B,B→C,那么A→C),让你求出被除了自己以外所有的奶牛都认为厉害的的奶牛个数; 解题思路:看到有逻辑顺序就想到了拓扑排序,然后想了想,按照题意,如果一个牛的出度为0,那么它至少确定了不会认为别的 阅读全文
摘要:
题意:输出第n个能拆分成由,2,3,5,7中的一个或者多个组成的数; 解题思路:a[i+1]=a[i]*2;a[i+2]=a[i]*3;a[i+3]=a[i]*5;a[i+4]=a[i]*7;然后把重复的去掉就行了,可以用map标记,也可以用set存,看心情;注意1是第一个数,我也不知道为什么0.0 阅读全文
摘要:
解题思路:dp[i][j]表示前i个物品中取k对所要的最小花费; 首先得对物品进行处理,因为需要当前物品减前一个物品的平方和最小; 所以先排序,因为排序的相邻两个的差的平方一定最小; 然后转移方程:dp[i][j]=min(dp[i-1][j],dp[i-2][j-1]+w); 阅读全文
摘要:
解题思路:用dp做的,dp[i][j]表示在i时刻,j点的最大馅饼。a[i][j]表示在i这个时刻j点同时掉落的馅饼; 每个点除了0和10之外,都有三种状态; 1、没有移动,这样值就为dp[i][j]=max(dp[i][j],dp[i-1][j]+a[i][j]); 2、从左边移动来的,dp[i] 阅读全文
摘要:
题意:给你n和k,问你n最少花费多少代价能得到k; 有两种变换:1、n++或者n--; 2、n=n*2; 两种代价每次的花费都是1; 思路:一维的bfs,每次入队三个点,一个是n+1,一个是n-1,一个是n*2的点; 阅读全文
摘要:
纯裸题。。写着方便理解。。。 题意:判断一个无向图是否存在欧拉回路。。。 解题思路:并查集判断一下是否联通,然后再判断一下点的度数是否为偶数就行了; 阅读全文