10581 - Partitioning for fun and profit 题目链接 题意:给定m, n,表示分配给n个格子,分配m个数字进去,每一个格子最少1,而且序列要是递增的,问第k个字典序的序列是什么 思路:先利用dp打出表,dp[i][j][k]表示第i个数,尾巴为j,总和剩下k的情况,写一个记忆化求出,之后在这个数组基础上,从左往右枚举要放那个数字合适,合适的就放进去而且输出,注意最后一个数字要单独输出. 代码: #include <cstdio> #include <c…
题目链接:uva 10581 - Partitioning for fun and profit 题目大意:给定m,n,k,将m分解成n份,然后依照每份的个数排定字典序,而且划分时要求ai−1≤ai,然后输出字典序排在k位的划分方法. 解题思路:由于有ai−1≤ai的条件.所以先记忆化搜索处理出组合情况dp[i][j][s]表示第i位为j.而且剩余的未划分数为s的总数为dp[i][j][s],然后就是枚举每一位上的值.推断序列的位置就可以. #include <cstdio> #include…
杨辉三角,这次要输出第rowIndex行 用滚动数组t进行递推 t[(i+1)%2][j] = t[i%2][j] + t[i%2][j - 1]; class Solution { public: vector<int> getRow(int rowIndex) { ) ,); int n = rowIndex; vector<]; ; i < ; ++i){ t[i].resize(n + , ); } ; i <= n; ++i){ ; j < i; ++j){…
杨辉三角,即组合数 递推 class Solution { vector<vector<int>> v; public: Solution() { ; i < ; ++i){ vector<,); ; j < i; ++j){ t[j] = v[i-][j] + v[i-][j - ]; } v.push_back(t); } } vector<vector<int>> generate(int numRows) { return vect…
Problem Description 一个{1, ..., n}的子集S被称为JZP集,当且仅当对于任意S中的两个数x,y,若(x+y)/2为整数,那么(x+y)/2也属于S.例如,n=3,S={1,3}不是JZP集,因为(1+3)/2=2不属于S.但是{1,2,3}的其他子集都属于S,所以n=3时有7个JZP集给定n,求JZP集的个数.   Input 第一行为T,表示输入数据组数.每组数据包含一行整数n. 限制条件1<=T<=10^51<=n<=10^7   Output 对…
题目链接:https://vjudge.net/problem/27377/origin 题意: 有一栋n层高的楼,并给你k个水球.在一定高度及以上将水球扔下,水球会摔破:在这个高度以下扔,水球不会摔破,并且可以捡起来再用.现在你要通过不断地试扔水球,找出在这栋楼上的第几层扔水球,恰好能让水球摔破.问你在最坏情况下,最少扔几次可以保证找出这个层数(若大于63次则输出'More than 63 trials needed.'). 题解: 这个问题可以转化成: 花费i个球,j次扔水球,最多能确定几层…
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1883 题意 共有n个数(1..n)围成一个首尾相接的环,从m开始删除,每隔k个删除,最后留下来的是几? 思路 如刘书,首先是要找到递推关系. 1. 把起点视作编号0,f[n]为还剩下n个数(编号当然是紧挨的)的时候留下的最后一个编号,那么,明显f[n]与f[n - 1]…
题意:抛出n次硬币(有顺序),求至少k个以上的连续正面的情况的种数. 思路:转换成求抛n个硬币,至多k-1个连续的情况种数,用所有可能出现的情况种数减去至多k-1个的情况,就得到答案了.此题涉及大数加减. 分析: (1)假设n=k,那么只有一种情况. (2)假设n=k+1,那么有3种情况,包含k个的两种,k+1个的一种. (3)假设k=1,那么只有无正面这一种的情况不能被考虑,其他都能算,那么就是(1<<n)-1种.(n个硬币有2^n种结果) (4)其他情况考虑递推.先把问题的规模降低,最小就…
题意:初始1个红气球,每小时后,1个红气球会变成3个红气球和1个蓝气球,而1个蓝气球会变成4个蓝气球.问经过N小时后,第L~R行一共有多少个红气球. 解法:问行数就定义f[i][j]表示 i 小时后前 j 行的红气球数.分情况讨论后就可得出递推方程. 注意--1.数组开不小就时间换空间,递归替代递推求解:2.要另外定义一个c函数,c(i)表示f[i][1<<i],否则每次都至少要算2^i,会TLE. 1 #include<cstdio> 2 #include<cstdlib&…
UVA - 11584 Partitioning by Palindromes We say a sequence of char- acters is a palindrome if it is the same written forwards and backwards. For example, ‘racecar’ is a palindrome, but ‘fastcar’ is not. A partition of a sequence of characters is a lis…