Codeforces Round #739 (Div. 3)(AK实况)

Codeforces Round #739 (Div. 3)

在这里插入图片描述

A. Dislike of Threes

找到第kkk个既不是333的倍数,个位数上也不是333的数,也已预处理然后O(1)O(1)O(1)输出,也可直接forforfor循环暴力。

#include <bits/stdc++.h>using namespace std;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);vector<int> a;for (int i = 1; i <= 2000; i++) {if (i % 3 == 0 || i % 10 == 3) {continue;}a.push_back(i);}int T, n;cin >> T;while (T--) {cin >> n;cout << a[n - 1] << "\n";}return 0;
}

B. Who’s Opposite?

2×n2 \times n2×n个数按照顺序构成一圈,iii的对立是i+ni + ni+n,给定两个对立的a,ba, ba,b,求ccc的对立是谁。

容易发现abs(a−b)=nabs(a - b) = nabs(ab)=n,所以只要判断a,b,ca, b, ca,b,c是否合法≤2×n\le 2 \times n2×n,然后判断ccc在前半圈还是后半圈即可。

#include <bits/stdc++.h>using namespace std;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);int T;cin >> T;while (T--) {int a, b, c;cin >> a >> b >> c;if (a > b) {swap(a, b);}int haf = b - a;if (c > haf * 2 || a > haf * 2 || b > haf * 2) {puts("-1");}else {if (c > haf) {printf("%d\n", c - haf);}else {printf("%d\n", c + haf);}}}return 0;
}

C. Infinity Table

可以得到,第iii次书写,有2×i−12 \times i - 12×i1个数字,所以直接模拟即可,复杂度TkT \sqrt kTk,当然也可以预处理一下,然后二分O(k+Tlog⁡k)O(\sqrt k + T \log k)O(k+Tlogk)

#include <bits/stdc++.h>using namespace std;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);int T;cin >> T;while (T--) {int n;cin >> n;for (int i = 1; ; i++) {int cur = 2 * i - 1;if (n > cur) {n -= cur;}else {if (n <= i) {printf("%d %d\n", n, i);}else {n -= i;printf("%d %d\n", i, i - n);}break;}}}return 0;
}

D. Make a Power of Two

给定一个数字字符串,可以移走其中任意数字,或者在末尾添加任意数字,要求在最少的步骤将其变为222的幂次。

考虑得到2602 ^{60}260以内所有222的幂次数字的字符串,让给定字符串在上面按照顺序匹配,

找到能匹配上的一个最大子序列,然后计算操作次数,不断取最小值即可,整体复杂度O(60×10×T)O(60 \times 10 \times T)O(60×10×T)

#include <bits/stdc++.h>using namespace std;string a[60];void init() {for (int i = 0; i < 60; i++) {long long cur = 1ll << i;while (cur) {a[i] += char(cur % 10 + '0');cur /= 10;}reverse(a[i].begin(), a[i].end());}
}int f(string str) {int ans = 0x3f3f3f3f;for (int i = 0; i < 60; i++) {int sum = 0, p1 = 0, p2 = 0, n = str.size(), m = a[i].size();while (p1 < n && p2 < m) {if (str[p1] == a[i][p2]) {p1++, p2++, sum++;}else {p1++;}}ans = min(ans, n - sum + m - p2);}return ans;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);init();int T;cin >> T;while (T--) {string str;cin >> str;cout << min(f(str), (int)str.size() + 1) << "\n";}return 0;
}

E. Polycarp and String Transformation

考虑对串从后往前开始做,不难得到删除字母的顺序,我们再对字母的个数统计一下,加入字母ccc是在第kkk次删除,总共出现了xxx次,

那么我们可以得出字母ccc在原串中出现的次数就是xk\frac{x}{k}kx次,通过这个,我们可以统计出原串的长度,

然后再对原串O(不同字母个数×lenth)O(不同字母个数 \times lenth)O(×lenth),统计模拟一下即可得到一个新的串,然后与给定串对比一下是否一样即可。

