AtCoder Beginner Contest 297 【E-F】题解

E - Kth Takoyaki Set

多重指针,具体可参考leetcode简化版题目 丑数

import math
import sys
from bisect import bisect_left, bisect_right
from collections import Counter, defaultdict, deque
from itertools import permutationsinput = lambda: sys.stdin.readline().rstrip("\r\n")def I():return input()def ii():return int(input())def li():return list(input().split())def mi():return map(int, input().split())def lii():return list(map(int, input().split()))# 8 3
# 5 3
# 2 3
# 2 1
# 1 1n,k = mi()
a = lii()
dp = [0] * (k + 1)
pois = [0] * n
i = 1
while i <= k:mi = float('inf')for j in range(n):mi = min(mi,dp[pois[j]] + a[j])for j in range(n):if mi == dp[pois[j]] + a[j]:dp[i] = mipois[j] += 1i += 1
print(dp[k])

F - Minimum Bounding Box 2

枚举矩形的高h和宽w,通过容斥枚举不能够组成该矩形的充要条件(即有一条边没有点),一共四种情况,最上面少一条边,最下面少一条边,最左边少一天边,最右边少一条边。
然后减去重复的,此时是四容斥情况
具体容斥公式可见OI Wiki进行推导

import math
import sys
from bisect import bisect_left, bisect_right
from collections import Counter, defaultdict, deque
from itertools import permutationsinput = lambda: sys.stdin.readline().rstrip("\r\n")def I():return input()def ii():return int(input())def li():return list(input().split())def mi():return map(int, input().split())def lii():return list(map(int, input().split()))def qmi(x, y, mod):res = 1while y:if y & 1: res = res * x % modx = x * x % mody >>= 1return res % modclass Factorial:def __init__(self, N, mod) -> None:N += 1self.mod = modself.f = [1 for _ in range(N)]self.g = [1 for _ in range(N)]for i in range(1, N):self.f[i] = self.f[i - 1] * i % self.modself.g[-1] = pow(self.f[-1], mod - 2, mod)for i in range(N - 2, -1, -1):self.g[i] = self.g[i + 1] * (i + 1) % self.moddef fac(self, n):return self.f[n]def fac_inv(self, n):return self.g[n]def comb(self, n, m):if n < m or m < 0:return 0return self.f[n] * self.g[m] % self.mod * self.g[n - m] % self.moddef perm(self, n, m):if n < m or m < 0:return 0return self.f[n] * self.g[n - m] % self.moddef catalan(self, n):return (self.comb(2 * n, n) - self.comb(2 * n, n - 1)) % self.moddef inv(self, n):return self.f[n - 1] * self.g[n] % modmod = 998244353
fact = Factorial(10 ** 6 + 3, mod)def comb(x, y, k):if x <= 0 or y <= 0 or k < 0 or x * y < k: return 0return fact.comb(x * y, k)h, w, k = lii()ans = 0
for n in range(1, h + 1):for m in range(1, w + 1):cnt = (h - n + 1) * (w - m + 1)q = comb(n, m, k) - comb(n, (m - 1), k) * 2 - comb(n - 1, m, k) * 2 \+ comb((n - 2), m, k) + comb(n, (m - 2), k) + 4 * comb((n - 1), (m - 1), k) \- comb((n - 2), (m - 1), k) * 2 - comb((n - 1), (m - 2), k) * 2 + comb((n - 2), (m - 2), k)ans += q * cnt * n * mans %= mod
print(ans * qmi(fact.comb(h * w, k), mod - 2, mod) % mod)

