AtCoder ABC194

这期比193稍微简单一点

C - Squared Error

手玩一下:
N = 3 N=3 N=3
展开得
a 2 + b 2 − 2 a b + b 2 − c 2 − 2 b c + a 2 + c 2 − 2 a c a^2+b^2-2ab+b^2-c^2-2bc+a^2+c^2-2ac a2+b22ab+b2c22bc+a2+c22ac
每个数平方项都要计算 n − 1 n-1 n1
减的那一份可以按枚举一个数来算,发现剩下的项是前缀和

# -*- coding: utf-8 -*-
# @time     : 2023/6/2 13:30
# @file     : atcoder.py
# @software : PyCharmimport bisect
import copy
import sys
from itertools import permutations
from sortedcontainers import SortedList
from collections import defaultdict, Counter, deque
from functools import lru_cache, cmp_to_key
import heapq
import math
sys.setrecursionlimit(100010)def main():items = sys.version.split()fp = open("in.txt") if items[0] == "3.10.6" else sys.stdinn = int(fp.readline())a = list(map(int, fp.readline().split()))ans = 0for i in range(n):ans += a[i] * a[i] * (n - 1)s = 0for i in range(n):ans -= s * a[i] * 2s += a[i]print(ans)if __name__ == "__main__":main()

D - Journey

纯正的数学题
在这里插入图片描述

三个性质:
1.取什么数是无关的,答案只与当前有几个数相关
2.类似马尔科夫随机过程,有自环
每个过程的期望独立,总期望=每个过程的期望之和
3.如图上,点i有 p = ( n − 1 ) / n p=(n-1)/n p=(n1)/n的概率用1步到下一个点i+1
期望步数= 1 / p 1/p 1/p
证明:设期望= E X EX EX
E X = ( 1 − p ) ( E X + 1 ) + p ( 1 ) EX=(1-p)(EX+1)+p(1) EX=(1p)(EX+1)+p(1)
得证

# -*- coding: utf-8 -*-
# @time     : 2023/6/2 13:30
# @file     : atcoder.py
# @software : PyCharmimport bisect
import copy
import sys
from itertools import permutations
from sortedcontainers import SortedList
from collections import defaultdict, Counter, deque
from functools import lru_cache, cmp_to_key
import heapq
import math
sys.setrecursionlimit(100010)def main():items = sys.version.split()fp = open("in.txt") if items[0] == "3.10.6" else sys.stdinn = int(fp.readline())ans = 0for i in range(1, n):ans += n / iprint(ans)if __name__ == "__main__":main()

E - Mex Min

在一个10^6的范围内求是否有数,第一眼的感觉是BIT
但本题不是求是否有数,而是求第一个没有数的位置,可以二分计数count(x)=x
用BIT维护是否有数的数组
要注意一些trick的地方,比如出滑动窗口的数和入窗口的数是同一个数

#include <cstring>
#include <climits>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef vector<int> vi;int n, m;
int a[1500005];
int c[1500005];
int cnt[1500005];int inline lowbit(int x) {return x & -x;
}void add(int x, int val) {while (x <= n) {c[x] += val;x += lowbit(x);}
}int get(int x) {int ret = 0;while(x > 0) {ret += c[x];x -= lowbit(x);}return ret;
}bool check(int x) {return get(x) == x;
}int main() {//freopen("in.txt", "r", stdin);scanf("%d%d", &n, &m);for(int i = 0; i < n; ++ i) {scanf("%d", &a[i]);a[i] ++;}for (int i = 0; i < m; ++ i) {cnt[a[i]] += 1;}for (int i = 1; i <= n; ++ i) {if(cnt[i]) add(i, 1);}int ans = n;for(int i = 0; i + m - 1 < n; ++ i) {int lo = 1, hi = n + 1;while(lo < hi) {int mi = (lo + hi) / 2;bool r = check(mi);if (r) lo = mi + 1;else hi = mi;}ans = min(ans, lo - 1);// printf("%d\n", ans);int j = i + m;if (i + m >= n) break;cnt[a[i]] --;cnt[a[j]] ++;if (a[i] != a[j]) {if (cnt[a[i]] == 0) add(a[i], -1);if (cnt[a[j]] == 1) add(a[j], 1);}}printf("%d\n", ans);return 0;
}

F - Digits Paradise in Hexadecimal

在1…N中寻找满足某种条件的数个数,是一个典型的数位dp题。

搜索的时候用bitmask表示搜索状态,但搜索到哪几个数字并不重要,只需要记录搜索到数字的个数即可,这是本题的技巧。

