T1 移动棋子

算出数值为 \(1\) 的点离 \((3, 3)\) 的距离即可。

#include <iostream>
#include <cstring>
#include <algorithm> using namespace std; int main() {
int px = -1, py = -1;
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
int x;
cin >> x;
if (x) px = i, py = j;
}
}
cout << abs(px - 3) + abs(py - 3) << '\n';
return 0;
}

T2 打怪兽

可以从 \(1\) 枚举到 \(n\) 表示要打多少个怪兽。

因为你要打 \(t\) 个怪兽,并不管顺序,所以我们可以对 \([1, t]\) 这一段进行排序,然后计算 \(a[t], a[t - 2], a[t - 4], \dots\) 即可(因为你要干掉第 \(t\) 个怪兽的时候,必须要使用 \(a[t]\) 的法力值,因为排过序,所以连着 \(t - 1\) 一起干掉就可以了,对于编号小于 \(t\) 的也可以这么干)。

注意每一次都进行快速排序反而会更慢,我们采用插入排序,每次插入新来的数字即可,插入的时间复杂度: \(O(n)\)。

总时间复杂度:\(O(n^2)\)。

#include <iostream>
#include <cstring>
#include <algorithm> using namespace std; const int N = 1010; int n, m;
int a[N]; bool check(int k) {
a[0] = -0x3f3f3f3f;
int p = k;
while (a[p] < a[p - 1]) {
swap(a[p], a[p - 1]);
p--;
}
int res = 0;
for (int i = k; i >= 1; i -= 2) res += a[i];
if (res <= m) return true;
else return false;
} int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) {
if (!check(i)) {
cout << i - 1 << '\n';
return 0;
}
}
cout << n << '\n';
return 0;
}

T3 最远距离

请看:

我们规定,如果一个无向连通图满足去掉其中的任意一条边都会使得该图变得不连通,则称该图为有效无向连通图。

去掉一条边就不连通了,这不就是树吗?

(否则如果是图(就是不是树的图)的话,一定有环,拆了一条边从另一端还可以去,就不会不连通了)。

那么最长距离就变为:树的直径了。

#include <iostream>
#include <cstring>
#include <algorithm> using namespace std; const int N = 100010, M = 200010; struct Edge {
int to, next;
}e[M]; int head[N], idx; void add(int a, int b) {
idx++, e[idx].to = b, e[idx].next = head[a], head[a] = idx;
} void dfs(int u, int fa, int& maxver, int& maxstep, int step) {
if (maxstep < step) {
maxstep = step;
maxver = u;
}
for (int i = head[u]; i; i = e[i].next) {
int to = e[i].to;
if (to == fa) continue;
dfs(to, u, maxver, maxstep, step + 1);
}
} int n, m; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); cin >> n >> m;
for (int i = 1; i <= m; i++) {
int a, b;
cin >> a >> b;
add(a, b), add(b, a);
}
// dfs(1, 0);
int mv = 0, ms = 0, mv1 = 0, ms1 = 0;
dfs(1, 0, mv, ms, 1);
dfs(mv, 0, mv1, ms1, 1);
cout << ms1 - 1 << '\n';
return 0;
}