#include <bits/stdc++.h>using namespace std;const int N = 5e5 + 10;int num[30], vis[N], len, cnt, n;char str[N];bool judge(int len) {string s;for (int i = 1; i <= len; i++) {s += str[i];}string ans = s;for (int i = 1; i <= cnt; i++) {string cur = "";for (auto it : s) {if (vis[i] == it - 'a') {continue;}cur += it;}ans += cur;s = cur;}if (n != ans.size()) {return false;}for (int i = 1; i <= n; i++) {if (str[i] != ans[i - 1]) {return false;}}return true;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);int T;scanf("%d", &T);while (T--) {scanf("%s", str + 1);n = strlen(str + 1);for (int i = n; i >= 1; i--) {num[str[i] - 'a']++;if (num[str[i] - 'a'] == 1) {vis[++cnt] = str[i] - 'a';}}len = 0;reverse(vis + 1, vis + 1 + cnt);for (int i = 1; i <= cnt; i++) {len += num[vis[i]] / i;}if (judge(len)) {for (int i = 1; i <= len; i++) {putchar(str[i]);}putchar(' ');for (int i = 1; i <= cnt; i++) {putchar(char(vis[i] + 'a'));}puts("");}else {puts("-1");}for (int i = 0; i < 26; i++) {num[i] = 0;}cnt = 0;}return 0;
}

F. Nearest Beautiful Number

easyhardeasy\ hardeasy hard的做法都是一样的,考虑数位dpdpdp

我们定义f[i][j][k]f[i][j][k]f[i][j][k],表示第iii位前已用数字的状态是jjj,后面还剩下kkk位不同的数字可用,jjj是一个最大值为210−12 ^{10} - 12101的二进制数。

通过定义可以发现这个状态对于不同的给定的KKK都是没有影响的,所以可以不用每次做都去memsetmemsetmemset,直接dpdpdp即可。

或者我们可以考虑定义f[i][j][k]f[i][j][k]f[i][j][k],表示第iii位前医用数字的状态是jjj,总的可用的不同数位是kkk,然后根据不同的KKK去转移也可。

最后,对于给定的n,Kn, Kn,K,我们先数位dpdpdp得到x≤n−1x \le n - 1xn1,且最多有KKK位不同的数字有多少个,然后二分数位dpdpdp去检验答案。

整体复杂度O(T×10×log⁡n+10×1024×10)O(T \times 10 \times \log n + 10 \times 1024 \times 10)O(T×10×logn+10×1024×10)

#include <bits/stdc++.h>using namespace std;int f[15][1050][15], p[15], tot, n, k;int dfs(int pos, int cur, int last, int flag, int lim) {if (last < 0) {return 0;}if (!pos) {return !lim;}if (!flag && !lim && f[pos][cur][last] != -1) {return f[pos][cur][last];}int ans = 0, nex = flag ? p[pos] : 9;for (int i = 0; i <= nex; i++) {if (lim) {if (i == 0) {ans += dfs(pos - 1, cur, last, 0, 1);}else {int mins = cur >> i & 1 ? 0 : 1;ans += dfs(pos - 1, cur | (1 << i), last - mins, flag && i == nex, 0);}}else {int mins = cur >> i & 1 ? 0 : 1;ans += dfs(pos - 1, cur | (1 << i), last - mins, flag && i == nex, 0);}}if (!flag && !lim) {f[pos][cur][last] = ans;}return ans;
}int calc(int x) {tot = 0;while (x) {p[++tot] = x % 10;x /= 10;}return dfs(tot, 0, k, 1, 1);
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);memset(f, -1, sizeof f);int T;scanf("%d", &T);while (T--) {scanf("%d %d", &n, &k);int cur = calc(n - 1);int l = n, r = 2000000000;while (l < r) {int mid = 1ll * l + r >> 1;if (calc(mid) > cur) {r = mid;}else {l = mid + 1;}}printf("%d\n", l);}return 0;
}

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

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

相关文章

利用Helm简化Kubernetes应用部署(2)