写了一个记忆化搜索,优化一下应该更快。
设dp[pos][c][cap][lead]
pos 当前要搜索的位置
c 当前状态(开始搜索前)不同数的个数
cap 当前搜索前是否抵达上界
lead 当前搜索前是否有非零数
答案为dp[0][0][1][0]

#define _CRT_SECURE_NO_WARNINGS#include <iostream>
#include <string>
#include <cstring>
#include <climits>
#include <cstdlib>
#include <map>
#include <set>
#include <vector>
#include <queue>
#include <unordered_map>
#include <algorithm>
#define LT(x) (x * 2)
#define RT(x) (x * 2 + 1)using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;char s[200020];
int a[200020];
int k, n;
ll mod = (ll)(1e9 + 7);
ll dp[200020][17][2][2];
int mem[1 << 17];int pop_count(int x) {if (x == 0) return 0;if (mem[x]) return mem[x];int ret = 0;while (x) {x -= x & -x;ret++;}return mem[x] = ret;
}ll get(int pos, int st, int cap, int lead) {int c = pop_count(st);if (c > k) return 0;if (pos == n) {return c == k && lead;}if (dp[pos][c][cap][lead] != -1) return dp[pos][c][cap][lead];int m = cap ? a[pos]: 15;ll ret = 0;for (int d = 0; d <= m; ++d) {int ncap = cap;if (d < m) ncap = 0;int nst = st;if (lead == 0 && d == 0)nst = st;elsenst = st | (1 << d);int nlead = lead;if (d) nlead = 1;ret += get(pos + 1, nst, ncap, nlead);ret %= mod;}//printf("%d %d %d %d %lld\n", pos, c, cap, lead, ret);return dp[pos][c][cap][lead] = ret;
}int main() {//freopen("in.txt", "r", stdin);scanf("%s", s);scanf("%d", &k);n = strlen(s);for (int i = 0; i < n; ++i) {if (s[i] >= '0' && s[i] <= '9') {a[i] = s[i] - '0';}else {a[i] = s[i] - 'A' + 10;}}memset(dp, 0xff, sizeof(dp));ll ans = get(0, 0, 1, 0);printf("%lld\n", ans);return 0;
}

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

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

相关文章

LeetCode1124. Longest Well-Performing Interval

文章目录 一、题目二、题解 一、题目 We are given hours, a list of the number of hours worked per day for a given employee. A day is considered to be a tiring day if and only if the number of hours worked is (strictly) greater than 8. A well-performing in…

C语言--结构体详解

C语言--结构体详解 1.结构体产生原因2.结构体声明2.1 结构体的声明2.2 结构体的初始化2.3结构体自引用 3.结构体内存对齐3.1 对齐规则3.2 为什么存在内存对齐3.3 修改默认对⻬数 4. 结构体传参 1.结构体产生原因 C语言将数据类型分为了两种&#xff0c;一种是内置类型&#xf…

蓝桥杯单片机组备赛——数码管动态显示

✨文章内容会不断优化&#xff0c;如果你感兴趣的话&#xff0c;欢迎点藏收藏关注我哟 &#x1f9e8;如果文章有哪里看不懂的欢迎评论区或私信留言&#xff0c;我会及时回复的 ⏰如果文章出现错误&#xff0c;欢迎指正&#xff0c;看到后我会马上改正 文章目录 一、动态显示原理…

Pandas实战100例 | 案例 29: 时间序列分析 - 滚动窗口计算

案例 29: 时间序列分析 - 滚动窗口计算 知识点讲解 时间序列数据分析是数据科学中的一个重要领域。Pandas 提供了处理时间序列的强大功能&#xff0c;包括滚动窗口计算。滚动窗口计算可以用于平滑时间序列数据&#xff0c;识别趋势和模式。 滚动窗口计算: 使用 rolling 方法…

oracle 19c容器数据库data dump数据泵传输数据(3)---完全传输

目录 查看pdb1 创建pdb2 从pdb1 中导出元数据 在pdb2中导入元数据&#xff08;dmp文件&#xff09; Full Transportable Export/Import: Example 只传输除了system&#xff0c;sysaux&#xff0c;temp&#xff0c;undo以外的用户表空间&#xff0c;這種方式傳輸的是用戶自定…

一文学会服务网格与istio使用

服务网格 现代应用程序通常被设计成微服务的分布式集合&#xff0c;每个服务执行一些离散的业务功能。服务网格是专门的基础设施层&#xff0c;包含了组成这类体系结构的微服务网络。 服务网格不仅描述了这个网络&#xff0c;而且还描述了分布式应用程序组件之间的交互。所有在…

如何生成文本: 通过 Transformers 用不同的解码方法生成文本

