2024.3.10 训练记录(12)

补一下下午组队赛的题

文章目录

  • ICPC 2018青岛D Magic Multiplication
  • ICPC 2018青岛E Plants vs. Zombies
  • ICPC 2018青岛F Tournament

ICPC 2018青岛D Magic Multiplication

题目链接

先枚举 a 的第一位是哪个数字,然后通过 a 的第一位可以推出 b 的整个串,再靠 b 去推 a 的整个串

代码有点难写

#include <bits/stdc++.h>using namespace std;#define int long long
using i64 = long long;typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<PII, int> PIII;const int N = 1e8 + 3;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 10;
const int mod1 = 954169327;
const int mod2 = 906097321;
const int INF = 0x3f3f3f3f3f3f3f3f;void solve()
{int n, m;cin >> n >> m;string s;cin >> s;vector<int> c(s.size());for (int i = 0; i < s.size(); i ++ ) c[i] = s[i] - '0';vector<int> a, b;int p = 0;auto set = [&](int x){a.push_back(x);p = 0;for (int i = 0; i < m; i ++ ){if (p < s.size() && c[p] % x == 0 && c[p] / x < 10) b.push_back(c[p] / x), p ++ ;else if (p + 1 < s.size() && (c[p] * 10 + c[p + 1]) % x == 0 && (c[p] * 10 + c[p + 1]) / x < 10) b.push_back((c[p] * 10 + c[p + 1]) / x), p += 2;else return false;}return true;};auto check = [&](){for (int i = 1; i < n; i ++ ){if (p < s.size() && c[p] % b[0] == 0 && c[p] / b[0] < 10) a.push_back(c[p] / b[0]), p ++ ;else if (p + 1 < s.size() && (c[p] * 10 + c[p + 1]) % b[0] == 0 && (c[p] * 10 + c[p + 1]) / b[0] < 10) a.push_back((c[p] * 10 + c[p + 1]) / b[0]), p += 2;else return false;for (int j = 1; j < m; j ++ ){if (p < s.size() && a[i] * b[j] == c[p]) p ++ ;else if (p + 1 < s.size() && c[p] * 10 + c[p + 1] == a[i] * b[j]) p += 2;else return false;}}return p == s.size();};for (int i = 1; i <= 9; i ++ ){a.clear();b.clear();if (set(i) && check()){for (auto t : a) cout << t;cout << ' ';for (auto t : b) cout << t;cout << '\n';return;}}cout << "Impossible\n";
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t -- ){solve();}
}

ICPC 2018青岛E Plants vs. Zombies

题目链接

二分最终答案,要注意的点是,如果在某个位置已经没有移动步数了,但是在他之后的位置已经满足条件了,那也是符合条件的

#include <bits/stdc++.h>using namespace std;#define int long long
using i64 = long long;typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<PII, int> PIII;const int N = 1e8 + 3;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 10;
const int mod1 = 954169327;
const int mod2 = 906097321;
const int INF = 0x3f3f3f3f3f3f3f3f;void solve()
{int n, m;cin >> n >> m;vector<int> a(n + 1);for (int i = 1; i <= n; i ++ ) cin >> a[i];int l = 0, r = 1e18;auto check = [&](int x){int cnt = m;vector<int> b(n + 2);for (int i = 1; i <= n; i ++ ){if (cnt > 0){b[i] += a[i];cnt -- ;}if (b[i] >= x) continue;cnt -= ((x - b[i] + a[i] - 1) / a[i]) * 2;b[i + 1] += ((x - b[i] + a[i] - 1) / a[i]) * a[i + 1];if (cnt < 0) return false;}return true;};while (l < r){int mid = l + r + 1 >> 1;if (check(mid)) l = mid;else r = mid - 1;}cout << r << '\n';
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t -- ){solve();}
}

ICPC 2018青岛F Tournament

题目链接

非常歹毒的数独,没有小脑的找规律

首先要发现 n 个人最多进行 lowbit(n) 场比赛,所以如果 k 不满足条件就直接退出

然后还是找规律,举个例子:

i
0	[1 2] [3 4] [5 6] [7 8]
1	[2 1 4 3] [6 5 8 7]
2	[3 4] [1 2] [7 8] [5 6]
3	[4 3 2 1 8 7 6 5]
4	[5 6] [7 8] [1 2] [3 4]
5	[6 5 8 7] [2 1 4 3]
6	[7 8] [5 6] [3 4] [1 2]
7	8 7 6 5 4 3 2 1

每次翻转的序列长度是 lotbit(i)

所以翻转一下就好了

#include <bits/stdc++.h>using namespace std;#define int long long
using i64 = long long;typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<PII, int> PIII;const int N = 1e8 + 3;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 10;
const int mod1 = 954169327;
const int mod2 = 906097321;
const int INF = 0x3f3f3f3f3f3f3f3f;int lowbit(int x)
{return x & -x;
}void solve()
{int n, k;cin >> n >> k;if (n % 2 != 0 || k >= lowbit(n)){cout << "Impossible\n";return;}vector<int> a(n + 1);for (int i = 1; i <= n; i ++ ) a[i] = i;for (int i = 1; i <= k; i ++ ){int lb = lowbit(i);for (int j = 1; j <= n; j += 2 * lb){for (int len = 0; len < lb; len ++ ){swap(a[j + len], a[j + lb * 2 - 1 - len]);}}for (int j = 1; j <= n; j ++ ){cout << a[j];if (j != n) cout << ' ';}cout << '\n';}
}signed main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t -- ){solve();}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【fastllm】学习框架,本地运行,速度还可以,可以成功运行chatglm2模型

1&#xff0c;关于 fastllm 项目 https://www.bilibili.com/video/BV1fx421k7Mz/?vd_source4b290247452adda4e56d84b659b0c8a2 【fastllm】学习框架&#xff0c;本地运行&#xff0c;速度还可以&#xff0c;可以成功运行chatglm2模型 https://github.com/ztxz16/fastllm &am…

10个高级的 SQL 查询技巧

1.常见表表达式&#xff08;CTEs&#xff09; 如果您想要查询子查询&#xff0c;那就是CTEs施展身手的时候 - CTEs基本上创建了一个临时表。 使用常用表表达式&#xff08;CTEs&#xff09;是模块化和分解代码的好方法&#xff0c;与您将文章分解为几个段落的方式相同。 请在…

vue ui Starting GUI 图形化配置web新项目

前言&#xff1a;在vue框架里面&#xff0c; 以往大家都是习惯用命令行 vue create 、vue init webpack创建新前端项目&#xff0c;而vue ui是一个可视化的图形界面&#xff0c;对于新手来说更加友好了&#xff0c;不但可以创建、管理、还可以更新vue项目&#xff0c;也可以下载…

LTspice(14) Noise仿真

LTspice(14) Noise仿真 好久没有更新LTspice的教程了&#xff0c;大家想了没&#xff1f; 截止目前LTspice已经更新到24.0.9。界面发生了一些变化&#xff0c;但主要功能并不受影响&#xff0c;新的版本改了UI&#xff0c;找东西更加方便了&#xff0c;界面如下图1所示。 图1…

LLVM TableGen 系统学习笔记

Basic TableGen 系统可以帮助记录领域特定的信息。它也可以认为是一种小型的编译系统。 TableGen 责负分析文件&#xff0c; 分析结果交给领域特定的后端进行处理。 重要的概念 records 一个 record 有一个独立的名称&#xff0c;一系列值和一系列父类。 它保存了特定领域…

【前沿技术】讲解

前沿技术 前沿技术是指处于科学研究和技术开发最前端的技术&#xff0c;这些技术具有高度的创新性和潜在的影响力&#xff0c;它们推动了科技进步和产业转型。讲解一些当前的前沿技术&#xff0c;我们可以从以下几个方面进行&#xff1a; 人工智能&#xff08;AI&#xff09;:…

Unity InputField宽度自适应内容

在Unity中&#xff0c;InputField在我们输入内容时&#xff0c;只会显示适应初始宽度的最新内容&#xff0c;或者自定义长度内容。 那么&#xff0c;要实现宽度自适应内容就需要另寻他法了。 以下是通过一个控制脚本来实现的一个简单方法。 直接上脚本&#xff1a; using S…

linux Shell 命令行-02-var 变量