AcWing 第87场周赛题解的更多相关文章

  1. AcWing 第11场周赛题解

    计算abc 首先 \(0<=a<=b<=c\) 会随机给出 \(a+b,a+c,b+c,a+b+c\)的值 因为\(a,b,c\)都为正整数,所以\(a+b+c\)一定为最大值 然后 ...

  2. AcWing第85场周赛

    这场周赛是手速局hh 死或生 某国正在以投票的方式决定 2 名死刑犯(编号 1∼2)的生死. 共有 n 组人员(编号 1∼n)参与投票,每组 10 人. 每组成员只参与一名死刑犯的投票,其中第 i 组 ...

  3. LeetCode--179场周赛题解

    水题: class Solution { public: string generateTheString(int n) { string s; string a="a",b=&q ...

  4. LeetCode #188场周赛题解

    A题链接 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2,3..., n} 中依序读取一个数字. 请使用下述操作来构建目标数组 target : Push:从 ...

  5. AcWing第78场周赛

    今天想起来了,就补一下吧~ 第一题 商品分类 货架中摆放着 n 件商品,每件商品都有两个属性:名称和产地. 当且仅当两件商品的名称和产地都相同时,两件商品才视为同一种商品. 请你统计,货架中一共有多少 ...

  6. LeetCode 第 165 场周赛

    LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...

  7. LeetCode-第 166 场周赛

    LeetCode-第 166 场周赛 1281.subtract-the-product-and-sum-of-digits-of-an-integer 1282.group-the-people-g ...

  8. LeetCode--第180场周赛

    LeetCode--第180场周赛 1380. 矩阵中的幸运数 class Solution { public: vector<int> luckyNumbers (vector<v ...

  9. Leetcode第 217 场周赛(思维量比较大)

    Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...

  10. 第五场周赛(字符串卡常个人Rank赛)——题解

    本次题目因为比较简单,除了个别题目,其余题目我只写一个思路不再贴代码. 先是Div.2的题解 A题奇怪的优化,把递归函数改成2*fun(...)即可,其实看懂程序也不难,就是求a*2b: B题你会st ...

随机推荐

  1. day104:MoFang:个人中心页面&flask-admin&基于faker生成仿真数据

    目录 BUG:登陆跳转并解决页面卡顿现象 1.前端显示个人中心页面 2.flask-Admin构建和配置后台运营站点管理用户信息 3.基于Faker生成仿真测试数据 BUG:登陆跳转并解决页面卡顿现象 ...

  2. PyG 图神经网络依赖环境安装(Anaconda)

    1.默认用户在Anaconda的虚拟环境中已安装Pytorch 2.打开anaconda prompt命令窗, activate "你的虚拟环境名称" 3.在激活后的虚拟环境下输入 ...

  3. docker上面部署nginx-waf 防火墙“modsecurity”,使用CRS规则,搭建WEB应用防火墙

    web防火墙(waf)免费开源的比较少,并且真正可以商用的WAF少之又少,modsecurity 是开源防火墙鼻祖并且有正规公司在维护着,目前是https://www.trustwave.com在维护 ...

  4. 全平台数据(数据库)管理工具 DataCap 管理 Rainbond 上的所有数据库

    DataCap是用于数据转换.集成和可视化的集成软件,支持多种数据源.文件类型.大数据相关数据库.关系数据库.NoSQL数据库等.通过该 DataCap 可以实现对多个数据源的管理,对数据源下的数据进 ...

  5. 逍遥自在学C语言 | 赋值运算符

    前言 在C语言中,赋值运算符用于将一个值赋给变量 这个过程分为两个步骤: 计算赋值运算符右侧的表达式 将结果赋给左侧的变量. C语言提供了多个不同的赋值运算符,包括基本的赋值运算符.复合赋值运算符以及 ...

  6. ray-分布式计算框架-集群与异步Job管理

    0. ray 简介 ray是开源分布式计算框架,为并行处理提供计算层,用于扩展AI与Python应用程序,是ML工作负载统一工具包 Ray AI Runtime ML应用程序库集 Ray Core 通 ...

  7. react中受控组件与非受控组件--

    非受控组件:随用随取 1 render() { 2 return ( 3 <div> 4 <h1>非受控组件</h1> 5 <form action=&quo ...

  8. Windows屏幕解锁服务原理及实现(1)

    https://github.com/zk2013/windows_remote_lock_unlock_screen 将生成的DLL注册至注册表 HKEY_LOCAL_MACHINE\SOFTWAR ...

  9. 一文快速入门体验 Hibernate

    前言 Hibernate 是一个优秀的持久层的框架,当然,虽然现在说用得比较多的是 MyBaits,但是我工作中也不得不接触 Hibernate,特别是一些老项目需要你维护的时候.所以,在此写下这篇文 ...

  10. 【ATL】注册插件成功后自动设置浏览器允许弹出窗口注册表

    STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine) { HRESULT hr = E_FAIL; static const wchar_t szU ...