如何生成文本: 通过 Transformers 用不同的解码方法生成文本 假设 $p0.92$&#xff0c;Top-p 采样对单词概率进行降序排列并累加&#xff0c;然后选择概率和首次超过 $p92%$ 的单词集作为采样池&#xff0c;定义为 $V_{\text{top-p}}$。在 $t1$ 时 $V_{\text{top-p}}$ 有 9 个…

运用AI搭建中间服务层(五)

其他文件的修改 ValuesControllers.cs 注意Post的参数从[FromBody]变成了[FromForm]&#xff0c;以便接收上传的图片流数据 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using CognitiveMi…

Halcon滤波器sobel_amp算子

Halcon滤波器sobel_amp算子 Halcon 提供了大量的边缘滤波器&#xff0c;最常用的是Sobel滤波器。它是一种经典的边缘检测算子&#xff0c;速度和效率都非常令人满意。其在Halcon中对应的算子为sobel amp算子和sobel_dir算子&#xff0c;二者都是使用Sobel算子进行边缘检测。前…

【LangChain学习之旅】—(8) 输出解析:用OutputParser生成鲜花推荐列表

【LangChain学习之旅】—&#xff08;8&#xff09; 输出解析&#xff1a;用OutputParser生成鲜花推荐列表 LangChain 中的输出解析器Pydantic&#xff08;JSON&#xff09;解析器实战第一步&#xff1a;创建模型实例第二步&#xff1a;定义输出数据的格式第三步&#xff1a;创…

运算电路(1)——加法器

一、引言 微处理器是由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器能完成取指令、执行指令&#xff0c;以及与外界存储器和逻辑部件交换信息等操作&#xff0c;是微型计算机的运算控制部分。它可与存储器和外围电路芯片…

VB6,VBA保存ADO记录集并重新加载更新adPersistADTG

便携式计算&#xff08;例如&#xff0c;使用笔记本电脑&#xff09;催生了对可以同时在连接和断开状态下运行的应用程序的需求。 ADO 增加了这方面的支持&#xff0c;使开发人员能够将客户端游标 Recordset 保存到磁盘并稍后重新加载。 有多种场景可以使用这种类型的功能&…

Redis面试题13

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式是什么&#xff1f; Redis 的发布订阅模式允许多个客户端订阅一个频道&#xff0c;当消息被发布到该频道时&#xff0c;所有订阅该频道的客户端都会收到该消息。Redis 的发布订阅模式分为两个角色&#xff1a;发布者和订阅…

K8S Nginx Ingress Controller client_max_body_size 上传文件大小限制

现象 k8s集群中&#xff0c;上传图片时&#xff0c;大于1M就会报错 413 Request Entity Too Large Nginx Ingress Controller 的版本是 0.29.0 解决方案 1. 修改configmap kubectl edit configmap nginx-configuration -n ingress-nginx在 ConfigMap 的 data 字段中设置参数…

Zabbix监控系统及部署

目录 前言 一个完整的项目 业务架构 运维架构 优秀监控软件的好处 1.zabbix概述 zabbix是什么 zabbix监控原理 Zabbix6.0新特性 1.Zabbix server高可用防止硬件故障或计划维护期的停机 2.Zabbix6.0 LTS新增Kubernetes监控功能&#xff0c;可以在Kubernetes系统从多个…

JS中的File(一):Blob对象详解

一、定义 Blob是一个装着二进制数据的容器对象。Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取&#xff0c;也可以转换成 ReadableStream 来用于数据操作。 二、属性 size&#xff1a;只读属性&#xff0c;Blob中的字节数type&…

前端工程化相关

工具方法&#xff1a; 知道软件包名&#xff0c;拿到源码或者路径的方法 在浏览器输入以下内容&#xff0c;就可以找到你想要的。。。 unpkg.com/输入包名 一、模块化 ESM特性清单&#xff1a; 自动采取严格模式&#xff0c;忽略“use strict”每个ESM模块都是单独的私有作用…

nSum的java解法

两数之和 1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 可以使用哈希表的方法来解决 如果哈希表中不存在 target - a 这个元素&#xff0c;将这个元素值座位 key&#xff0c;下标作为 value 加入到哈希表中如果存在&#xff0c;返回两个元素的下标即可如果遍历到数组…

网络——华为与华三

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 写在前面 大家好&#xff0c;我是网络豆&#xff0…

Elasticsearch:是时候离开了! - 在 Elasticsearch 文档上使用 TTL

作者&#xff1a;来自 Elastic David Pilato 想象一下&#xff0c;圣诞老人必须向世界上所有的孩子们分发礼物。 他有很多工作要做&#xff0c;他需要保持高效。 他有一份所有孩子的名单&#xff0c;并且知道他们住在哪里。 他很可能会将礼物按区域分组&#xff0c;然后再交付。…