AtCoder Beginner Contest 297 【E-F】题解相关推荐

  1. AtCoder Beginner Contest 260 A~F 题解

    ABC260 A~F [A - A Unique Letter](https://atcoder.jp/contests/abc260/tasks/abc260_a) 题目大意 输入格式 输出格式 样 ...

  2. AtCoder Beginner Contest 244 D~F 题解

    ABC244 D~F [D - Swap Hats](https://atcoder.jp/contests/abc244/tasks/abc244_d) 题目大意 输入格式 输出格式 样例 样例输入 ...

  3. AtCoder Beginner Contest 246 A~E 题解 Bishop 2

    AtCoder Beginner Contest 246 A~E 题解 A Four Points 题意 给你矩形的三个顶点,输出剩下那个 思路 把横坐标和纵坐标分开,必会存在两个相同的数,横纵坐标就 ...

  4. AtCoder Beginner Contest 297——A-E题讲解

    蒟蒻来讲题,还望大家喜.若哪有问题,大家尽可提! Hello, 大家好哇!本初中生蒟蒻讲解一下AtCoder Beginner Contest 297这场比赛的A-E题! 今晚比前面几场要简单点,但我 ...

  5. AtCoder Beginner Contest 252 A~G 题解

    前言 这是我第一次写7题(A~G)的ABC题解,若有写得不好或者不到位的地方请多多指教,我将万分感激,感谢大家的支持! ABC252 A~G [A - ASCII code](https://atco ...

  6. AtCoder Beginner Contest 196 A~E题解

    ABC196 A~E [A - Difference Max](https://atcoder.jp/contests/abc196/tasks/abc196_a) 题目大意 输入格式 输出格式 样例 ...

  7. AtCoder Beginner Contest 242 C~E 题解

    ABC242 C~E [C - 1111gal password](https://atcoder.jp/contests/abc242/tasks/abc242_c) 题目大意 输入格式 输出格式 ...

  8. AtCoder Beginner Contest 192 A~D题解

    ABC192 A~D [A - Star](https://atcoder.jp/contests/abc192/tasks/abc192_a) 题目大意 输入格式 输出格式 样例 分析 代码 [B ...

  9. AtCoder Beginner Contest 205 A~E 题解

    ABC205 A~E [A - kcal](https://atcoder.jp/contests/abc205/tasks/abc205_a) 题目大意 输入格式 输出格式 样例 分析 代码 [B ...

最新文章

  1. 寻找孪生素数(当p为素数时,p+2也为素数)
  2. mysql 1115_从ADS1115 Python向MySQL插入数据
  3. java readtoend_java项目和C#项目实现通信
  4. spring框架文档学习(包会)
  5. 关于黑客的报道里绝对不会提到的信息
  6. ASP.NET学习笔记 2
  7. Packt和Java Code Geeks提供的$ 5 Java编程书籍!
  8. 第十一届蓝桥杯省赛 C++组试题 第2题 求完数
  9. python配置文件密码管理_用户配置文件和密码配置文件,用户组管理和用户管理...
  10. python+selenium自动化driver.switch_to.frame用法
  11. 线段树详解(转)这个博客很棒~
  12. SuperSlide插件轮播图展示
  13. App获取android分辨率,设计手机app界面时,常用的分辨率是多少
  14. 看完此文再不懂区块链算我输,用Python从零开始创建区块链
  15. Android Studio 设置背景色、修改前进后退快捷键
  16. 智源社区AI周刊No.97:Bengio新论文用GFlowNets统一生成模型;北大发布AI for EDA数据集...
  17. 学习SEO有别的味道
  18. 黑盒测试——测试准备阶段
  19. Android——一个简单的音乐APP(二)
  20. selenium 模拟登陆 古诗文网 含验证码

热门文章

  1. springboot中使用socket对接第三方接口
  2. ATM交换机通讯管理基础
  3. 04.终端安全技术资料
  4. 晨曦中,凛冽的风,脑际空空,可记得痛
  5. [动态规划]Tak and Cards
  6. 业务理解:深入业务是做好架构的前提
  7. 【完美解析】蓝桥杯 省赛 杨辉三角形 python组 找规律+二分查找+组合数
  8. 【Java excel数据 截取 匹配】
  9. OSN博士必须掌握的必杀技(更新至2017/12/15)
  10. [windows] win10刷新dns的方法