[LOJ2538][PKUWC2018]Slay the Spire:DP】的更多相关文章

分析 学会新姿势!我们可以通过调整DP顺序来体现选取物品的优先顺序! 显然选取强化牌的最优策略是倍数从高到低,能选就选,最多选\(k-1\)张,选取攻击牌的最优策略是伤害从高到低,尽量少选,但最少选\(1\)张. 我们可以把强化牌从大到小排序,把攻击牌从小到大排序,令\(f[i][j]\)表示考虑了最大的\(i\)张强化牌,其中所有可选的强化牌有\(j\)张的情况的最优策略下的强化倍数和,\(g[i]\)表示考虑了最小的\(i\)张攻击牌,其中所有可选的攻击牌有\(j\)张的情况的最优策略下的伤…
传送门 不想放题面了,咕咕咕咕咕 这个期望明明是用来吓人的,其实要算的就是所有方案的最多伤害的和. 首先可以知道的是,能出强化牌就出强化牌(当然最后要留一张攻击牌出出去),且数字尽量大 所以说在强化牌数量$< K$时会打出所有强化牌和剩下的最大的攻击牌,而强化牌数量$\geq K$的时候则会打出$K-1$张强化牌和$1$张攻击牌,且它们的数字都是最大的 我们不妨计算每一种最优打出的方案存在在多少种抽取方案中. 设$f_{i,j}$表示使用$i$张强化牌,其中数值最小的牌是第$j$张时的方案的强化…
题目链接 LOJ:https://loj.ac/problem/2538 Solution 计数好题. 首先可以发现这题和期望没关系. 其次对于手上的一套牌,设我们有\(a\)张强化牌,那么: 如果\(a\geqslant k-1\),那么我们显然是从大到小打出\(k-1\)张强化牌,最后打出一张最大的攻击牌. \(\rm otherwise\),我们打出所有的强化牌,再从大到小打出攻击牌. 那么就可以\(dp\)了. 对于强化牌,我们从大到小排序,设\(f[i][j]\)表示当前考虑了前\(i…
Update on 1.5 学了 zhou888 的写法,真是又短又快. 并且空间是 \(O(n)\) 的,速度十分优秀. 题意 LOJ #2538. 「PKUWC 2018」Slay the Spire 题解 首先我们考虑拿到一副牌如何打是最优的,不难发现是将强化牌从大到小能打就打,最后再从大到小打攻击牌 . 为什么呢 ? 证明(简单说明) : 如果不是这样 , 那么我们就是有强化牌没有用 , 且攻击牌超过两张 . 我们考虑把最小的那张攻击牌拿出来 , 然后放入一张强化牌 . \(\becau…
题目链接 loj2538 题解 比较明显的是,由于强化牌倍数大于\(1\),肯定是能用强化牌尽量用强化牌 如果强化牌大于等于\(k\),就留一个位给攻击牌 所以我们将两种牌分别排序,企图计算\(F(i,j)\)表示\(i\)张强化牌选出最强的\(j\)张的所有方案的倍数和 \(G(i,j)\)表示从\(i\)张攻击牌选出最强\(j\)张的所有方案的伤害和 那么 \[ans = \sum\limits_{i = 0}^{k - 1} F(i,i)G(m - i,k - i) + \sum\limi…
LOJ BZOJ 洛谷 哪张能力牌能乘攻击啊,太nb了叭 显然如果有能力牌,那么应该选最大的尽可能的打出\(k-1\)张. 然后下面说的期望都是乘总方案数后的,即所有情况的和.然后\(w_i\)统一用\(A_i\)表示了. \(Solution1\) 所以考虑枚举最终抽到了几张能力牌.那么我们要算:\(F(n,m)\)表示抽到\(n\)张攻击牌,打出最大的\(m\)张的期望伤害:\(G(n,m)\)表示抽到\(n\)张能力牌,打出最大的\(m\)张的期望倍数. 考虑怎么算\(F(n,m)\).不…
题面传送门 hot tea 啊--这种风格及难度的题放在省选 D2T1 左右还是挺喜闻乐见的罢 首先考虑对于固定的 \(m\) 张牌怎样求出最优的打牌策略,假设我们抽到了 \(p\) 张强化牌,攻击力从大到小分别为 \(x_1,x_2,\cdots,x_p\),以及 \(q\) 张攻击牌,攻击力从大到小分别为 \(y_1,y_2,\cdots,y_q\),显然如果 \(q=0\) 那就没得打了,总攻击力显然为 \(0\),否则你手玩几组数据就能发现我们肯定会尽量打强化牌直到没有强化牌或者只能再打…
Problem loj2538 Solution 在考场上当然要学会写暴力,考虑如果手上已经有了\(a\)张攻击牌和\(b\)张强化牌: 首先强化牌会在攻击牌之前用(废话),其次要将两种牌分别从大往小打,即排个序先(也是废话) 要尽量打强化牌,最后再打一张攻击牌(由于每张强化牌至少乘二,所以打一张强化牌一定不比多打一张攻击牌差) 由于\(n\leq 3000\),预估复杂度为\(O(n^2)\),所以应该可以枚举两种牌的数量 设两个状态,\(F[i][j]\)表示选取\(i\)张强化牌,打出\(…
Description 现在有 \(n\) 张强化牌和 \(n\) 张攻击牌: 攻击牌:打出后对对方造成等于牌上的数字的伤害. 强化牌:打出后,假设该强化牌上的数字为 \(x\),则其他剩下的攻击牌的数字都会乘上 \(x\).保证强化牌上的数字都大于 1. 现在等概率地从这 \(2n\) 张卡中抽出 \(m\) 张,并且按最优策略打出 \(k\) 张,问期望能造成多少伤害. Solution 第一这是披着期望皮的计数题 第二最优策略肯定是能打强化牌就打强化牌,最后剩下一张攻击牌再打 既然是计数题…
点此看题面 大致题意: 有\(n\)张强化牌\(a_i\)和\(n\)张攻击牌\(b_i\),每张牌有一个权值(强化牌的权值大于\(1\)),每张强化牌能使所有攻击牌的权值乘上这张强化牌的权值,每张攻击牌造成的伤害等于这张攻击牌的权值.现在,以等概率抽出\(m\)张牌,并以最优策略使用其中至多\(k\)张牌造成最大的伤害.求所有情况下,造成伤害总和. 前言 感觉最近肝了好久的文化课,居然思维水平不但没降,还有了点提升? 没想到居然能不看题解自己把这道题做出来,虽然\(WA\)了一次,但还算是有进…
$ \color{#0066ff}{ 题目描述 }$ 九条可怜在玩一个很好玩的策略游戏:Slay the Spire,一开始九条可怜的卡组里有 \(2n\) 张牌,每张牌上都写着一个数字\(w_i\),一共有两种类型的牌,每种类型各 \(n\) 张: 攻击牌:打出后对对方造成等于牌上的数字的伤害. 强化牌:打出后,假设该强化牌上的数字为\(x\),则其他剩下的攻击牌的数字都会乘上 \(x\).保证强化牌上的数字都大于 1. 现在九条可怜会等概率随机从卡组中抽出 \(m\) 张牌,由于费用限制,九…
题目链接:https://vjudge.net/problem/27377/origin 题意: 有一栋n层高的楼,并给你k个水球.在一定高度及以上将水球扔下,水球会摔破:在这个高度以下扔,水球不会摔破,并且可以捡起来再用.现在你要通过不断地试扔水球,找出在这栋楼上的第几层扔水球,恰好能让水球摔破.问你在最坏情况下,最少扔几次可以保证找出这个层数(若大于63次则输出'More than 63 trials needed.'). 题解: 这个问题可以转化成: 花费i个球,j次扔水球,最多能确定几层…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028 题意: 给你一个正整数n,将n拆分成若干个正整数之和,问你有多少种方案. 注:"4 = 3 + 1"和"4 = 1 + 3"视为同一种方案.(加数是无序的) 题解1(dp): 表示状态: dp[n][m] = num of methods 表示用均不超过m的元素组成n的方法数. 如何转移: 假设当前状态为dp[n][m]. 对于等于m的元素,有两种决策.要么不用,…
BZOJ 5467 Slay the Spire 我的概率基础也太差了.jpg 大概就是这样,因为强化牌至少翻倍,所以打出的牌必定是全部的强化牌或者$k-1$个强化牌,然后剩余的机会打出最大的几个攻击牌. 我们对于强化牌和攻击牌分别做,并且显然,排序并不会影响答案. $f[i][j]$表示前$i$张牌,取到$j$张,第$i$张必定取的最大强化值之积,$g[i][j]$表示前$i$张攻击牌,取到$j$张,第$i$张必定取的最大伤害和.(一般来说,应该先考虑第$i$张不必需取的最大值,但是由于那样设…
传送门 题意 有 $ 2n $ 个球排成一行,其中恰好有 $ n $ 个白球和 $ n $ 个黑球.每个球上写着数字,其中白球上的数字的并集为 $ \lbrace 1 \dots n\rbrace $ ,黑球上的数字的并集也为 $ \lbrace 1 \dots n\rbrace $ . 你可以交换任意两个相邻的球若干次,以使得对于所有白球,数字大小从左到右递增,黑球也是一样. 问你最少的交换次数.$ (n \leq 2000) $ 题解 如果所有球最后的位置 $ P(i) $ 已经确定,那么最…
题目链接:http://codeforces.com/problemset/problem/893/E 题意: 共q组数据(q <= 10^5),每组数据给定x,y(x,y <= 10^6). 问你有多少种长度为y,乘积为x的整数数列.(可以有负数) 题解: 首先考虑数列只有正整数的情况. 将x分解质因数:x = ∑ a[i]*p[i] 由于x较大,所以要先用线性筛求出素数,再枚举素数分解质因数. 那么一个乘积为x的数列可以看做,将x的所有∑ p[i]个质因子,分配到了y个位置上. 设f(i)…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 题意: 给定n(n <= 10^6),将n分解为2的幂次方之和,问你有多少种方法. 题解: 两种方法. 一.无限背包 将1,2,4,8...看作物品体积就好. 复杂度O(n*k),k约为20. 二.递推 对于dp[i],有两种情况. (1)i为奇数.则分解结果中一定有1. 所以dp[i] = dp[i-1]. (2)i为偶数.再分两种情况: a. 分解结果中有1,所以dp[i] +…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2023 题意: 有n个家族,共m只蚂蚁(n <= 1000, m <= 100000). 每个家族有cnt[i]只蚂蚁,并且同一家族中的蚂蚁无差别. 从窝里爬出来x只蚂蚁的方案数为f(x). 给定a,b,让你求 ∑ f(a to b) MOD 1000000. 题解: 表示状态: dp[i][j] = combinations i:第i个家族已经考虑过了 j:目前出来了j只蚂蚁 找出答案…
一个小的线性dp.方法很多,八仙过海各显神通. 我想讲一下我的: #include<cstdio> #define mod 1000000007 ];][][],n;//是不是雷,右边有没有雷 int main(){ scanf(); ;s[n];n++);n--; dp[][][]=dp[][][]=; ;i<=n;++i) ][]=dp[i-][][]; ][]=dp[i-][][],dp[i][][]=dp[i-][][]; ][]=dp[i-][][]; ][]=dp[i][][…
Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到N 之间的正 整数. 如果一段山脉比所有与它相邻的山脉都高,则这段山脉是一个山峰.位于边 缘的山脉只有一段相邻的山脉,其他都有两段(即左边和右边). 类似地,如果一段山脉比所有它相邻的山脉都低,则这段山脉是一个山谷. 地精们有一个共同的爱好——饮酒,酒馆可以设立在山谷之中.地精的酒馆…
LINK 思路 首先因为式子后面把方案数乘上了 所以其实只用输出所有方案的攻击力总和 然后很显然可以用强化牌就尽量用 因为每次强化至少把下面的牌翻一倍,肯定是更优的 然后就只有两种情况 强化牌数量少于k 强化牌数量大于等于k 根据乘法原理,设\(f_{i,j}\)是选i张强化牌用j张的倍数总和,\(g_{i,j}\)是选i张攻击用j张的倍数总和 \(ans+=f_{k,k}*g_{m-i,m-k}\) \(ans+=f_{i,k-1}*g_{m-i,1}\) 然后f的计算可以量化大小这个东西,就…
我们不难发现,假设抽了x张攻击牌,y张强化牌,那么肯定是打出尽可能多张的强化牌后,再开始出攻击牌(当然最少要一张攻击牌) 我们设G(i,j)表示:所有(抽到的攻击牌牌数为i,打出的攻击牌牌数为j)的方案,所产生的攻击值的总和 形式化地说:​$G(i,j)=\sum\limits_{S∈攻击牌\and|S|=i}S中前j大的牌的攻击值之和$ 考虑到G(i,j)难以一次求出,我们考虑设置一些中间变量 设g[i][j]表示:我们对攻击牌从小大大进行排序,目前选了i张牌,其中最小的牌是第j张的总贡献,其…
题目链接 题意分析 这个题其实不是期望 就是一共有\(C_{2n}^m\)种情况 每一种情况选择\(k\)张牌 然后求最大攻击值的总和 我们考虑 当前抽出了选出了\(i\)张强化牌 \(m-i\)张攻击牌 首先 可以肯定的是 能出强化牌就尽量出强化牌 我们去枚举\(i\) 如果\(i<k\) 那么就出\(i\)张强化牌 \(m-i\)张攻击牌 如果\(i≥k\) 那么就出\(k-1\)张强化牌 \(1\)张攻击牌 \(CDY(i,j)\)表示i张强化牌出\(j\)张 所有方案强化的倍率之和 \(…
题解 由于强化卡都是大于1的,我们分析一下就会发现,尽可能多的用强化卡,至少用一张攻击卡,一定是每组卡牌的最优选择 所以我们把攻击卡和强化卡从大到小排序 我们设\(g[i][j]\)表示前i张卡牌里选择j张强化卡,能强化的倍数之和 如果\(j <= K - 1\) \(g[i][j] = g[i - 1][j] + g[i - 1][j - 1] * w[i]\) 否则 \(g[i][j] = g[i - 1][j] + g[i - 1][j - 1]\) 但是如果用前i张卡牌里选择j张攻击卡,…
pkusc 快到了--做点题涨涨 rp. ref我好菜啊QAQ. 可以发现期望只是一个幌子.我们的目的是:对于所有随机的选择方法(一共 \(\binom{2n}{m}\)种),这些选择方法都最优地打出 \(k\) 张牌,他们能造成的伤害的和是多少. 显然的是,能打强化就打强化(不过你好歹也要攻击一张).记 \(m\) 张卡中分给强化卡的数量为 \(i\).我们枚举 \(i\),根据 \(i\) 与 \(k\) 的大小关系来决定怎样打牌. 那么 \(i < k\) 时,就打出 \(i\) 张强化卡…
题目描述 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的.举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子集合的所有数字和是相等的: {3} 和 {1,2} 这是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数) 如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分法的子集合各数字和是相等的: {1,6,7} 和 {2,3,4,5} {注 1+6+7=2+3+4+5}…
背景 农民John的牛喜欢玩硬币,所以John就为它们发明了一个新的两人硬币游戏,叫做Xoinc. 描述 最初地面上有一堆n个硬币(5<=n<=2000),从上面数第i个硬币的价值为C_i(1<=C_i<=100000); 游戏开始后,A先取一枚或两枚硬币.如果A取了一枚,那么B可以继续取一枚或两枚:如果A取了两枚,那么B可以取一到四枚硬币.每次都只能从最上面取.每一次,当前取硬币的人都至少取一枚硬币,最多可以取他的对手上一次取硬币数目的两倍.当没有硬币可取的时候,游戏就结束了.…
背景 NOIP 2000 普及组 第三道 描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加.活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大.同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:有一个数字串: 312…
Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买. 请问:你用有限的资金最多能采购多少公斤粮食呢? 后记: 人生是一个充满了变数的生命过程,天灾.人祸.病痛是我们生命历程中不可预知的威胁. 月有阴晴圆缺,人有旦夕祸福,未来对于我们而言是一个未知数.那么,我们要做的就应该是珍惜现在,感恩生活―― 感谢父母,他们给予我们生命,抚养我们成…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 题意: 横坐标范围为[0,10],你在第0秒站在坐标为5的地方. 在接下来的一段时间内,会有n个馅饼落下来,每一个馅饼有一个位置x和时刻t. 每一秒你最多可以移动1格.并且在某一个时刻,你只能接到你当前位置的馅饼. 问你最多能接到多少馅饼. 题解: 表示状态: dp[i][j] = max num of pancakes (1)第i秒 (2)站在j的位置 如何转移: 当前dp[i][j]取决于…