ABC369

news/2024/10/3 23:21:59

A

link

判断\(A\)\(B\)之间可不可以放一个数,如果可以就是\(3\)个,不行就是\(2\)个(左右),但是如果\(A\)\(B\)相等就只有一个。

点击查看代码
#include<bits/stdc++.h>using namespace std;signed main(){int a,b;cin >> a >> b;int x = b-a;if(x != 0){if(x%2 == 0) cout << 3;else cout << 2;}else cout << 1;return 0;}

B

link

存一下左右手在哪,模拟即可。

点击查看代码
#include<bits/stdc++.h>using namespace std;int n;
int a[105];
char s[105];signed main(){cin >> n;for(int i = 1;i <= n;++ i)cin >> a[i] >> s[i];int l = -1,r = -1,ans = 0;for(int i = 1;i <= n;++ i){if(s[i] == 'L'){if(l == -1) l = a[i];ans += abs(a[i]-l);l = a[i];}else{if(r == -1) r = a[i];ans += abs(a[i]-r);r = a[i];}}cout << ans;return 0;}

C

link

就是找等差数列。
找差分数组,如果差分数组这一段连续的最多\(k\)个数相等,那么这一段就有最多\(k+1\)个数是等差(试一下),那么就一共有\(C_{k+1}^2\)个等差数列(选两个端点)。一个数的单独计算。

点击查看代码
#include<bits/stdc++.h>#define int long longusing namespace std;int n;
int a[200005];
int ans;
int cf[200005];int c(int x){return x*(x-1)/2;
}signed main(){cin >> n;for(int i = 1;i <= n;++ i){cin >> a[i];cf[i] = a[i]-a[i-1];}ans = n;cf[n+1] = cf[n]+1;int zer = 0,cc = cf[1];for(int i = 2;i <= n+1;++ i){if(cf[i] != cc){zer++;ans += c(zer);zer = 1;cc = cf[i];}else zer++;}cout << ans;return 0;}

D

link

\(DP\)。设计\(dp\)数组\(f_{i,j,k}\)(详细见代码),考虑转移,如果这个不选,那么就是前一个的奇偶性,否则和前一个奇偶性相反,当然转移是前一个选与不选都行。最后答案是\(n\)选与不选,奇或偶的最大值。

