
牛客网
文章平均质量分 78
风声sp
这个人很懒,还没想到说点啥
展开
-
牛客练习赛24---A
假设有n个位置需要我们去放石子,那么第一个位置我们可以放m个石子,而之后的每一个位置放的位置都要和前一个不同,那么每一个位置都有m-1个类型的石子可以放,那么答案就是,(m-1)*(n-1)+m 个石子代码如下#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b)...原创 2018-08-11 10:21:22 · 387 阅读 · 0 评论 -
牛客练习赛24---C
当时写复杂了,发现其实就只有两种颜色,对于每一个颜色计数,然后记录每一种颜色出现的当前次数的时候是什么位置。然后每一个查询就可以做到O(1) 查询。代码如下,可以简化一下,has数组是可以不用开的吧。#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b) sc...原创 2018-08-11 10:30:11 · 205 阅读 · 0 评论 -
牛客练习赛24---D
名字挺有意思的,排插树,虽然这是个图。算dijkstra的模版题,求最短路里面最长的那条,因为到讲台的距离总是取决于最短的那条路,但是又要求离讲台最远,那么我们通过dijkstra计算出起始点到所有点的最短路然后遍历找最大值就好。代码如下#include <bits/stdc++.h>using namespace std;typedef long lo...原创 2018-08-11 10:35:50 · 245 阅读 · 0 评论 -
牛客练习赛24---E
感觉可能有更好的方法?想到的是构图,因为n和m都很小,因此每两个点之间都可以建一条边,然后传送点之间再多建一条权值为1的边。然后跑dijkstra算法就可以找到最短路了。代码如下#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b) scanf("%d%d",&a...原创 2018-08-11 10:41:05 · 775 阅读 · 0 评论