随笔分类 - ACM-HDU
            
    HDU 1228 字符串到数字的转化
    
            
            
        
摘要:一道水题,练练字符串的输入输出 1 #include 2 #include 3 4 using namespace std; 5 char s1[15] , s2[15]; 6 7 int get_num(char *s) 8 { 9 if(s[0] == 'z') return 0...
        阅读全文
            
        
            
    HDU 1212 大整数的取模运算
    
            
            
        
摘要:因为这里是MOD最大为100000所以我将字符串看作5个一组,并记录后面跟了多少个100000每次取5个数根据其数据进行取模更新注意过程中 100000*100000会超int#include #include #include using namespace std;#define ll long...
        阅读全文
            
        
            
    HDU 1214 圆桌会议
    
            
            
        
摘要:每次只能有一组数字进行交换,最后达到逆序效果我们可以这样理解,我们总是希望每次将一个数摆到正确的位置上,那么这样一个数有顺时针逆时针两个方向移动的机会,我们总是挑移动次数少的一个方向那么我们排列前前一半数字,就将其逆时针排,这样次数比较少而后一半就顺时针排自己就能得到两个等差数列了 1 #inclu...
        阅读全文
            
        
            
    HDU 1210
    
            
            
        
摘要:感觉就是乱搞找规律自己写几组数据本来开始是想着把 n 个数字每次回到原来位置各需要多少次,然后取它们的最小公倍数就好了但是数据写着写着发现每一个数回到原来位置次数都是一样的,那么就简单了,直接第一个数为例,不断跟踪位置,计算它走过的次数 1 #include 2 3 int main() 4 {...
        阅读全文
            
        
            
    HDU 1234 简单模拟题
    
            
            
        
