AtCoder ABC152

C - Low Elements
从前往后维护一个最长下降子序列

D - Handstand 2
设f[a][b]代表当前第一个数字为a第二个数字为b的数总个数
递推一下就可以。注意a==b的情况。

# -*- 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(1000)


def main():
    items = sys.version.split()
    if items[0] == '3.10.6':
        fp = open("in.txt")
    else:
        fp = sys.stdin

    n = int(fp.readline())
    d = [[0] * 10 for _ in range(10)]
    ans = 0
    for i in range(1, n + 1):
        s = str(i)
        a, b = int(s[0]), int(s[-1])
        d[a][b] += 1
        if a != b:
            ans += d[b][a] * 2
        else:
            ans += (d[a][a] - 1) * 2 + 1
    print(ans)


if __name__ == "__main__":
    main()

E - Flatten
数论题,需要分解质因数和逆元,然而python改变了一切

# -*- 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(1000)


def main():
    items = sys.version.split()
    if items[0] == '3.10.6':
        fp = open("in.txt")
    else:
        fp = sys.stdin
    n = int(fp.readline())
    a = list(map(int, fp.readline().split()))

    def lcm(x, y):
        x0, y0 = x, y
        if x0 > y0:
            x0, y0 = y0, x0
        while x0:
            x0, y0 = y0 % x0, x0
        return x * y // y0

    l = a[0]
    for i in range(1, n):
        l = lcm(l, a[i])

    ans = 0
    mod = 10 ** 9 + 7
    for i in range(n):
        ans += l // a[i]
        ans %= mod
    print(ans % mod)


if __name__ == "__main__":
    main()

F - Tree and Constraints
反过来考虑。比如下图中有两个constraint,原题求满足所有的限制的方案,需要枚举每种黑色放置的方案,很不好做。如果反过来求不满足限制的方案,即在某些限制路径上全填白色,求总的方案数,那么就比较好做。
由于不同的限制路径下边的集合会有交集,因此需要使用容斥原理计算。设取不同的限制路径的状态集合为 s s s,计算状态下边的并集中边数量为 x x x,不满足限制的方案数等于 a n s = ∑ s ∈ S ( − 1 ) ∣ s ∣ + 1 2 n − 1 − x ans=\sum_{s\in S}(-1)^{|s|+1}2^{n-1-x} ans=sS(1)s+12n1x
如下图中按顺序对边和点0-index编号,
第一个状态集合是0b01,代表限制状态0
f(1)=2,因为边2可以取两种颜色,边0边1全取白
第二个状态集合是0b10,代表限制状态1
f(2)=2,同理
第三个状态集合0b11,代表两个限制状态都要取
在这种情况下,不满足条件的方案只有1个,就是三条边全取白
所以最终不满足任一约束的方案数是2+2-1=3个,因为三条边全取白的方案在0b01和0b10中都计数了一次,因此按照容斥原理予以减去
在这里插入图片描述

# -*- 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(1000)


