P5664 Emiya 家今天的饭】的更多相关文章

首先来看一道我编的题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共有 \(m\) 个不同的 主题 . 为了方便描述,我们对词牌名从 \(1\) ~ \(n\) 编号,对主题从 \(1\) ~ \(m\) 编号. 安娜准备了若干首诗,每首诗都有 恰好一个 词牌名与 恰好一个 主题. 更具体地说,安娜为第 \(i\) 个词牌名第 \(j\) 个主题准备了 \(a_{i…
首先来看一道题题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共有 \(m\) 个不同的 主题 . 为了方便描述,我们对词牌名从 \(1\) ~ \(n\) 编号,对主题从 \(1\) ~ \(m\) 编号. 安娜准备了若干首诗,每首诗都有 恰好一个 词牌名与 恰好一个 主题. 更具体地说,安娜为第 \(i\) 个词牌名第 \(j\) 个主题准备了 \(a_{i,j…
题目传送门 解题思路: 对于每一个列c,f[i][j][k]表示到第i行,第c列选了j个,其它列一共选了k个,然后我们读题意发现只要j>k,那就一定是不合法的,然后统计所有方案,减去所有不合法方案,即为答案. 代码里有注释. //只做了84分,懒得写100分(思路一样),以后可能update..... 84分代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std;…
题面 link 前言 去年把我做自闭的一道题,看了一眼题面,发现只有 t1 有点思路,结果写到一半发现自己读错题了,又只能花时间来重构,结果后面的暴力一点都没写(主要是自己当时不会) 然后,这道题还因为某种原因爆玲了,因此我就成了全机房最菜的人. 题解 这道题题面还是很长的,所以我们简化一下题意. 给你一个 n*m 的矩阵,要求你从每一行选一个数,这一行可以选也可以不选,但最后至少选一个,且选的最多的那一列不能超过选的总数的 \(1 \over 2\) part 1 24 - 32 分 直接爆搜…
题目 题目链接:https://www.luogu.org/problem/P5664 Emiya 是个擅长做菜的高中生,他共掌握 \(n\) 种烹饪方法,且会使用 \(m\) 种主要食材做菜.为了方便叙述,我们对烹饪方法从 \(1 \sim n\) 编号,对主要食材从 \(1 \sim m\) 编号. Emiya 做的每道菜都将使用恰好一种烹饪方法与恰好一种主要食材.更具体地,Emiya 会做 \(a_{i,j}\) 道不同的使用烹饪方法 \(i\) 和主要食材 \(j\) 的菜(\(1 \l…
链接: P5664 题意: 给出一个 \(n*m\) 的矩阵 \(a\),选 \(k\) 个格子(\(1\leq k\leq n\)),每行最多选一个,每列最多选\(⌊\dfrac k2⌋\) 个,同时每个格子有 \(a_{i,j}\) 种不同选法,问共有多少种不同的选法,对 \(998244353\) 取模.给出 \(n,m\) 和 矩阵 \(a\). 分析: 尝试直接 dp 失败后看了题解.这是道 dp 和容斥的好题. 考虑列的限制,每列最多选\(⌊\dfrac k2⌋\) 个,意味着最多只…
Description 传送门 Solution 算法1 32pts 爆搜,复杂度\(O((m+1)^n)\) 算法2 84pts 裸的dp,复杂度\(O(n^3m)\) 首先有一个显然的性质要知道: 最多只有一种主要食材出现在超过一半的主要食材里. 接下来考虑如果只有前两个限制条件的情况,那么答案就是 \[\Pi_{i=1}^{n} (sum_i+1) - 1\] 其中\(sum_i = \sum \limits_{j=1}^m a_{i,j}\),\(+1\)是因为对于每一行只有选一道菜或者…
这题在考场上只会O(n^3 m),拿了84分.. 先讲84分,考虑容斥,用总方案减去不合法方案,也就是枚举每一种食材,求用它做超过\(\lfloor \frac{k}{2} \rfloor\) 道菜的方案数,从总方案中减去. 先枚举一种食材x,设f[i][j][k]为前i种烹饪方法中,做j道菜,其中k道是食材x做的的方案数,转移考虑第i种烹饪方案 不做菜/做食材x的菜/做其他食材的菜 三种情况.最后所有f[n][j][j/2+1 ~ n]的和即是不合法情况. 考虑怎么优化,设一种方案中有k道菜,…
\(dp_{i,j,k}\)表示前\(i\)种烹饪方法,假设最多的是食材\(j\),食材\(j\)比其他食材多\(k\)次出现 其中\(i \in [1,n],j \in [1,m],k \in [-n,n]\) \(then \Longrightarrow dp_{i,j,k}=dp_{i-1,j,k}+\sum_{l=1}^{m}(l=j?dp_{i-1,j,k-1} :dp_{i-1,j,k+1})\) 本题主要考查滚动数组 总可能(不一定合法)为\(\prod_{i=1}^{n}(1+\…
这个D2T1有点难度啊 原题: 花了我一下午的时间,作为D2T1的确反常 条件很奇怪,感觉不太直观,于是看数据范围先写了个暴力 写暴力的时候我就注意到了之前没有仔细想过的点,烹饪方式必须不同 虽然a很大,但是n只有100,即总菜数比较小 而且虽然m和a都很大,但是一种方法只能做一道菜,即选一种食材 所以搜索枚举每种方法选哪种食材,最后检查方案是否满足条件 这样可以拿到32分 需要注意到一点很关键的性质 不管什么方案,最多只有一个食材能超过n/2,看到n/2要敏感 那么如果无视n/2的限制,直接d…