目录定义Charts 使用Helm部署Demo Helm常用操作命令 定义Charts回到之前的“charts”目录&#xff0c;我们依次进行解读并进行简单的修改。Chart.yaml配置示例&#xff1a;apiVersion: v1 appVersion: "1.1" description: A demo Helm chart for Kubernetes name:…

linux查看磁盘空间命令

Linux 查看磁盘空间可以使用 df 和 du 命令。 df df 以磁盘分区为单位查看文件系统&#xff0c;可以获取硬盘被占用了多少空间&#xff0c;目前还剩下多少空间等信息。 例如&#xff0c;我们使用df -h命令来查看磁盘信息&#xff0c; -h 选项为根据大小适当显示&#xff1a; …

Visual Studio 2019 16.3 正式发布,支持 .NET Core 3.0

微软正式发布了 Visual Studio 2019 16.3 版本&#xff0c;主要更新内容如下&#xff1a;.NET Core 3.0Visual Studio 版本 16.3 包括对 .NET Core 3.0 的支持。注意&#xff1a;如果使用的是 .NET Core 3.0&#xff0c;则需要使用 Visual Studio 16.3 或更高版本。.NET Core 桌…

【干货】规模化敏捷DevOps四大实践之持续探索CE(中英对照版)

本文翻译来自SAFe DevOps社群帅哥网友贾磊&#xff1a;高级质量经理&敏捷教练 曾就职于外企、国企、大型上市企业等&#xff0c;担任过测试工程师、测试经理、项目经理、敏捷教练、质量总监、高级质量经理等岗位。是一名敏捷变革的爱好者和践行者。爱好网球、羽毛球。正文原…

Spring Cloud——Eureka——架构体系

1、概述 Eureka包括两个端&#xff1a; Eureka Server&#xff1a;注册中心服务端&#xff0c;用于维护和管理注册服务列表。Eureka Client&#xff1a;注册中心客户端&#xff0c;向注册中心注册服务的应用都可以叫做Eureka Client&#xff08;包括Eureka Server本身&#x…

推荐.neter常用优秀开源项目系列之二

.net社区有很多优秀的开源项目&#xff0c;我们今天再推荐12个开源项目&#xff1b;1. Domain-Driven-Design-ExampleDDD 示例 挺不错的。github https://github.com/zkavtaskin/Domain-Driven-Design-Example2.SmartStoreNET开源的电商项目github https://github.com/smartsto…

Zookeeper: Zookeeper架构及FastLeaderElection机制

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/zookeeper/fastleaderelection/ 一、Zookeeper是什么 Zookeeper是一个分布式协调服务&#xff0c;可用于服务发现&#xff0c;分布式锁&#xff0c;分布式领导选举&#xff0c;配置管理等。 这一切的基础&am…

与时俱进 | 博客现已运行在 .NET Core 3.0 及 Azure 上

点击上方蓝字关注“汪宇杰博客”导语9月23日&#xff0c;微软正式发布了 .NET Core 3.0&#xff0c;这个版本具有大量新功能和改进。我也在第一时间将自己的博客网站更新到了 .NET Core 3.0&#xff0c;并且仍然跑在微软智慧云 Azure 国际版的应用服务上。本文总结了我在博客迁…

Zookeeper:基于Zookeeper的分布式锁与领导选举

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/zookeeper/distributedlock/ 1、Zookeeper特点 1.1 Zookeeper节点类型 如上文《Zookeeper架构及FastLeaderElection机制》所述&#xff0c;Zookeeper 提供了一个类似于 Linux 文件系统的树形结构。该树形结构…

Asp.Net Core Mvc Razor之RazorPage

在AspNetCore.Mvc.Razor命名空间中的RazorPage继承RazorPageBase&#xff0c;并定义的属性为&#xff1a;HttpContext Context 表示当前请求执行的HttpContextRazorPageBase定义为抽象类&#xff0c;并继承了接口&#xff1a;IRazorPageIRazorPage接口定义属性如下&#xff1a;…

