题解
shi_zi_183
这个作者很懒,什么都没留下…
展开
-
蓝桥杯试题 历届试题 邮局
邮局题中的数据量很小,但单纯的回溯会超时,所以需要剪枝,这里减了三个枝。1.当即使所有剩余点都算上都不能取k个点时。2.当当前点大于k个时。3.当发现加入一个点后距离数组没有变化时,说明这个点可有可无以后不再计算。#include<iostream>#include<vector>#include<math.h>#include<algorithm>using namespace std;const int MAXN = 100, INF原创 2020-11-07 22:04:34 · 169 阅读 · 0 评论 -
洛谷P3381 【模板】最小费用最大流
P3381 【模板】最小费用最大流最大流算法中的DFS搜索修改为SPFA算法,每次取增广路径时,都取成本最低,即最近路径。可以得73分,三组数据超时,可能是跑进了死循环,没发现错误,还是跟着答案学学吧。#include<iostream>#include<algorithm>#include<queue>#include<memory.h>using namespace std;const int MAXN = 5e3 + 10, MAX =原创 2020-10-31 09:44:46 · 181 阅读 · 0 评论 -
蓝桥 试题 历届试题 观光铁路
观光铁路暴力搜索+剪枝这题很麻烦,一开始找不到很好的办法,大概搜了一下搜到了概率dp,学了一下,发现用不上,因为路径可以无限长,递推没有终点。然后看到数据量n≤21n\le 21n≤21,诶数据量好小,那直接搜图吧,DFS递归搜索,然后记录起点,当前点,父节点,当前概率,当前路径长度,遍历子节点,发现父节点跳过,发现起点就可以求当前路径的期望累加到结果里。但我忽略了环,这个绕起来没完,即使剪枝p(n+1)<1e−13p(n+1)<1e-13p(n+1)<1e−13时间复杂度还是太.原创 2020-10-13 21:06:40 · 638 阅读 · 1 评论 -
2020 计蒜之道 预赛 第二场 群星
群星水题#include<iostream>using namespace std;const int MAX = 1e4 + 10;double a, dm;int n;double io[MAX];int main(){ double up = 0, down = 0; cin >> a >> dm >> n; for (int i = 1; i <= n; i++) cin >> io[i]; for原创 2020-09-23 07:14:15 · 143 阅读 · 0 评论 -
P1005 矩阵取数游戏
P1005 矩阵取数游戏简单的dp题,关键是数太大,需要自己写高精度。ps:大数写错了,有几组数据报错,回头看一个标准答案学一下,太菜了。#include<iostream>#include<algorithm>#include <cstring>using namespace std;#define ll long longconst int MAX = 100;ll a[MAX];int n, m;struct big { ll n[MAX]原创 2020-09-22 20:13:49 · 76 阅读 · 0 评论 -
洛谷P1084疫情控制
洛谷P1084疫情控制考点:树上倍增,贪心,二分答案,链式向前星。之前见过一个类似的用贪心和枚举答案的题,但没太在意。这道题想到了用贪心想要模拟军队前进,然后删去重复无用的军队,但后来发现是多叉树这样就不能做了真正的解法:树上倍增预处理,二分枚举答案找到最小的答案(二分枚举需要题目对于但答案有单调性,所有大于或小于的正确答案的值也可以使题目通过,且答案有最小单位,比如这道题一定是整数)然后是用贪心写出检查答案正确的函数。题中的细节很多,需要一步一步的拆解问题。#include<iostream原创 2020-09-21 06:56:10 · 274 阅读 · 0 评论 -
洛谷P1081 开车旅行
洛谷P1081 开车旅行#include<iostream>#include<algorithm>#define ll long longusing namespace std;const int MAX = 1e5 + 10;int n, m;ll x;struct node { int i, l, r; ll h;}city[MAX];int s;int p[MAX], near[MAX], cnear[MAX];int f[MAX][21];ll原创 2020-09-18 23:51:42 · 600 阅读 · 0 评论 -
计蒜客——染色
题目来源2020 计蒜之道 预赛 第一场#include<iostream>#include<memory.h>#include<algorithm>#include<vector>using namespace std;const int MAX=3e5+10;int n,m;long long dp[MAX];int h[MAX],tot=0;struct Inet{ int l,t; long long c; int next原创 2020-09-18 15:49:57 · 182 阅读 · 0 评论 -
计蒜客——五子棋
五子棋计蒜之道程序设计大赛已经迎来了第六届,蒜头君很开心,决定带上好友们一起下一把 五子棋,并由自己来担任裁判。五子棋的规则为:双方分别使用黑白两色的棋子,每次 落子(放置一个己方颜色的棋子),放在棋盘直线与横线的交叉点上,一方先形成至少五个己方颜色棋子连成一线者获胜。黑色棋子先手(第一个放置的棋子颜色一定是黑色)。在这里,没有任何禁手的限制(如果你不清楚禁手是什么,可以忽略这句话)。也就意味着,当一方出现六子连珠或更多己方棋子连成一条线时,也算这方胜利。当一方将要落子,且有至少一处落子后可让自己的原创 2020-09-17 21:24:48 · 494 阅读 · 0 评论