def main():
    items = sys.version.split()
    if items[0] == '3.10.6':
        fp = open("in.txt")
    else:
        fp = sys.stdin
    n = int(fp.readline())
    g = [[] for _ in range(n)]
    fa = [-1] * n
    dep = [0] * n
    edge_mask = {}
    for i in range(n - 1):
        u, v = map(int, fp.readline().split())
        u -= 1
        v -= 1
        g[u].append(v)
        g[v].append(u)
        edge_mask[(u, v)] = edge_mask[(v, u)] = i

    def dfs0(u, f):
        for v in g[u]:
            if f == v:
                continue
            fa[v] = u
            dep[v] = dep[u] + 1
            dfs0(v, u)

    def lca(u, v):
        while u != v:
            if dep[u] > dep[v]:
                u = fa[u]
            else:
                v = fa[v]
        return u

    dfs0(0, -1)
    m = int(fp.readline())
    con = [0] * m
    for i in range(m):
        u, v = map(int, fp.readline().split())
        u -= 1
        v -= 1
        l = lca(u, v)
        while u != l:
            fu = fa[u]
            j = edge_mask[(fu, u)]
            con[i] |= 1 << j
            u = fu
        while v != l:
            fv = fa[v]
            j = edge_mask[(fv, v)]
            con[i] |= 1 << j
            v = fv

    bit_count = [0] * (1 << m)
    bit = [0] * (1 << m)
    for i in range(m):
        bit[1 << i] = i
    for i in range(1, 1 << m):
        if i & 1 == 1:
            bit_count[i] = bit_count[i >> 1] + 1
        else:
            bit_count[i] = bit_count[i >> 1]

    def get_bit_count(val):
        ret = 0
        while val:
            ret += val & 1
            val >>= 1
        return ret

    union = [0] * (1 << m)
    union[0] = 0
    temp = 0
    for i in range(1, 1 << m):
        lb = i & -i
        j = bit[lb]
        union[i] = union[i - lb] | con[j]
        x = get_bit_count(union[i])
        t = 1 << (n - 1 - x)
        if bit_count[i] & 1:
            temp += t
        else:
            temp -= t
    ans = (1 << n - 1) - temp
    print(ans)


if __name__ == "__main__":
    main()

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

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

相关文章

java初学者踩得雷

目录 一段子父类调用重写的代码 1. 重写的代码 2. 执行结果 3. 分析原因 4. 总结概括 一段子父类调用重写的代码 这是一段有坑的代码&#xff0c;我们创建一个子类A和父类B&#xff0c;A中重写function方法&#xff0c;并且在B的构造方法中调用function 1. 重写的代码 …

Huggingface

1 介绍 Hugging Face 是一个开源模型社区。目前已经共享 300k 模型&#xff0c;100k 应用&#xff0c;50k 数据集&#xff08;截至 231114 数据&#xff09;&#xff0c;可视为 AI 界的 github。 2 官网 https://huggingface.co/ 3 主要功能 3.1 Models 模型 大家都用过就…

BUUCTF 爱因斯坦 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 下载附件&#xff0c;解压得到一张.jpg图片。 密文&#xff1a; 解题思路&#xff1a; 1、因为题目没有什么提示&#xff0c;我们就一一尝试。将图片放到StegSolve中&#xff0c;在查看图片的File Format时&#x…

长假想要获得理想投放效果?巨量千川给出解决方案

巨量千川一直对商家的体验格外关注&#xff0c;了解到许多千川投手和商家在长假投放存在困难时&#xff0c;便深入了解原因&#xff0c;并针对问题提出了可行的解决方案。 发现原因有三&#xff1a; 其一&#xff0c;每逢节假日&#xff0c;大家都明白流量都会相对充足&#xf…

【postgresql】查看数据中表的信息

切换到postgresql数据库&#xff0c;各种不适应吧。 有个需求需要查询数据表的各种信息。 下面我们一起学习吧。 PostgreSQL: Documentation PostgreSQL: Documentation pg_namespace 存储名字空间。名字空间是 SQL 模式下层的结构&#xff1a;每个名字空间有独立的关系&am…

【模式识别】计算机科学博士课程作业解析

作业二 2.1 最小风险贝叶斯决策分类计算 1、请给出以下问题的求解步骤&#xff0c;逐步给出计算过程&#xff1a; 已知条件为 P(w_1) 0.9 P(w_2)0.1 p(x|w_1)0.2 p(x|w_w)0.4 λ 11 0 \lambda_{11}0 λ11​0, λ 12 6 \lambda_{12}6 λ12​6 λ 21 1 \lambda_{21}1 …

优秀智慧园区案例 - 新华三未来工厂制造园,园区业务创新及零碳升级

