hdu 4055 Number String (基础dp)】的更多相关文章

Number String Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1935    Accepted Submission(s): 931 Problem Description The signature of a permutation is a string that is computed as follows: for…
Problem Description The signature of a permutation is a string that is computed as follows: for each pair of consecutive elements of the permutation, write down the letter 'I' (increasing) if the second element is greater than the first one, otherwis…
题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果第i字符是‘I’表示排列中的第i-1个数是小于第i个数的. 如果是‘D’,则反之. 析:dp[i][j] 表示前 i 个数以 j 结尾有多少个,然后如果是 I ,那么就好,就是 i-1 中的前j-1项和,如果是 D,那就更好玩了,我们看这样一个性质,奇妙! 假设你有一个排列是 1 3 4 ,然后下一个数是 2,那么怎么放呢,我们把 排列中每一个大于等于 2的都加1,并不会影响这个排列,然后再把这个2放上, 因为我…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4055 Number String Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) 问题描述 The signature of a permutation is a string that is computed as follows: for each pair of consecut…
Number String Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1016    Accepted Submission(s): 440 Problem Description The signature of a permutation is a string that is computed as follows: fo…
Number String http://acm.hdu.edu.cn/showproblem.php?pid=4055 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description The signature of a permutation is a string that is computed as follows: for each pai…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055 题意: 给你一个由'I', 'D', '?'组成的字符串,长度为n,代表了一个1~n+1的排列中(数字不重复),相邻数字的增长趋势.('I'为增,'D'为减,'?'为未知) 问你符合条件的数列有多少种. 题解: 表示状态: dp[i][j] = combinations 表示长度为i的排列(由1~i组成),末尾为j,这样的排列的个数 找出答案: ans = ∑ dp[n][1 to n] 如何…
题意: 给你一个含n个字符的字符串,字符为'D'时表示小于号,字符为“I”时表示大于号,字符为“?”时表示大小于都可以.比如排列 {3, 1, 2, 7, 4, 6, 5} 表示为字符串 DIIDID.任务是计算所有能产生给定字符串的序列数量,每个序列含n+1个数字,分别为1-n+1,即从1开始且不重复. 思路:DP计数.如下步骤 1)将规模n降低,使得对于每个i (1<=i<=n)都可以依靠i-1的结果来计算.最小规模为1个符号,决定两个数字的序列. 2)考虑对于具有i个数字的序列(值从1-…
给一个只含‘I','D','?'三种字符的字符串,I表示当前数字大于前面的数字,D表示当前的数字小于前面一位的数字,?表示当前位既可以小于又可以大于. 问1~n的排列中有多少个满足该字符串. http://blog.csdn.net/shiqi_614/article/details/7983298 http://www.cnblogs.com/kuangbin/archive/2012/10/04/2711330.html http://blog.csdn.net/cc_again/artic…
HDU 4054 Number String 思路: 状态:dp[i][j]表示以j结尾i的排列 状态转移: 如果s[i - 1]是' I ',那么dp[i][j] = dp[i-1][j-1] + dp[i-1][j-2] + .. + dp[i-1][1] 如果s[i - 1]是‘D’,那么dp[i][j] = dp[i-1][j] + dp[i-1][j+1] + ... + dp[i-1][i] 用前缀和处理出sum[i][j]就不用dp[i][j]了 代码: #include<bits…