拓展阅读 linux Shell 命令行-00-intro 入门介绍 linux Shell 命令行-02-var 变量 linux Shell 命令行-03-array 数组 linux Shell 命令行-04-operator 操作符 linux Shell 命令行-05-test 验证是否符合条件 linux Shell 命令行-06-flow control 流程控制 linux Shell 命…

JAVA笔记15(程序控制结构)

1.程序控制结构 1.1 顺序控制 ​ *介绍&#xff1a;程序从上到下逐行地执行&#xff0c;中间没有任何判断和跳转 1.2 分支控制 ​ *分支控制If - else 1.单分支 ​ *基本语法&#xff1a; if(条件表达式){​ 语句;​ }​ 条件表达式为true时&#xff0c;会执行下面语句…

Leetcode 59.螺旋矩阵Ⅱ

1.题目 2.思路 &#xff08;借用代码随想录的图&#xff09; 1.我们将转一圈看作一个循环&#xff08;1->2->3->4->5->6->7->8 这是一个循环&#xff09; 2.在这个循环里&#xff0c;我们要画四条边&#xff08;上右下左&#xff09; 填充上行从左到右 填…

第三百九十三回

文章目录 1. 概念介绍2. 生命周期及其方法2.1 生命周期2.2 回调方法2.3 使用方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"显示Snackbar的另外一种方法"相关的内容&#xff0c;本章回中将介绍如何监听组件的生命周期.闲话休提&#xff0c;让我们一起Talk Flu…

Vue扩展知识简单了解

引入vue-router 要引入vue-router&#xff0c;首先需要安装它。在项目目录下执行以下命令&#xff1a; npm install vue-router然后&#xff0c;在你的Vue项目中&#xff0c;可以通过以下方式引入和使用vue-router&#xff1a; // main.js import Vue from vue import App f…

基于Vue的预约停车位APP设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 Vue简介 3 1.2 Node.js简介 3 1.3 JavaScript基本介绍 4 1.4 Ajax基本介绍 4 1.5 本章小结 4 2 软件需求分析与体系结构设计 5 2.1 系统定义用户 5 2.2 系统功能需求描述 5 2.3 系统用例分析 6 2. 3. 1 用户用例分析 6 2.…

深入理解JavaScript内存泄漏:原因与解决方法

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

group by order by having where union

力扣题目链接 having where 区别 having子句用于分组后筛选&#xff0c;where子句用于行条件筛选 having一般都是配合group by 和聚合函数一起出现如(count(),sum(),avg(),max(),min()) where条件子句中不能使用聚集函数&#xff0c;而having子句就可以。 having只能用在group…

链表的基础

目录 顺序表 链表 需要注意的 链表的优势 单链表的实现 1.单链表的准备 2.单链表的结构体的创建 3.单链表的准备 4.前插 5.后插 6.后删 7.前删 8.任意位置前插 9.任意位置后插 10.删除 11.修改 12.打印 13.释放链表 总说链表难&#xff0c;但我感觉只要认真听讲…

栈和队列算法题

232. 用栈实现队列 题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元…

Docker基础—CentOS中卸载Docker

要卸载已经安装好的 Docker&#xff0c;可以按照以下步骤进行&#xff1a; 1 停止正在运行的 Docker 服务 sudo systemctl stop docker 2 卸载 Docker 软件包 sudo yum remove docker-ce 3 删除 Docker 数据和配置文件&#xff08;可选&#xff09; sudo rm -rf /var/lib…

1572.矩阵对角线元素的和

刷算法题&#xff1a; 第一遍&#xff1a;1.看5分钟&#xff0c;没思路看题解 2.通过题解改进自己的解法&#xff0c;并且要写每行的注释以及自己的思路。 3.思考自己做到了题解的哪一步&#xff0c;下次怎么才能做对(总结方法) 4.整理到自己的自媒体平台。 5.再刷重复的类…

(南京观海微电子)——Gamma调试

1.什么是Gamma&#xff1f; Gamma的概念源自于CRT响应曲线&#xff0c;最开始是用于反映显像管的图像亮度与输入电子枪的信号电压之间&#xff0c;非线性关系的一个参数。对于CRT显示器而言&#xff0c;电子流大小影响显示的图像亮度大小&#xff0c;而电子流大小与输入电压间…