Noip模拟题 Matrix [递推,组合数]】的更多相关文章

Matrix 时间限制: 1 Sec  内存限制: 512 MB 题目描述 小 z 的女朋友送给小 z 一个 n × n 的矩阵.但是矩阵实在太大了,小 z 的女朋友拿不动,只能带给他两个长度为 n 的整数序列 l, t ,分别作为矩阵 F 的第一行和第一列(保证 l1 = t1 ),并且告诉小 z 矩阵可以通过如下方式得到:Fi,j = a · Fi,j−1 + b · Fi−1,j现在小 z 猜到了系数 a,b ,他想要计算 Fn,n 模 109 + 7 的值 输入 第一行三个整数 n, a…
传送门 签到题.(考试的时候写挂爆0) 令AiA_iAi​表示邻接矩阵的iii次幂. 于是就是求Al+Al+1+...+ArA_l+A_{l+1}+...+A_rAl​+Al+1​+...+Ar​. 然而快速幂200次会挂掉. 因此我们把其变成Al∗(A0+...+Ar−l)A_l*(A_0+...+A_{r-l})Al​∗(A0​+...+Ar−l​) 后面的直接预处理,这样一次快速幂+一次矩阵乘法就行了. 代码…
\(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 '1' 出现的次数为奇数,则在 \(A\) 的末尾插入 '1',否则在 \(A\) 的末尾插入 '0'. 现在给出一个同样仅由 '0' 和 '1' 组成的字符串 \(B\),请你判断 \(A\) 能否在任意多次操作后转化为 \(B\). 输入 输入文件第一行一个正整数 \(T\),表示有 \(T\…
这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(agnus这个单词只出现过一次):abcagnusbgnus 它的满足子串就有以下几种情况: ①自身:agnus: ②和前面的字符组合:abcagnus.bcagnus.cagnus; ③和后面的字符组合:agnusbgnus.agnusbgnu.agnusbgn.agnusbg.agnusb; ④两…
9.9 NOIP模拟题 T1 两个圆的面积求并 /* 计算圆的面积并 多个圆要用辛普森积分解决 这里只有两个,模拟计算就好 两圆相交时,面积并等于中间两个扇形面积减去两个三角形面积 余弦定理求角度,算出三角形面积 */ #include<cstdio> #include<cmath> #include<algorithm> using namespace std; const double PI=3.14159265358979323846264; struct nod…
  8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU 评测软件 Lemon 评测方式 忽略行末空格和回车 特别注意:c/c++ 选手使用 printf 输出 位整数请使用%lld 注意事项 A 债务 文件名                            输入文件             输出文件            时空限制 debt.pa…
最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数 输入:输入文件只一行,两个正整数N,M( 1<N<50,2≤M≤5) 输出:输出文件只有一个正整数S,表示方案总数. 运用升格思想.设N个坑不会发生爆炸的方案数是f[N],那么我们假设N以前的坑的方案 都已知了,那么我们只需要考虑第N个坑如何放即可(顺…
记录一下一种推组合数前缀和的方法 Trick 设\(\sum_{i = 0}^m C_n^i = S(n, m)\) \(S\)是可以递推的 \(S(n, m + 1) = S(n, m) + C_{n}^{m + 1}\) 就是加上最末尾的一项 \(S(n + 1, m) = 2S(n, m) - C_n^m\) \(S(n, m)\)可以看做是杨辉三角上的一行,而\(S(n+1, m)\)是他的下一行 考虑组合数的递推公式,除了\(C[n][m]\)这一项之外都会被计算两次. 另外如果有多组…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 对于这种有点巧妙的递推还是总是没有思路... 设计一个状态 f[i] 表示第 i 位置上是公牛,那么 f[i] = ∑(0<=j<i-k) f[j]: 再前缀和优化一下即可. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ,mod=…
B 君的任务(task)[题目描述]与君初相识,犹如故人归.B 君看到了Z 君的第一题,觉得很难.于是自己出了一个简单题.你需要完成n 个任务,第i 任务有2 个属性ai; bi.其中ai 是完成这个任务所需要花费的时间,bi 为如果你在t 时间完成该任务,那么你受到的损失便是bit.初始时间是0,你最终收到的损失等于每个任务造成的损失之和,你需要最小化自己受到的损失.你只能一个任务接着一个任务的完成,不能同时做多个任务,所以说相当于你只需要决定一个任务完成的顺序.[输入格式]第一行一个整数n.…