Spring Cloud——Consul——架构体系

我们知道&#xff0c;Eureka 2.X因遇到问题&#xff0c;已停止研发。Spring Cloud官方建议迁移到Consul或者Zookeeper等其他服务发现中间件。 下面是 Spring Cloud 支持的服务发现软件以及特性对比&#xff1a; 一、Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具&…

ASP.NET Core 3.0 gRPC 双向流

目录ASP.NET Core 3.0 使用gRPCASP.NET Core 3.0 gRPC 双向流ASP.NET Core 3.0 gRPC 认证授权一.前言在前一文 《二. 什么是 gRPC 流gRPC 有四种服务类型&#xff0c;分别是&#xff1a;简单 RPC&#xff08;Unary RPC&#xff09;、服务端流式 RPC &#xff08;Server streami…

开源公司被云厂商“寄生”,咋整?

上周 OSS Capital 召集一些开源公司&#xff0c;组织了一场关于如何面对“云厂商给开源带来的危害”的会议。OSS Capital 是一家风险投资公司&#xff0c;该公司只投开源&#xff0c;其董事会合伙人之一是开源运动的先驱人物 Bruce Perens。网上有一个十分有名的“开源商业化独…

Spring Cloud Config——原理解析

springCloud config项目,用来为分布式的微服务系统中提供集成式外部配置支持,分为客户端和服务端 可以让你把配置放到远程服务器&#xff0c;目前支持本地存储、Git以及Subversion。 spring官方如下介绍: 简而言之: 通过配置服务(Config Server)来为所有的环境和应用提供外部配…

AWS加入.NET Foundation企业赞助商计划

.NET 走向开源&#xff0c;MIT许可协议。 微软为了推动.NET开源社区的发展&#xff0c;2014年联合社区成立了.NET基金会。.NET基金会是一个独立的组织&#xff0c;支持.NET社区和开源&#xff0c;旨在拓宽和加强.NET生态系统和社区。这可以通过多种方式完成&#xff0c;包括项目…

Spring cloud——Hystrix 原理解析

1、背景 分布式系统环境下&#xff0c;服务间类似依赖非常常见&#xff0c;一个业务调用通常依赖多个基础服务。如下图&#xff0c;对于同步调用&#xff0c;当库存服务不可用时&#xff0c;商品服务请求线程被阻塞&#xff0c;当有大批量请求调用库存服务时&#xff0c;最终可…

【B】替换 Quartz.net 默认使用的 MySql.Data 为 Mysqlconnector 的学习过程

文章转载授权级别&#xff1a;B无论是 Quartz.net 还是 MySql.Data 都是我们比较熟悉的库了&#xff0c;Quartz.net 如果配置为使用 MySql 数据库做持久化时&#xff0c;默认是硬编码了使用 MySql.Data 来操作 MySql 数据库的。下面是我的一些个人诉求和实践&#xff0c;和大家…

APM(应用性能管理)与Dapper原理介绍

一、APM&#xff08;应用性能管理&#xff09; 1.1 什么是APM&#xff1f; APM (Application Performance Management) 即应用性能管理&#xff08;应用性能监控&#xff09; APM主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化&#xff0c;提高企业IT应用的可靠…

asp.netcore3.0 使用 DbProviderFactories 连接数据库

在.netstandard2.0时 System.Data.Common 这个包里并没有加入DbProviderFactoriesDbProviderFactories类在.netframework中是非常重要的存在,依靠他可以适配各种数据库客户端&#xff08;sqlserver、mysql、sqllite等&#xff09;创建数据库连接。现在可以像.netframework中一样…

MIT 6.824 Lab 1 MapReduce

MapReduce 目标 根据论文所说明的&#xff0c;有MASTER和WORKER两类工作节点&#xff0c;以下实现大都按照论文所说的实现&#xff0c;但是在对MASTER的实现上有所改动&#xff1a; MASTER向WORKER发送心跳检测&#xff0c;这里改为了对分配出去的任务进行超时监控。 MASTER…