摘要: 题意:将一个k进制的高精度数字A转换成m进制数B(k,m<=62)分析:我本来想把数字先转换成10进制,然后再转换成m进制,觉得太麻烦,于是乎问WZC神犇怎样做简单他是这样做的:应用“除n取余法”,我们直接短除A,除数是m还是举例说明吧:7进制下的35,转换成2进制,就用3除以2,商是1,余数是1将1*7再加上第二位的5当成第二个数,继续重复以上步骤说白了了就和10进制的短除法一样,只不过我们在对于每一位短除的处理上采用的是7进制(处理十进制的时候不都是将余数*10加到下一位么~)这样,这个题目完美解决了~PS:代码里写了好多没有用的函数,忽略就好~友情提示:注意将0转换后是否有输出我在 阅读全文
posted @ 2012-10-11 19:11 proverbs 阅读(722) 评论(0) 推荐(0) 编辑
摘要: 题意:给n个block涂4种颜色,要求其中red和green的block为偶数,其余随意。输出方案总数思路:递推,设dp[i][j][k] 表示前i个block ,有j个red,k个green,的方案总数又因为j,k不是奇数就是偶数,可以简化j,k=1则表示奇数,j,k=0表示偶数就可以递推了~用矩阵递推更有效率~def={{2,0,1,1}, {0,2,1,1}, {1,1,2,0}, {1,1,0,2}}ans[0]={0,1,0,0}ans[i]=def^k*ans[i-1]注意:矩阵乘法不满足交换律。View Code 1 #include <cstdio> 2 #incl 阅读全文
posted @ 2012-10-10 22:28 proverbs 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 题意:an=Σ1<=i<=k (an-i*bi)mod 10000分析:典型的矩阵乘法解线性递推式~无限YM MATRIX67神犇~http://www.matrix67.com/blog/archives/276/comment-page-1#comment-223435View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <iostream> 5 6 #define SIZE 110 7 #define mod 1000 阅读全文
posted @ 2012-10-10 21:54 proverbs 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 题意:求S到T的经过k条路径的最短路(这题出的真心好)思路:设d[i][j][k]为从i到j经过k条边的最短路,则d[i][j][k]=d[i][p][k/2]+d[p][j][k/2]利用倍增加速floyd其实说实话矩阵乘法和floyd真心很像,直接写成矩阵乘法的格式了~PS:读入边的时候,第一个元素是边权,我纠结了半天,怎么看图也不连通。。。。View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <iostream> 5 #incl 阅读全文
posted @ 2012-10-10 21:14 proverbs 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 题意:求斐波那契数列第n项,mod 10000思路:本来是需要自己构造矩阵的,可是这题太仁慈了,都给画出来了,不愧是模板题~贡献我丑陋的模板PS:还是要反对模板化的代码,还是亲手打才是最好的,我都是现打的,不过需者自取~View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cstdio> 5 6 #define SIZE 4 7 #define mod 10000 8 9 using namespace std;10 11 str 阅读全文
posted @ 2012-10-10 19:52 proverbs 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 题意:在字符串中的pos位置插入字符串,询问pos位置的字母是谁思路:裸的块状数组,第一次写,“借鉴”了别人的,比我自己yy的短多了。。。自己yy的又长又臭,效率还低,就给出别人的吧。。PS:真心觉得块状数组是个好东西。。。View Code 1 #include <cstdio> 2 #include <cmath> 3 #include <cstring> 4 #include <cstdlib> 5 #include <algorithm> 6 #include <iostream> 7 8 #define N 50 阅读全文
posted @ 2012-10-09 00:49 proverbs 阅读(1124) 评论(0) 推荐(0) 编辑
摘要: 没什么好说的,照着题目模拟就好~(别告诉我你不知道这个是中文题)View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <iostream> 5 6 #define N 60 7 8 using namespace std; 9 10 int n,m,num;11 bool tra[N*N];12 long long fz,fm,ubt,dp[N][N];13 14 long long gcd(long long a,long long 阅读全文
posted @ 2012-10-08 23:26 proverbs 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题意:给定许多根木棒,两边分别涂有不同颜色,问能否将他们连成一条直线。规定只能将相同颜色的两端相连。思路:用TRIE树储存单词,TRIE树最后一个字母的节点编号就是这个单词的编号(可以和<map>类比)并查集检查是否连通——有欧拉路的前提是图连通最后加上无向图欧拉路的判定就好了~奇数度的节点只能有0或2个View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <string> 5 #include <iostream&g 阅读全文
posted @ 2012-10-07 22:03 proverbs 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 求区间第k小值~详细注释见代码:View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 #define M 100005 6 using namespace std; 7 int sorted[M],toleft[30][M],tree[30][M],m,n; 8 void read() 9 {10 for(int i=1;i<=m;i++)11 {12 scanf("%d",&am 阅读全文
posted @ 2012-10-07 09:25 proverbs 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 裸题~注意三维的前缀体积怎么算就好View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 #define N 120 6 7 using namespace std; 8 9 int n,c[N][N][N];10 11 inline int lowbit(int x)12 {13 return x&-x;14 }15 16 void updata(int x,int y,int z,int dt)17 {18 while(x<=n)19 {20 i 阅读全文
posted @ 2012-10-07 09:18 proverbs 阅读(274) 评论(0) 推荐(0) 编辑