ZJU 2974
来源:互联网 发布:西安办公软件培训中心 编辑:程序博客网 时间:2024/06/05 13:27
题意:给你n个杯子,每个杯子有一定水;
接下来n个操作,表示第i个杯子的水均分到指定的杯子;
求经过m次操作后,各个杯子的水量;
思路:矩阵快速幂;
#include<cstdio>#include<stdlib.h>#include<string.h>#include<string>//#include<map>#include<cmath>#include<iostream>#include <queue>#include <stack>#include<algorithm>#include<set>using namespace std;#define INF 1e8#define inf -0x3f3f3f3f#define eps 1e-8#define LL long long#define maxn 10#define mol 100000007int num;struct matrix{ double a[30][30];//把每次倒水的比率提取出来放在这里面,例如i倒给j几分之几,以便进行计算}origin,answ;//answ保存提取出来比率计算后的答案matrix multiply(matrix x,matrix y)//x与y的矩阵乘法{ matrix temp; for(int i=1;i<=num;i++) { for(int j=1;j<=num;j++) { double ans=0; for(int k=1;k<=num;k++) { ans+=x.a[i][k]*y.a[k][j]; } temp.a[i][j]=ans; } } return temp;}matrix calc(int n)//矩阵快速幂——把提取出来的比率进行n次重复的‘倒’,即n次幂{ while(n)//以下运用二分 { if(n%2==1) answ=multiply(origin,answ); origin=multiply(origin,origin); n/=2; } return answ;}int main(){ int t,n,k,m;double a[30]; scanf("%d",&t); for(int id=0;id<t;id++) {memset(answ.a,0,sizeof(answ.a));memset(origin.a,0,sizeof(origin.a)); scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%lf",&a[i]); num=n;for(int i=1;i<=n;i++) answ.a[i][i]=1; for(int i=1;i<=n;i++) { scanf("%d",&k);//i要平均的倒给之后的k个人 if(k==0)origin.a[i][i]=1.0;//不向任何地方倒,相当于都倒给自己,即1/1 for(int j=1;j<=k;j++) { int p; scanf("%d",&p); origin.a[p][i]=1.0/k;//i倒给p的比率 } } scanf("%d",&m); calc(m);//对数据进行处理 for(int i=1;i<=n;i++)//逐个输出答案 { double ans=0;//初始化 for(int j=1;j<=n;j++)//一列一列处理 ans+=answ.a[i][j]*a[j];//处理后的比率*原始数据 if(i==1) printf("%.2lf",ans); else printf(" %.2lf",ans); } puts(""); } return 0;}
0 0
- ZJU 2974
- zju 1394
- ZJU 1002
- zju 1091
- zju 1025
- zju 2870
- ZJU-1042
- ZJU-1074
- ZJU-1070
- ZJU-1067
- ZJU-1066
- ZJU-1073
- ZJU-1076
- ZJU-1078
- ZJU-2722
- ZJU-1089
- ZJU-1090
- ZJU-1091
- hdu3537 Daizhenyang's Coin 翻硬币,(Mock Turtles游戏)
- poj 1037 DP
- 下一个7年,我是谁?
- UVA - 11732 strcmp() Anyone?
- 奋斗2014
- ZJU 2974
- Google与Facebook的产品研发之道
- select机制
- ZOJ 3587 Marlon's String
- UVA 10054 The Necklace(欧拉回路+输出路径)
- jboss配置让外部能通过ip访问
- UIView
- SetWindowExt与SetViewportExt
- 黑马程序员技术博客之哲学家吃饭问题