hdu2254 奥运
来源:互联网 发布:java 审批流 编辑:程序博客网 时间:2024/04/29 02:10
不明白可以去看Matrix大神的矩阵的十种应用去
code:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAXN = 31;int city_num,city[MAXN];struct Mat{int mat[MAXN][MAXN];}A,E;Mat operator+ (Mat a,Mat b){Mat res;int i,j;for (i=1;i<=city_num;i++){for(j=1;j<=city_num;j++)res.mat[i][j] = ( a.mat[i][j] + b.mat[i][j] )%2008 ;}return res;}Mat operator* (Mat a,Mat b){int i,j,k;Mat res;for (i=1;i<=city_num;i++){for (j=1;j<=city_num;j++){res.mat[i][j] = 0;for(k=1;k<=city_num;k++)res.mat[i][j]=( res.mat[i][j] + a.mat[i][k]*b.mat[k][j] ) % 2008;}}return res;}Mat operator^ (Mat a,int exp){Mat res = E, tmp = a;while(exp){if(exp&1)res = res * tmp;exp >>= 1;tmp = tmp * tmp;}return res;}int GetCity(int x){int i;for (i=1;i<=city_num;i++){if(city[i]==x)return i;} city[++city_num] = x; return city_num;}Mat GetSum(Mat a,int k){if(k==1)return a;if(k&1)return (a^k) + GetSum(a,k-1); return ((a^(k>>1))+E) * GetSum(a,k>>1);}int main(){int a,b,c,d;int i,j,n,k,sum;Mat tem1,tem2;for(i=1;i<=30;i++)for(j=1;j<=30;j++)E.mat[i][j] = (i==j);while (scanf("%d",&n)!=EOF){city_num = 0;memset(city,-1,sizeof(city));memset(A.mat,0,sizeof(A.mat));while (n--){scanf("%d%d",&a,&b);a = GetCity(a);b = GetCity(b);A.mat[a][b]++;}scanf("%d",&k);while (k--){scanf("%d%d%d%d",&a,&b,&c,&d);if(c>d) swap(c,d);a = GetCity(a);b = GetCity(b);if( c==0&&d==0 || a==-1 || b==-1) puts("0");else{if (c>1) printf("%d\n",((GetSum(A,d).mat[a][b]-GetSum(A,c-1).mat[a][b])+2008)%2008);else printf("%d\n",GetSum(A,d).mat[a][b]);}}}return 0;}
- hdu2254 奥运
- HDU2254 奥运 矩阵应用
- hdu2254 矩阵
- hdu2254之矩阵乘法
- 快速矩阵幂HDU2254
- 奥运
- 奥运
- 奥运词汇
- 奥运随想
- 奥运经济
- 奥运经济
- 奥运水立方
- 奥运小报
- 奥运主题曲
- 奥运english
- 奥运中国
- 庆祝奥运
- 奥运直播
- VC2005开发MFC ActiveX控件
- 位运算及一些应用
- POJ 1328 Radar Installion
- 数据库经典基础试题总结
- 我的android学习思维导图(1月26号)
- hdu2254 奥运
- Windows Store apps开发[51]数据绑定(1)绑定模型
- index webrtc
- Visual C++中动态链接库技术浅谈
- javascript如此这般
- 将Cassandra加入linux系统service服务(方便启动与关闭)
- windows下make工具介绍
- JAVA字符集
- jdbc处理mysql乱码