AtCoder ABC152

news2024/11/25 0:36:11

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()

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

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

相关文章

打造全身视角的医院可视化能源监测管理平台,实现医院能源可视化管理

医院是大型公共建筑的一种&#xff0c;随着医院规模的不断扩大&#xff0c;医院能源消耗剧增&#xff0c;能源消耗居高不下。医院对于能源监管的需求也越来越高。医院建立一套能耗监测管理平台&#xff0c;对于降低医院能耗有着非常重要的作用。 医院能耗存在的问题 1、医院能…

如何挑选RPA开发商?

其实&#xff0c;只要在这个行业调查的时间足够&#xff0c;不难发现里面有很多弯弯绕绕。 首先&#xff0c;RPA厂商虽然很多&#xff0c;但是优秀的RPA厂商就那么几家&#xff0c;它们都有各自擅长的领域&#xff0c;像金智维&#xff0c;就是在金融领域、政务领域&#xff1…

释放潜能,加速创新 | 低代码赋能企业数据资产管理(附案例)

在当今数字化快速发展的时代&#xff0c;企业要想保持竞争力&#xff0c;就必须紧跟潮流&#xff0c;不断进行自我革新。其中&#xff0c;数字化转型已成为企业发展的重要一环&#xff0c;在这个过程中&#xff0c;数据资产作为企业核心竞争力的关键组成部分&#xff0c;其管理…

pytorch tensor数据类型转换为python数据

一、item() input: x torch.tensor([1.0]) x.item()output: 1.0二、tolist() input: a torch.randn(2, 2) a.tolist() a[0,0].tolist()output: [[0.012766935862600803, 0.5415473580360413],[-0.08909505605697632, 0.7729271650314331]]0.012766935862600803

Java 通过POI快速导入带图片的excel并且图片不会丢失

## 通过POI快速导入带图片的excel并且图片不会丢失导入带图片的excel,这里也是研究了很久,在之前的博客中也有说明过,在项目使用过程中,发现很多时候导入响应很慢,而且每次导入图片都会丢失几张,所以又花了点时间研究修改了下,具体如下: 这边在导入时,通过自定义注解…

java初学者踩得雷

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

thinkphp5 原生sql查询及取返回值

刚接触php&#xff0c;以前大量数据库都是直接写sql的&#xff0c;方便&#xff0c;好管理&#xff0c; 用thinkphp后&#xff0c;发现没有sql&#xff0c;对mvc模式还没深入了解&#xff0c;但这边要在上面写一些接口&#xff0c;有涉及数据库查询&#xff0c;修改等&#xf…

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

作业二 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 …

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

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

NTTRU:兼容 NTT 算法的 NTRU-based KEM 方案

参考文献&#xff1a; [CT65] Cooley J W, Tukey J W. An algorithm for the machine calculation of complex Fourier series[J]. Mathematics of computation, 1965, 19(90): 297-301.[Mont85] Montgomery P L. Modular multiplication without trial division[J]. Mathemat…

⛳面试题-简述并分析ThreadLocalMap的key为什么是弱引用

⛳目录 简述 ThreadLocalMap 的 key 为弱引用的原因&#xff1a;分析&#xff1a;注意 &#xff1a; ThreadLocalMap 是 Java 中与 ThreadLocal 相关的一个重要类&#xff0c;用于在每个线程中存储和访问线程本地变量。在 ThreadLocalMap 中&#xff0c;key 为弱引用的主要原因…

ModuleNotFoundError_ No module named ‘Crypto‘

当要使用 python 进行加密数据的时候报错了 from Crypto.Util.Padding import pad, unpad from Crypto.Cipher import AES报错 File "F:\huisu.py", line 1, in <module>from Crypto.Util.Padding import pad, unpad ModuleNotFoundError: No module named Cr…

千兆路由只有200M,原来是模式选择不对,也找到了内网不能通过动态域名访问内部服务的原因

本来1000M的宽带接入的&#xff0c;但是一测试发现只有200M&#xff0c;把电信叼了过来&#xff0c; 一测试发现宽带没问题&#xff0c;网线正常&#xff0c;网卡正常&#xff0c;只有可能是路由器的问题了&#xff0c;尴尬了&#xff0c;赶紧给满意好评放他走。回头好好研究一…

企业年报API:打开企业经营大数据的新视角

引言 随着数字化转型的深入推进&#xff0c;企业年报API作为企业信息化建设中的重要组成部分&#xff0c;受到了越来越多企业和机构的关注和重视。而且&#xff0c;随着中国经济的快速发展&#xff0c;企业年报也成为投资者、监管机构以及相关利益方了解企业经营状况的重要途径…

数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114)

数据库管理-第116期 Oracle Exadata 06-ESS-下&#xff08;202301114&#xff09; 距离上一次正儿八经的技术分享又过了整整一周了&#xff0c;距离上一期Exadata专题文章也过了11天了&#xff0c;今天一鼓作气把ESS写完&#xff0c;毕竟明天又要飞北京了。 1 Smart Scan 其…

H5三网魔幻手游【众神传奇】win服务端+GM授权后台+架设教程

搭建资源下载地址&#xff1a;H5三网魔幻手游【众神传奇】win服务端GM授权后台架设教程-海盗空间

安全好用性价比高的远程协同运维软件有吗?

据悉不少IT专业人员认为&#xff0c;远程运维风险性更高&#xff0c;更容易给企业带来更大的风险。所以不少运维人员都在求一款安全好用性价比高的远程协同运维软件&#xff0c;因为下班需要&#xff0c;因为碰到IT难题时候需要&#xff0c;因为驻场需要。那你知道市面上安全好…

macOS 13.6 及后续系统安装 Asahi Linux 将破坏引导

导读Asahi Linux 是一个致力于为 Apple Silicon 设备带来 Linux 支持的项目&#xff0c;日前有用户反馈称&#xff0c;若在相关设备上安装了 macOS 13.6-14&#xff0c;再安装 Asahi Linux &#xff0c;就会导致系统引导失败&#xff0c;出现“黑屏”情况。 目前 Asahi Linux 项…

程序猿的护城河是什么

文章目录 什么类型的程序员容易被淘汰&#xff1f;T型人才往底层学抛弃焦虑&#xff0c;无所畏惧地往前冲。多看多想多实践 什么类型的程序员容易被淘汰&#xff1f; 微信前首席技术负责人张绍文说过&#xff1a; “坦白说&#xff0c;现在很多移动开发工程师更像是 API工程师…

uniapp运行到安卓模拟器一直在“同步手机端程序文件完成“界面解决办法

如果你是用的模拟器是android studio创建的模拟器&#xff0c;那么你需要新创建一个android11 x86架构的模拟器&#xff1a; 创建完成后&#xff0c;启动模拟器&#xff1a; 然后在hbuilder中重新运行到这个模拟器就可以了&#xff1a; 运行结果&#xff1a; 如果你是用安…