LA 4123 (计数 递推) Glenbow Museum】的更多相关文章

题意: 这种所有边都是垂直或水平的多边形,可以用一个字符串来表示,一个270°的内角记作O,一个90°的内角记作R. 如果多边形内存在一个点,能看到该多边形所有的点,则这个多边形对应的序列是合法的.这里长度不作限制,只要长度适当能满足要求即可. 现给出序列长度,问有多少种序列符合要求. 分析: 书上分析地很清楚,罗列一下要点: 首先对于一个长度为n的合法序列,R的个数为(n+4)/2,O的个数为(n-4)/2,即R比O多4个 我们要找的序列满足要求:R比O多4个,没有两个O相邻. 这里先设计了一…
自己的递推一塌糊涂 考前抱佛脚 #include<bits/stdc++.h> using namespace std; ]; int main() { int n;scanf("%d",&n); f[]=f[]=; ;i<=n;i++) { ;j<=i/;j++) f[i]=f[i]+f[j]; f[i]++; } printf("%d\n",f[n]); } 然后有n的复杂度的 #include<bits/stdc++.h&…
//求一个直径为 k 的树有多少种形态,每个点的度不超过 3 // 非常完美的分析,学到了,就是要细细推,并且写的时候要细心 还有除法取模需要用逆元 #include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> using namespace std; #define MOD 1000000007 #define L…
题意: 统计[a, b]中有多少个数字满足:自身是k的倍数,而且各个数字之和也是k的倍数. 分析: 详细分析见<训练之南>吧,=_=|| 书上提出了一个模板的概念,有了模板我们就可以分块计算. 虽然书上定义f(x)表示不超过x的非负整数且满足条件的个数,但为了编码方便,代码中f(x)的含义为0~x-1中满足条件的个数. 这样最终所求为f(b+1) - f(a) #include <bits/stdc++.h> using namespace std; int MOD; ]; ][]…
Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不同的3轮状病毒,如下图所示 现给定n(N<=100),编程计算有多少个不同的n轮状病毒 Input 第一行有1个正整数n Output 计算出的不同的n轮状病毒数输出 Sample Input…
题目传送门(内部题16) 输入格式 第一行两个整数$n$和$m$,代表网格的大小.接下来$n$行每行一个长度为$m$的字符串,每个字符若为$W$代表这个格子必须为阳,若为$B$代表必须为阴,若为$?$代表可以运功调整. 输出格式 一行一个整数,代表阴阳平衡的方案数模$1e9+7$的余数. 样例 样例输入1: 3 3B?W?B???? 样例输出1: 样例输入2: 3 3????????? 样例输出2: 数据范围与提示 对于$30\%$的数据,$n\leqslant 4,m\leqslant 4$.…
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2124 这道题可以用递推做,但是没有必要 首先说长度为L 假设R的个数为x,O的个数为y,那么x+y=L而且x-y=4 当L为奇数和小于4的时候肯定不可以 由于O不能相邻 可以假设O 的数目和R一样多,交叉排放.然后从这些O中 去掉4个 1,R开头的情况 C(x,4) 2,O开…
P1176 路径计数2 题目描述 一个N×N的网格,你一开始在(1,1),即左上角.每次只能移动到下方相邻的格子或者右方相邻的格子,问到达(N,N),即右下角有多少种方法. 但是这个问题太简单了,所以现在有M个格子上有障碍,即不能走到这M个格子上. 输入输出格式 输入格式: 输入文件第1行包含两个非负整数N,M,表示了网格的边长与障碍数. 接下来M行,每行两个不大于N的正整数x,y.表示坐标(x,y)上有障碍不能通过,且有1≤x,y≤n,且x,y至少有一个大于1,并请注意障碍坐标有可能相同. 输…
P2602 [ZJOI2010]数字计数 思路: 首先考虑含有前导0的情况,可以发现在相同的\(i\)位数中,每个数的出现次数都是相等的.所以我们可以设\(f(i)\)为\(i\)位数每个数的出现次数. 那么就有递推方程:\(f(i)=f(i-1)*10+10^{i-1}\). 假设现在要求的数为\(x\)位,那么我们依次从\(x\)位往下面求就行了.假设第\(x\)位的数字为\(k\),那么我们枚举第一位从\(0\)到\(k\),每一个数字的出现次数加上\(f(i-1)*k+10^{i-1}\…
Problem Description Teacher Mai has n numbers a1,a2,⋯,an and n−1 operators("+", "-" or "*")op1,op2,⋯,opn−1 , which are arranged in the form a1 op1 a2 op2 a3 ⋯ an . He wants to erase numbers one by one. In i -th round, there a…
题目链接: 普通版: https://www.luogu.org/problemnew/show/P1028 数据加强版: https://www.luogu.org/problemnew/show/P2240 中间插一段,奇怪了,我明明想到的是最好的那种递推方法,结果写着写着忘记了,写成最差的递推方法 所以中间插一段被我遗忘的好方法 这个也是这题的书上的答案 #include<bits/stdc++.h> using namespace std; ]; int main() { int n;…
就是经典约瑟夫环问题的裸题 我一开始一直没理解这个递推是怎么来的,后来终于理解了 假设问题是从n个人编号分别为0...n-1,取第k个, 则第k个人编号为k-1的淘汰,剩下的编号为  0,1,2,3...k-2,k,k+1,k+2... 此时因为从刚刚淘汰那个人的下一个开始数起,因此重新编号 把k号设置为0,则 k    0 k+1 1 ... 0 n-k 1 n-k+1 假设已经求得了n-1个人情况下的最终胜利者保存在f[n-1]中,则毫无疑问,该胜利者还原到原来的真正编号即为 (f[n-1]…
递推型DP 将每个滑雪点都看作起点,从最低点开始逐个由四周递推出到达此点的最长路径的长度,由该点记下. 理论上,也可以将每一点都看作终点,由最高点开始计数,有兴趣可以试试. //经典DP-由高向低海拔滑雪-求最长路 //Memory:372K Time:16 Ms #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #de…
==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本声明). 本文不定期修改完善,为保证内容正确,建议移步原文处阅读. 本文链接:http://www.cnblogs.com/wlsandwho/p/4205524.html ===============================================================…
http://www.lydsy.com/JudgeOnline/problem.php?id=1089 题意:求深度为d的n元树数目.(0<n<=32, 0<=d<=16) #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <algorithm> #inclu…
题目链接:http://codeforces.com/problemset/problem/676/B 递推,dp(i, j)表示第i层第j个杯子,从第一层开始向下倒,和数塔一样的题.每个杯子1个时间能倒满,从上开始向下倒时间为t,那每个杯子不满的时候对下面的贡献一定是0,所以当dp[i][j]>=1的时候,计数倒满的杯子并且将溢出的酒向下平分. /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ mind! ┛┗┛┗┛┃\○/ ┓┏┓┏┓┃ / ┛┗┛┗┛┃ノ) ┓┏┓┏┓┃ ┛┗…
如果用容斥原理递推的办法,这道题确实和LA 3720 Highway很像. 看到大神们写的博客,什么乱搞啊,随便统计一下,这真的让小白很为难,于是我决定用比较严格的语言来写这篇题解. 整体思路很简单:m*n的方格,其格点是(m+1)*(n+1)的点阵,选三个点有C((m+1)*(n+1), 3)中情况,其中能构成三角形的不容易计算,所以计算它的反面:三个点不能构成三角形,即三点共线的情况. 三点共线的情况也可以再分为三类: ①三点在一条水平线上,共有m*C(n+1, 3)种情况. ②三点在一条竖…
1002: [FJOI2007]轮状病毒 Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同的n轮状病毒数输出 Sample Input 3 Sample Output 16   分析:开始想用排列搞搞..发现里面判断边的端点是否重合才能得到几个外围的边的顶点个数..发现很无力: 一部分题解说要使用生成树计数-Matrix-tree定理: 详见:周冬<生成树的计数及其应用> 得到Kirc…
题意:有一个递推式f(x) 当 x < 10    f(x) = x.当 x >= 10  f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + a9 * f(x-10) 同时ai(0<=i<=9) 不是 0 就是 1: 现在给你 ai 的数字,以及k和mod,请你算出 f(x)%mod 的结果是多少 思路:线性递推关系是组合计数中常用的一种递推关系,如果直接利用递推式,需要很长的时间才能计算得出,时间无法承受,但是现在我们已知…
[题意]n个人进行游戏,每轮只保留最大的a[i]倍数的人,最后一轮过后剩余2人,求最小和最大的n,或-1.n<=10^5. [算法]递推||二分 [题解]令L(i),R(i)表示第i轮过后的最小人数和最大人数. 令X(i)和Y(i)表示区间[L(i),R(i)]中最小的a[i]倍数和最大的a[i]倍数. L(i-1)=X(i),R(i-1)=Y(i)+a[i]-1. X(i)=L(i)/a[i](上取整),Y(i)=R(i)/a[i](下取整). 答案为L(0),R(0). #include<…
题意:给定当前汉诺塔的状态,问还有多少步走完,不合法输出“No”. 思路:显然可以一层一层试探下去的.我们设三个柱子为“起始”,“中转”,“终点”,当前状态的最大的盘子不可能在中转站处:如果在起始站,我们需要把其他的移到中转站,然后把最大移到终点.如果在终点站,我们需要把其他的从中转站移到终点站. 每一层减少一个盘子,递推下去就ok了.当时想到了思路,但是没有想到简洁的写法. #include<bits/stdc++.h> #define ll long long using namespac…
计数类的问题,要求不重复,把每种物品单独考虑. 将和号递推可以把转移优化O(1). f[i = 第i种物品][j = 总数量为j] = 方案数 f[i][j] = sigma{f[i-1][j-k],(k = [0,min(j,c[i])])}把和号展开 f[i][j]  :    j-0,j-1,...,j-a[i]f[i][j-1] :       j-1,j-2,...,j-a[i]-1中间部分是一样的可以避免重复计算. #include<cstdio> #include<iost…
难度 题目 知识点 07. 斐波那契数列 递推递归 - 两变量写法- 08. 跳台阶 同上 09. 变态跳台阶 dp 10. 矩形覆盖 同上 05. 用两个栈实现队列 模拟 ☆ 20. 包含min函数的栈 栈 21. 栈的压入弹出序列 模拟出栈序列 65. 矩阵中的路径 回溯 66. 机器人的运动范围 dfs 求连通块大小 07 - 10 斐波那契数列 - 递推递归 - 两变量写法 07. 斐波那契数列 T7:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始…
题意 : 给出一个数 n ,问如果使用 2 的幂的和来组成这个数 n 有多少种不同的方案? 分析 :  完全背包解法 将问题抽象==>有重量分别为 2^0.2^1.2^2…2^k 的物品且每种物品可无限取,问有多少种方案来填满容量为 n 的背包? 之前并不知道背包还能用来计数....... 有一道裸的背包计数问题可以作为练习 ==> HDU 1284 定义 dp[ i ][ j ] 为前 i 种物品组成总重量 j 的方案数为多少.初始化为 dp[ 0 ][ 0 ] = 1 其他为 0 则状态转…
BM算法求求线性递推式   P5487 线性递推+BM算法   待AC.   Poor God Water   // 题目来源:ACM-ICPC 2018 焦作赛区网络预赛 题意   God Water喜欢吃Meat, Fish 和 Chocolate,每个小时他会吃一种食物,但有些吃的顺序是危险/不高兴的.求在N小时内他的饮食方案有多少种不同组合.在连续三小时内这些组合是不可行的: unhappy : MMM FFF CCC dangerous : MCF FCM CMC CFC   思路1…
2476: 战场的数目 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 58  Solved: 38[Submit][Status][Discuss] Description Input 输入文件最多包含25组测试数据,每个数据仅包含一行,有一个整数p(1<=p<=109),表示战场的图形周长.p=0表示输入结束,你的程序不应当处理这一行. Output 对于每组数据,输出仅一行,即满足条件的战场总数除以987654321的余数. Sample I…
一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法. 这个问题可以用递归来进行解决,但是解题时间1秒明显不够用.怎么办呢,可以考虑找到“规律”,然后推导公式解决问题,开始画图分析: 这是4个台阶时的全部7种走法,记作f(4)=7.现在观察右侧绿色走过的部分,1234四种情况是3个台阶时的4种走,法记…
Time limit: 1.0 second Memory limit: 64 MB On the Day of the Flag of Russia a shop-owner decided to decorate the show-window of his shop with textile stripes of white, blue and red colors. He wants to satisfy the following conditions: Stripes of the…
平时有关线性递推的题,很多都可以利用矩阵乘法来解决. 时间复杂度一般是O(K3logn)因此对矩阵的规模限制比较大. 下面介绍一种利用利用Cayley-Hamilton theorem加速矩阵乘法的方法. Cayley-Hamilton theorem: 记矩阵A的特征多项式为f(x). 则有f(A)=0. 证明可以看 维基百科 https://en.wikipedia.org/wiki/Cayley–Hamilton_theorem#A_direct_algebraic_proof 另外我在高…
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. 在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论起了二叉搜索树.什么是二叉搜索树呢?二叉搜索树首先是一棵二叉树.设key[p]表示结点p上的数值.对于其中的每个结点p,若其存在左孩子lch,则key…