摘要:题目很简单不多说了,我只是觉得这题目的输入方式还是很有特点的 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 struct People{ 8 char name[20]; 9 i...
        阅读全文
            
        
            
    HDU 1018 阶乘数的位数
    
            
            
        
摘要:题目大意:将一个数开阶乘后得到的值,来求这个值的位数n! = 1*2*3*4...*n对于求一个数的位数的方法为ans = lg(n!) + 1那么就可以看作 ans = lg(1) + lg(2) .......+ lg(n) + 1#include #include const double e...
        阅读全文
            
        
            
    HDU 1130
    
            
            
        
摘要:题目大意给定节点数 , 求通过这么多个节点能得到的二叉树的组成方式用卡特兰数解决f[n] = (4*n-2) * f[n-1] / (n+1);递归不断解决 1 /** 2 * @(#)Main.java 3 * 4 * 5 * @author 6 * @version 1.00 201...
        阅读全文
            
        
            
    HDU 2604 矩阵快速幂
    
            
            
        
摘要:题目大意给定长度为l的只有f,m两种字母 的序列,问不出现fff,fmf的序列个数有多少个每次的下一个状态都与前一次状态的后两个字母有关比如我令mm : 0 , mf : 1 , fm : 2 , ff : 3;那么dp[i][j] 表示长度为i的序列最后由j状态结尾的总个数,当然 j 要大于2dp...
        阅读全文
            
        
            
    HDU 1325 拓扑排序
    
            
            
        
摘要:根据题目所给的3个不符合情况的条件,一个个判断图是否符合这3个条件即可1.不能出现内部环,拓扑排序判断2.不能有超过1个点的入度为0,因为只有一个树根3.每个点最多一个入度这里要注意的一点是这个点的数字是乱给的,所以最大值为8,但实际上不一定有8个点,这里记录一个最大值的参数,和一个总共点数的参数来...
        阅读全文
            
        
            
    HDU 1254 条件过程复杂的寻找最短路
    
            
            
        
摘要:这里一看就是找箱子到终点的最短路一开始还傻傻的以为人的位置给的很没有意思- -,然后果然错了没过多久想明白了错误,因为你推箱子并不是你想去哪里推就能去哪推的,首先得考虑人能否过的去,因为可能人被箱子或墙挡住都是可能的虽然想明白了,但还是写了好久改了好久~~代码能力还是太渣了利用dfs判定人能否走到所...
        阅读全文
            
        
            
    HDU 1253 三维数组的图上找最短路
    
            
            
        
摘要:题目大意:从三维空间的(0,0,0)出发到(a-1,b-1,c-1),每移动一个都要时间加一,计算最短时间根据六个方向,开个bfs,像spfa那样计算最短路径就行了,但是要1200多ms,也不知道有没有更好的方法 1 #include 2 #include 3 #include 4 #incl...
        阅读全文
            
        
            
    HDU 1244  DP
    
            
            
        
摘要:题目大意:我们需要将一串数字分成多个确定个数的连续段,在得到所有段的和的最大值定义一个dp[i][j]数组表示在前j个数中取满 i 个段所能得到的最大值那么也就是说明在这道题目当中每一段都是必须要被取到的能够取到的前提是 j >= cnt[i] //表示前 i 段的数字个数总和sum[i] 表示前 ...
        阅读全文
            
        
            
    HDU 1220 简单数学题
    
            
            
        
摘要:题目大意是在魔方上找到有多少对小立方块它们之间连接的点不超过两个因为任意两个立方块之间相连的点就只有0,1,2,4 这样4种情况那么我们只需要考虑总共的组成立方块对数sum = C(2 , n*n*n) = (n*n*n*(n*n*n-1))/2 在n*n*n个立方块中任选两个组合然后减去邻接4个点...
        阅读全文
            
        
            
    HDU 1203 背包问题
    
            
            
        
摘要:题目大意:根据学校的申请费用,根据已有的钱得到最大的offer率这里很明显就是一个价值为概率的背包问题计算两个offer合并的概率 为a + b - a*b 1 #include 2 #include 3 #include 4 using namespace std; 5 const int ...
        阅读全文
            
        
            
    HDU 1176 DP
    
            
            
        
摘要:题目大意:在0~10这11个点上面接饼 , 每秒最多往左或往移动一格,或者保持原地不动令dp[i][j]表示在第 i 秒在 第 j 个点上最多能得到的饼的数量dp[i][j] = max(dp[i-1][j] , dp[i-1][j-1] , dp[i-1][j+1]) + a[i][j] //a[...
        阅读全文
            
        
            
    HDU 1159 LCS最长公共子序列
    
            
            
        
摘要:1 #include 2 #include 3 4 using namespace std; 5 const int N = 1005; 6 #define max(a,b) a>b?a:b 7 8 char a[N] , b[N]; 9 int dp[N][N];10 11 int ma...
        阅读全文
            
        
            
    HDU 1160 排序或者通过最短路两种方法解决
    
            
            
        
摘要:题目大意:给定一堆点,具有x,y两个值找到一组最多的序列,保证点由前到后,x严格上升,y严格下降,并把最大的数目和这一组根据点的编号输出来这里用两种方法来求解:1.我们可以一开始就将数组根据x由大到小排个序,由前往后取,保证x严格上升了只要每次取得过程中找一条x不相等的关于y的最长下降子序列即可,加...
        阅读全文
            
        
            
    HDU 1423 最长上升公共子序列(LCIS)
    
            
            
        
摘要:题目大意:给定两个数字数组a[] , b[],在这两个数组中找一个最长的公共上升子序列,输出最长的长度从别人地方copy的= =LCIS理解:(1)f[i][j] 表示 a的前i,和b串前 j,以b[j]结尾的LCIS的长度;if(a[i]!=b[j) f[i][j]=f[i-1][j];else ...
        阅读全文
            
        
            
    HDU 1114 完全背包问题的转化
    
            
            
        
摘要:题目大意:根据存钱罐中钱的重量,和每一种钱对应的重量和价值,判断钱能否塞满这个重量,如果能,输出得到的最小价值这个问题就是要把它和背包问题连接起来,这里钱取得数目是无穷的,所以这里只需要用到完全背包来解决问题在这里我们定义dp[i][j] 作为重量 j 的条件下,取前 i 中硬币塞满背包可得到的最小...
        阅读全文
            
        
            
    HDU 1085 多重背包转化为0-1背包问题
    
            
    
摘要:题目大意:给定一堆1,2,5价值的硬币,给定三个数表示3种价值硬币的数量,任意取,找到一个最小的数无法取到总价值为M = v[i]*w[i](0 2 #include 3 4 using namespace std; 5 #define max(a,b) a>b?a:b 6 const int ...
        阅读全文
            
        
 
                    
                     
                    
                 
                    
                 
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号