点击查看代码
#include<bits/stdc++.h>#define int long longusing namespace std;int n;
int a[200005];
int f[200005][2][2];
//f[i][j][k]表示考虑到第i个怪物,第i个怪物放走/打败(0/1)
//当前是第奇/偶(1/0)个的最大经验值。int ff(int x,int z){return max(f[x][1][z],f[x][0][z]);
} signed main(){cin >> n;for(int i = 1;i <= n;++ i)cin >> a[i];f[0][0][1] = f[0][1][1] = -0x3f3f3f3f;for(int i = 1;i <= n;++ i){//放走f[i][0][0] = ff(i-1,0);f[i][0][1] = ff(i-1,1);//打败f[i][1][0] = ff(i-1,1)+2*a[i];f[i][1][1] = ff(i-1,0)+a[i];}cout << max(ff(n,1),ff(n,0));return 0;}

E

link

首先看到\(k\)很小,可以搜索走这些边的顺序(别忘了双向),那么又发现\(n\)很小,可以做一个全源最短路,这样搜索的时候就可以随意找两个点之间的距离了,如先走\(u_1\) ~ \(v_1\),再走\(u_2\) ~ \(v_2\),那么就需要\(v_1\)\(u_2\)的最短路。结束。

点击查看代码
#include<bits/stdc++.h>#define int long longusing namespace std;int n,m;
int bk;
int b[15];
struct nd{int u,v,w;
}ed[200005];
int f[405][405];
int g[405][405];
int ans;
int da;
bool vs[15];void dfs(int x,int q){if(x > bk){da = min(da,ans+f[q][n]);return;}for(int i = 1;i <= bk;++ i){if(vs[i]) continue;int u = ed[b[i]].u,v = ed[b[i]].v,w = ed[b[i]].w;vs[i] = 1;ans += f[q][u]+w;dfs(x+1,v);ans -= f[q][u]+w;ans += f[q][v]+w;dfs(x+1,u);ans -= f[q][v]+w;vs[i] = 0;}
}void qwq(){cin >> bk;for(int i = 1;i <= bk;++ i)cin >> b[i];da = 1e18;ans = 0;dfs(1,1);cout << da << endl;
}signed main(){cin >> n >> m;for(int i = 1;i <= n;++ i)for(int j = 1;j <= n;++ j)g[i][j] = f[i][j] = 1e18;for(int i = 1;i <= n;++ i) f[i][i] = 0;for(int i = 1;i <= m;++ i){int u,v,w;cin >> u >> v >> w;ed[i].u = u;ed[i].v = v;ed[i].w = w;g[u][v] = min(g[u][v],w);g[v][u] = g[u][v];f[u][v] = min(f[u][v],w);f[v][u] = f[u][v];}for(int k = 1;k <= n;++ k){for(int i = 1;i <= n;++ i){for(int j = 1;j <= n;++ j){f[i][j] = min(f[i][j],f[i][k]+f[k][j]);}}}/*for(int i = 1;i <= n;++ i){for(int j = 1;j <= n;++ j){cout << f[i][j] << " ";}cout << endl;}*/int q;cin >> q;while(q--) qwq();return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/55153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

对最长路(和最短路)的一些思考

为了使得整篇文章显得更加人性化,咱们首先说一下最短路。 声明:不是讲解知识点不是讲解知识点不是讲解知识点不是讲解知识点不是讲解知识点,整篇文章建立在默认已经会的基础之上,然后提出一些个人见解。 最短路 此时的 SPFA 显得不再重要了(,咱们进入正题,说一下 dijkst…

闲话 831

非常厉害治程宝典看不下去了😭 被分析卡脖子了 还是来看看合订本吧家人们 初 见 端 倪灵 光 一 闪渐 入 佳 境炉 火 纯 青登 峰 造 极羽 化 成 仙完 全 胜 利YJX AK IOI

LTSPICE include导入模型

以mos为例: 1、include lib 命令输入.include,放入原理图后右键,导入模型2,首先加入一个mos按住ctrl,右键mos spicemodel输入型号,prefix输入X,Value可不填。 设置好之后就可以开始仿真了。

ZS审判日(一):8月28日测试

前言:附高是不要的,省实验是上不了的,历二是考不上的。节选一些唐题。 第一场:语文(7:50-9:50) 1 题面 请你仿照示例,写出一个四个字分别为一二三四声的四字短语。 例:中流砥柱 分析 & 评价 试卷后面有一个词 经营惨淡 可以写。(但是我没看到) 此题小唐。 2 题面…

实现阶乘的几种方式:递归、迭代、内置函数

0! = 1,阶乘的参数不能为负数,必须大于等于0;

手把手教你使用C语言实现堆栈数据结构算法-两种方式(链表+数组)

我用C语言数组和链表手写了一个数据结构----栈堆栈 定义 栈(stack) 是一种遵循先入后出逻辑的线性数据结构,常见操作入栈,出栈,访问栈图片来源:https://www.hello-algo.com/ 栈的实现 栈遵循先入后出的原则,因此我们只能在栈顶添加或删除元素。然而,数组和链表都可以在任…

全国大学高校专业数据 API 接口

全国大学高校专业数据 API 接口 提供大学专业基础数据,持续更新,各类专业属性。1. 产品功能2023 年数据已更新; 提供最新的全国高校专业基本信息; 总计近 3000 条专业精准基础数据; 每月一次数据更新校正; 同时包含了专业开设课程列表; 全接口支持 HTTPS(TLS v1.0 / v1…