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 : PyCharm

import 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.stdin
    n = int(fp.readline())
    a = list(map(int, fp.readline().split()))
    ans = 0
    for i in range(n):
        ans += a[i] * a[i] * (n - 1)
    s = 0
    for i in range(n):
        ans -= s * a[i] * 2
        s += 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 : PyCharm

import 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.stdin
    n = int(fp.readline())
    ans = 0
    for i in range(1, n):
        ans += n / i
    print(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;
        else
            nst = 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.mfbz.cn/a/309937.html

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

相关文章

MYSQL篇--事务机制高频面试题

事务 1 什么是数据库事务&#xff1f; 事务是一个不可分割的数据库操作序列&#xff0c;也是数据库并发控制的基本单位&#xff0c;其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。…

图纸版本管理混乱怎么办?彩虹PDM系统帮你搞定!

在现代制造业和工程领域&#xff0c;图纸版本管理的混乱常常是一个棘手的问题。不同版本的图纸可能导致严重的错误和生产问题&#xff0c;影响了产品质量和交付时间。然而&#xff0c;有一个强大的工具可以帮助企业解决这个问题&#xff0c;那就是PDM产品数据管理系统。彩虹PDM…

云流量回溯的工作原理及关键功能

云计算和网络技术的快速发展为企业提供了更灵活、高效的业务运营环境&#xff0c;同时也引发了一系列网络安全挑战。在这个背景下&#xff0c;云流量回溯成为网络安全领域的一个关键技术&#xff0c;为企业提供了对网络活动的深入洞察和实时响应的能力。 一、 云流量回溯的基本…

pkuseg按照用户自定义词典分词错误修正

import pkusegc pkuseg.pkuseg(user_dict"./data/dict.txt") sentence 数字传播实验班 print(c.cut(sentence))字典中包含“”数字传媒与人文学院"&#xff0c;添加自定义词典后&#xff0c;文本被错误分成““数字传 播 实验班” &#xff0c;debug发现solve…

OpenShift 4 - 在 OpenShift 上运行物体检测 AI 应用

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 RHODS 2.5.0 的环境中验证 说明&#xff1a;请先根据《OpenShift 4 - 部署 OpenShift AI 环境&#xff0c;运行 AI/ML 应用&#xff08;视频&#xff09;》一文完成 OpenShift AI 环境…

python爬虫实战(8)--获取虎pu热榜

1. 需要的类库 import requests from bs4 import BeautifulSoup import pandas as pd2. 请求地址 def fetch_data():url "https://bbs.xxx.com/" # Replace with the actual base URLresponse requests.get(url)if response.status_code 200:return response.c…

2024年最火爆的本地生活服务商平台推荐!

随着互联网的发展&#xff0c;本地生活团购服务市场逐渐成为各大平台争夺的焦点。视频号、DY等短视频平台纷纷入局&#xff0c;希望通过本地生活团购的形式吸引更多的用户&#xff0c;提高平台的活跃度和黏性。对于想要成为本地生活团购服务商的创业者来说&#xff0c;都不想放…

web期末作业网页设计——JavaScript

目录 一.作品简介 二.网页效果 首页 花语 登录界面 注册界面 三.网页代码 首页 登录界面 注册界面 视频界面 一.作品简介 网站系统文件种类包含&#xff1a;html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件。 网页作品代码简单&#xff…

2024 年 10 款最佳 Android 手机数据恢复软件榜单

当您因某些不合时宜的事故而丢失 Android 设备上的重要数据时&#xff0c;这真是一场灾难。如果您遇到这样的情况&#xff0c;请不要担心。我们列出了一些最好的 Android 数据恢复软件&#xff0c;可以帮助您使用 PC 检索手机丢失的数据。 在用于存储重要数据的各种存储设备中…

你真的掌握了“C语言分支循环”吗

目录 前言 1. if语句 1.1 if 1.2 else 1.3 分支中包含多条语句 1.4 嵌套if 1.5 悬空else问题 2. 关系操作符 3. 条件操作符 4. 逻辑操作符&#xff1a;&& , || , &#xff01; 4.1 逻辑取反运算符 4.2 与运算符 4.3 或运算符 4.4 练习&#xff1a;闰年的判…

【一周年创作总结】人生是远方的无尽旷野呀

那一眼瞥见的伟大的灵魂&#xff0c;却似模糊的你和我 文章目录 &#x1f4d2;各个阶段的experience&#x1f50e;大一寒假&#x1f50e;大一下学期&#x1f50e;大一暑假&#x1f50e;大二上学期&#xff08;现在&#xff09; &#x1f354;相遇CSDN&#x1f6f8;自媒体&#…

uniapp使用wxml-to-canvas开发小程序保存canvas图片

微信小程序官方解决方案&#xff1a;wxml-to-canvas 使用wxml-to-canvas要知道一些前提条件 1、只能画view&#xff0c;text&#xff0c;image 2、每个元素必须要设置宽高 3、默认是flex布局&#xff0c;可以通过flexDirection: "column"来改变排列方式 4、文字 必…

云服务器搭建GitLab

经验总结&#xff1a; 1、配置需求&#xff1a;云服务器内存最低4G 2、内存4G的云服务器&#xff0c;在运行容器后&#xff0c;会遇到云服务器操作卡顿问题&#xff0c;这里有解决方案 转载&#xff1a;服务器搭建Gitlab卡顿解决办法-CSDN博客 3、云服务器的操作系统会影响…

ROS建图之ROS标准REP-105(官方搬运翻译+个人理解)

REP-105 是一个由 Wim Meeussen 于 2010年10月27日 创建并维护的&#xff0c;名为 "Coordinate Frames for Mobile Platforms"&#xff08;移动平台的坐标系框架&#xff09;的 ROS Enhancement Proposal&#xff08;REP&#xff09;。ROS官方教程&#xff1a;REP 10…

Page 251~254 Win32 GUI项目

win32_gui 源代码&#xff1a; #if defined(UNICODE) && !defined(_UNICODE)#define _UNICODE #elif defined(_UNICODE) && !defined(UNICODE)#define UNICODE #endif#include <tchar.h> #include <windows.h>/* Declare Windows procedure */…

【Vue2】一个数组按时间分割为【今年】和【往年】俩个数组

一. 需求 后端返回一个数组&#xff0c;前端按时间维度将该数组的分割为【今年】和【往年】俩个数组后端返回的数组格式如下 timeList:[{id:1,billTime:"2024-01-10",createTime:"2024-01-10 00:00:00",status:0},{id:2,billTime:"2022-05-25"…

EVE-NG初次启动及WEB客户端访问来了

本章从虚拟机Eve模拟器启动、模拟器的启动配置、浏览器访问三个步骤讲解EVE-NG的首次启动。 1.启动模拟器 打开虚拟机环境&#xff0c;启动安装好的EVE-NG虚拟机&#xff0c;进入如下界面。 登录时输入社区版默认账户是root&#xff0c;密码是eve&#xff0c;完成登陆。 1.配置…

00后网文作家年入百万,跻身“十二天王”之列!

各位书友们&#xff0c;有没有觉得现在网文界越来越风起云涌&#xff1f;最近&#xff0c;2023年网络文学榜样作家“十二天王”出炉&#xff0c;其中一位00后作家季越人引起了广泛关注&#xff01;这位公共管理系的大四学生凭借他的第一部网文小说《玄鉴仙族》一鸣惊人&#xf…

Ubuntu系统中指定端口防火墙状态查询与操作

浏览器访问&#xff1a; 如果遇到如山图所示的情况&#xff0c;既有可能是防火墙的问题。具体解决方案参照如下&#xff1a; 1.指定端口的防火墙状态查询 &#xff08;1&#xff09;查询命令 sudo ufw status | grep 8081/tcp #其中8081为要查询的端口号 如果端口是打开的…

达梦数据库的使用

文章目录 一、安装程序介绍1.dm管理工具2.dm服务查看器3.数据迁移工具 二、达梦数据库联机备份与还原操作1.配置归档2.备份1.归档备份 3.备份还原 一、安装程序介绍 官网文档&#xff1a;https://eco.dameng.com/docs/zh-cn/faq/faq-import-export.html 达梦数据库安装成功后…