火题大战Vol.0 B 计数DP】的更多相关文章

火题大战Vol.0 B 题目描述 \(n\) 个沙茶,被编号 \(1\)~$ n$.排完队之后,每个沙茶希望,自己的相邻的两人只要无一个人的编号和自己的编号相差为 \(1\)(\(+1\) 或\(-1\))就行: 现在想知道,存在多少方案满足沙茶们如此不苛刻的条件. 输入格式 只有一行且为用空格隔开的一个正整数 \(N\). 输出格式 一个非负整数,表示方案数对 \(7777777\) 取模. 样例 样例输入 4 样例输出 2 样例解释 有两种方案 \(2\ 4\ 1\ 3\) 和 \(3\ 1…
金题大战Vol.0 C.树上的等差数列 题目描述 给定一棵包含\(N\)个节点的无根树,节点编号\(1-N\).其中每个节点都具有一个权值,第\(i\)个节点的权值是\(A_i\). 小\(Hi\)希望你能找到树上的一条最长路径,满足沿着路径经过的节点的权值序列恰好构成等差数列. 输入格式 第一行包含一个整数\(N\). 第二行包含\(N\)个整数\(A_1, A_2, ... A_N\). 以下\(N-1\)行,每行包含两个整数\(U\)和\(V\),代表节点\(U\)和\(V\)之间有一条边…
火题大战Vol.1 A. 题目描述 给定两个数\(x\),\(y\),比较\(x^y\) 与\(y!\)的大小. 输入格式 第一行一个整数\(T\)表示数据组数. 接下来\(T\)行,每行两个整数\(x\),\(y\),表示\(T\)组数据. 输出格式 输出有\(T\)行,对于每一组数据,如果\(x^y \leq y!\) 输出 \(Yes\),否则输出\(No\). 样例 样例输入 3 1 4 2 4 3 4 样例输出 Yes Yes No 样例输入 5 50 100 37 100 200 1…
金题大战Vol.0 A.凉宫春日的叹息 题目描述 给定一个数组,将其所有子区间的和从小到大排序,求第 \(k\) 小的是多少. 输入格式 第一行两个数\(n\),$ k\(,表示数组的长度和\)k$: 第二行有 \(n\) 个数,第\(i\)个是\(a[i]\),表示给定的数组. 输出格式 仅一个数,表示答案. 样例 样例输入1 5 6 1 1 1 1 1 样例输出1 2 样例输入2 8 20 2 3 1 2 5 3 2 3 样例输出2 8 数据范围与提示 对于\(15\%\)的数据,\(n \…
金题大战Vol.0 B.序列 题目描述 给定两个长度为 \(n\) 的序列\(a\), \(b\). 你需要选择一个区间\([l,r]\),使得\(a_l+-+a_r>=0\)且\(b_l+-+b_r>=0\).最大化你选择的区间长度. 输入格式 第一行一个整数\(n\),第二行\(n\)个整数\(a_1-a_n\),第三行n个整数\(b_1-b_n\). 输出格式 一行一个整数表示\(max(r-l+1)\).保证至少有一个区间满足条件. 样例 样例输入 5 2 -4 1 2 -2 -2 3…
土题大战Vol.0 A. 笨小猴 思维好题 题目描述 驴蛋蛋有 \(2n + 1\) 张 \(4\) 星武器卡片,每张卡片上都有两个数字,第 \(i\) 张卡片上的两个数字分别是 \(A_i\) 与 \(B_i\). 现在驴蛋蛋要从所有卡片中选出恰好 \(n + 1\) 张卡片,然后计算他选出的所有卡片中 \(A_i\) 的和与 \(B_i\) 的和.他的目的是要使他选出的卡片的\(A_i\) 的和与 \(B_i\) 的和,都要分别大于剩下 \(n\) 张没选的卡片的 \(A_i\) 的和与 \…
水题大战Vol.3 B. DP搬运工2 题目描述 给你\(n,K\),求有多少个\(1\)到\(n\) 的排列,恰好有\(K\)个数\(i\) 满足\(a_{i-1},a_{i+1}\) 都小于\(a_i\). 输入格式 一行两个整数\(n,K\). 输出格式 一行一个整数\(ans\)表示答案\(mod 998244353\). 样例 样例输入1 4 1 样例输出1 16 样例输入2 10 3 样例输出2 1841152 数据范围与提示 对于 \(25\%\) 的测试点,\(1 \leq n,…
前言: 如果我自己写的话,或许能想出来正解,但是多半会因为整不出正确性而弃掉. 解析: 这题算是对Kruskal的熟练运用吧. 要求一颗生成树.也就是说,最后的边数是确定的. 首先我们容易想到一个策略: 先跑Kruskal,优先选k条石子路,剩下的选水泥路. 但是这样做显然是错误的. 因为,当随便选了k条石子路后,可能出现: 发现无论怎么选(n-1-k)条水泥路,也无法使图连通.如果这时选一条石子路,就可以保证连通性. 但是,发现这时已经选满了k条石子路,就没法再选石子路了. 我们可以通过设计一…
前言: 当时考场上并没有想出来...后来也是看了题解才明白 解析: 大家(除了我)都知道,奇点和偶点会成对出现,而出现的前提就是建筑的高度突然发生变化.(这个性质挺重要的,我之前没看出来) 所以就可以扫一遍,然后就搞定了. 然后还有一个小点,要把每个区间搞成左闭右开,否则碰到诸如 (3,7,5)和(5,8,9) 这样的数据,中间的空隙就不会被计算. 然后写个线段树维护一下就ok了 代码 #include <bits/stdc++.h> using namespace std; const in…
Online Judge:Hdu5155 Label:思维题+容斥,计数Dp 题面: 题目描述 给定一个大小为\(N*M\)的神奇盒子,里面每行每列都至少有一个钻石,问可行的排列方案数.由于答案较大,输出对\(1e9+7\)取模后的结果. 输入 多组数据.每组数据读入两个整数\(N,M\) \(0≤N,M≤50\) 输出 每组数据输出一行表示答案. 样例 Input 1 1 2 2 2 3 Output 1 7 25 Hint There are 7 possible arrangements…