今日总结:
上午温老师讲了些比较基础的数据结构,刚开始就是单调栈,恰好前两行牛客多校都有单调栈的题,借机也好好学了学,线段树之前也专门学过,但啥啥可持久化,主席树,啥啥啥又给我整蒙了,还是一如既往的,开始听懂了,后面越来越蒙,还是回去把洛谷上的基础专题补补= =。下午自闭场,A题很快想出做法,还是调了好久,一开始TLE??分析复杂度1e5 NlogN应该可以啊???后面把cin改成scanf又,,,,,segment faulse????又改,删了一些无关变量,,AC,,,一把心酸,一个小时过了一个题。。。跟榜看J,队友跟我说了题意,,然而理解错了,,调了好久,按着另一个题意看代码看半天(我不信别人都做出来了我做不出来,偏要做出来为止),最后结束了,才提出问题,结果,,才知道自己理解错题意了,,,我,,????最后回到教室马上改题,改了半天,调代码半天,盯着一小段代码,明明没改a[0]啊,后面怎么a[0]变了??看的我自闭了,最后气的一个一个删,删到头,发现,,数组才开了a[2]???我服了。。然后改了马上交,又wa,我tm??,,,回去路上想了想,多次输入我是不是没有清空数组?马上掏出手机改了改代码交上去AC,,一场比赛一下午一晚上过两题,,我真,,,,,菜是原罪。。。。
补最后的***题
ZOJ - 3735
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
double p[200][200];
double ans[10005][500];
int ro[10005];
int ch[120];
int main()
{
int m;
while(~scanf("%d",&m))
{
int c=m*(m-1)*(m-2)/6;
for(int i=0;i<c;i++)
for(int j=0;j<c;j++)
scanf("%lf",&p[i][j]);
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
cin>>ro[i];
for(int i=0;i<c;i++)
ans[0][i]=1.0;
//cout<<ans[0][2];
for(int i=0;i<n;i++)
{
int x;
x=ro[i];
for(int j=0;j<c;j++)
{
// cout<<i+1<<endl;
//if(ans[0][3]!=1) //printf("debug i=%d j=%d\n",i,j);
ans[i+1][x]=max(ans[i+1][x],ans[i][j]*p[j][x]);
ans[i+1][j]=max(ans[i][j]*p[j][x],ans[i+1][j]);
}
}
for(int i=0;i<=n+1;i++)
for(int j=0;j<c;j++)
{;
//printf("%d %d %lf ",i,j,ans[i][j]);
//if(j==c-1)cout<<"\n";
}
double anss=0;
for(int i=0;i<c;i++)
anss=max(anss,ans[n][i]);
printf("%.6lf\n",anss);
}
}

京公网安备 11010502036488号