目录 一、新华三未来工厂制造园建设背景 二、未来工厂制造园总体设计思路 三、未来工厂制造园建设内容 四、关键技术及创新点 五、应用效益与推广 关键词&#xff1a;智慧园区解决方案&#xff0c;智慧园区建设总体方案&#xff0c;智慧园区建设规划方案&#xff0c;智慧园…

label

可以为input元素定义标注。点击label标签内文本时&#xff0c;浏览器自动将光标转到或选择对应表单元素上。 label中for属性应当与相关元素的id属性相同

详述使用CubeMX配置STM32RCC时钟

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言一…

2013年01月16日 Go生态洞察:并发不是并行

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

DBeaver clickhouse 时区不对 时间少了8小时,本人的有效,网上好多都是扯犊子

特别注意&#xff1a;use_time_zone Asia/Shanghai use_server_time_zone true

知识竞赛中常用的物料有哪些

办一场知识竞赛&#xff0c;需要准备的物料要根据具体竞赛规则和流程来定。但是要仔细分析起来&#xff0c;还是可以做一个常用物料清单的&#xff0c;下面我将知识竞赛活动中常用的物料做了一个分类和列表&#xff0c;大家以后在竞赛活动举办过程中&#xff0c;可以参考。 一、…

单独设置echarts图例样式

参考&#xff1a;echarts-legend legend: [{data: [{name: 正常,icon: rect}],itemWidth: 16,itemHeight: 4,top: 6%,left: 35%,textStyle: {color: #626C78,fontSize: 14}},{data: [{name: 异常,icon: rect}],itemWidth: 16,itemHeight: 4,top: 6%,left: 50%,textStyle: {col…

JavaScript数据类型和存储区别

目录 一、原始数据类型 二、引用数据类型 三、存储区别 四、常见错误 JavaScript是一种动态类型语言&#xff0c;这意味着变量可以在程序执行过程中改变其数据类型。了解JavaScript中的数据类型和它们的存储方式对于编写高效和可维护的代码至关重要。 在JavaScript中&…

苹果手机通话记录怎么恢复?这3个方法就足够!

通话记录是手机中的重要数据之一&#xff0c;它记录了用户与联系人的通话信息&#xff0c;包括通话时间、通话时长、通话号码等等。 有时候&#xff0c;我们可能不小心删除了通话记录&#xff0c;或者想找回之前的通话记录以此来回忆起一些事情。那么&#xff0c;苹果手机通话…

基于安卓android微信小程序的快递取件及上门服务系统

项目介绍 本文从管理员、用户的功能要求出发&#xff0c;快递取件及上门服务中的功能模块主要是实现管理员服务端&#xff1b;首页、个人中心、用户管理、快递下单管理、预约管理、管理员管理、系统管理、订单管理&#xff0c;用户客户端&#xff1b;首页、快递下单、预约管理…

电压放大器适合什么应用

电压放大器是电子电路中常见的一种放大器&#xff0c;广泛应用于各个领域。本文将详细介绍电压放大器的特点和适用的主要应用。 电压放大器具有放大信号的功能&#xff0c;可以将输入信号的幅度放大数倍或数十倍。这使得电压放大器在各种需要信号增强的应用中非常重要。以下是电…

一寸证件照排版工具,在线将证件照排版在相纸上

证件照是我们经常使用到的一种办事资料&#xff0c;考试报名和办理个人证件都是需要的&#xff0c;很多时候需要纸质照片&#xff0c;如果我们手头有打印机的话就很方便了&#xff0c;但相纸都是固定尺寸的例如5寸、6寸相纸&#xff0c;而数码证件照的尺寸则不固定&#xff0c;…

isomorphic-fetch库代码示例

isomorphic-fetch库的爬虫程序。 typescript // 引入isomorphic-fetch库 import fetch from isomorphic-fetch; // 设置 const proxy ; // 定义视频URL const url ; // 使用fetch获取视频数据 fetch(url, { method: GET, headers: { Accept: application/json, …