摘要:
较为简单的DP,方程:f[i][j]=max(f[i][j-1],f[i-1][j-1]+v[i][j]),其中f[i][j]为前j个花瓶里放i束花的方法数,则答案为f[F][V]. 注意方案的记录sgu104Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/... 阅读全文
摘要:
容易想到,对于某个顶点,先到达总不会比后到达要差,因此本题可用贪心算法,联系图论中的最短路求法,本题可采用dijkstra算法,难点主要在边权的计算上,详见windywinter牛的题解: http://www.briefdream.com/sgu-103/。sgu103Code highlighting produced by Actipro CodeHighlighter (freeware)... 阅读全文
摘要:
三种方法:1、打表 2、用欧拉函数,该方法需要对n进行质因数分解,有公式:若 , 則3、直接模拟+gcd算法,复杂度nlogn我偷懒用第3种.......sgu102Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1#include<iostre... 阅读全文
摘要:
将条件转换为一个图,0~6作为图中的顶点,每一张多米诺骨牌作为一条连接两点数的无向边,那么答案就是一条欧拉路径。判定方法:一个图中存在欧拉路径,当且仅当这个图连通(此题中无需考虑),并且奇点数(即度数为奇数的顶点数)为0或者2。若奇点数为0,则从任意一个顶点开始做一次dfs即可。若奇点数为2,则从其中一个奇点开始做一次dfs即可。注意:1、不要忘了顶点0!2、生成路径后要判断是否连通!3、判断是否... 阅读全文
摘要:
各大OJ首题必备~[代码] 阅读全文
摘要:
此题可用位运算优化的搜索算法来做,主要参考M67牛的位运算教程:http://www.matrix67.com/blog/archives/266主要思想是设置3个参数row,ld,rd分别代表纵列,主对角线和副对角线上的禁位情况,此题与n皇后问题稍有不同,是在n*n的棋盘上放置k个,所以需要稍稍修改,详见程序。sgu224Code highlighting produced by Actipro... 阅读全文
摘要:
此题可用状态压缩来做,首先dfs出单独一行所有可能的放置状态,存入数组s(如n=3时s[1]=000,s[2]=100,s[3]=010,s[4]=001,s[5]=101),并设c[t]为s[t]中1的个数。设f[l][t][k]是前l行已放完,第l行状态为s[t]且前l行共放置k个棋子的方法数,则f[l][t][k]=Sum{f[l-1][i][k-c[k]]},其中s[i]和s[t]需满足:... 阅读全文
摘要:
显然当n<k时答案为0当n>=k时,可分为两步:先在n*n的矩阵中选出k行k列,组成一个k*k的子矩阵,再在k*k的子矩阵中放置k个。前一步的方法数为C(n,k)*C(n,k),后一步的方法数为k!,故答案为(C(n,k))^2*k!。Sgu 222Code highlighting produced by Actipro CodeHighlighter (freeware)http:... 阅读全文