Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #include <cstdlib>
- #include <conio.h>
- #include <ctime>
- #include <string>
- #include <cstdio>
- using namespace std;
- const int finalT = 40000;
- const int finalX = 7000;
- const int jewelX = 3502;
- float T = 0.375;
- int book = 8;
- float pskip = 0.5;
- float state [finalX+1][1001] = {};
- float temp [finalX+1][1001] = {};
- int mobs [finalX+1]={};
- int maxlvl [finalT+1]={};
- int minlvl [finalT+1]={};
- double relic [finalX+1]={};
- float roll [11]={0, .1, .1, .1, .1, .1, .1, .1, .1, .1, .1};
- int mobcount()
- {
- mobs[0] = 10 - book;
- int counter = 1;
- int dounter = 1;
- for (int i = 1; i<=finalX; i++)
- {
- if (counter == 500)
- {
- mobs[i] = mobs[i-1] + 2;
- counter = 1;
- }
- else
- mobs[i]=mobs[i-1];
- if(i>=500)
- counter ++;
- }
- for (int i = 1; i<=finalX; i++)
- if (mobs[i]<=0)
- mobs[i]=1;
- cout<<"maxmobs: "<<mobs[finalX]<<endl;
- counter=1;
- maxlvl[0]=1;
- minlvl[0]=1;
- for (int t=1; t<= finalT; t++)
- {
- if (dounter==mobs[maxlvl[t-1]]+1)
- {
- if(maxlvl[t-1]<=jewelX)
- maxlvl[t]=maxlvl[t-1]+10;
- else
- maxlvl[t]=maxlvl[t-1]+1;
- dounter=0;
- }
- else
- {
- maxlvl[t]=maxlvl[t-1];
- }
- if (counter==mobs[minlvl[t-1]]+1)
- {
- minlvl[t]=minlvl[t-1]+1;
- counter=0;
- }
- else
- {
- minlvl[t]=minlvl[t-1];
- }
- //cout<<t<<" maxlevel: " <<maxlvl[t]<< "\t minlevel: "<< minlvl[t]<< endl;
- dounter++;
- counter++;
- }
- cout<<finalT<<" maxlevel: " <<maxlvl[finalT]<< "\t minlevel: "<< minlvl[finalT]<< endl;
- cout<<"When considering <level> at fixed time, \n ensure you consider the value of maxlevel at that time."<<endl;
- cout<<"When considering <surtime> at fixed level, \n ensure you consider the value of time at that minlevel."<<endl;
- for (int i=50; i<=finalX; i++)
- {
- relic[i]= relic[i-10]+pow((i-40.0), 1.5);
- //cout<<i<<" relics: "<< relics[i] <<endl;
- }
- return 0;
- }
- int initial ()
- {
- mobcount();
- for (int i = 0; i<=finalX; i++)
- {
- for (int j=0; j <= mobs[i]+1; j++)
- {
- temp[i][j]=0.0;
- state[i][j]=0.0;
- }
- }
- return 0;
- }
- int F (int x)
- {
- if (x>0)
- return x;
- else
- return 0;
- }
- int main ()
- {
- initial();
- //freopen("output.txt","w",stdout);
- float avglvl = 0.0;
- double avgrate = 0.0;
- float avgtime[finalX+1]= {};
- float avgtimesurpass[finalX+1]={};
- double avgreciptsurpass[finalX+1]={};
- int t=0;
- int bestspace = 1;
- double bestspacerate = 0.0;
- int besttime = 0;
- double besttimerate = 0.0;
- int besttimeavglvl = 1;
- for(int a=1; 1<=a && a<=mobs[1]+1; a++)
- {
- if(a==mobs[1]+1)
- state[1][0]=1.0;
- else
- state[1][a]=1.0;
- cout<<"psi(1)"<<"("<<a%(mobs[1]+1)<<")"<<"("<<t<<")"<<" = " << state[1][a%(mobs[1]+1)]<<endl;
- t++;
- }
- for (int i = 0; i<=finalX; i++)
- {
- for (int j=0; j <= mobs[i]+1; j++)
- {
- temp[i][j]=0.0;
- state[i][j]=0.0;
- }
- }
- temp[1][0]=1;
- while (t<=finalT)
- {
- for (int i=2; i<= finalX; i++)
- {
- for (int j=1; j <= mobs[i]+1; j++)
- {
- if(j==1)
- {
- if (i<=jewelX+1)
- state[i][1]= temp[i-1][0]*(1-pskip) + (pskip)*
- (temp[F(i-2)][0]*roll[1] + temp[F(i-3)][0]*roll[2] + temp[F(i-4)][0]*roll[3] +
- temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
- temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i<=jewelX+11)
- {
- if (i==jewelX+2)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-2)][0]*roll[1]+ temp[F(i-3)][0]*roll[2] + temp[F(i-4)][0]*roll[3] +
- temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
- temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+3)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-3)][0]*roll[2]+ temp[F(i-4)][0]*roll[3] +
- temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
- temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+4)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-4)][0]*roll[3]+ temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
- temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+5)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-5)][0]*roll[4] + temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
- temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+6)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-6)][0]*roll[5] + temp[F(i-7)][0]*roll[6] +
- temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+7)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-7)][0]*roll[6] +
- temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+8)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-8)][0]*roll[7] + temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+9)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-9)][0]*roll[9] + temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+10)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-10)][0]*roll[9] +
- temp[F(i-11)][0]*roll[10]);
- else if (i==jewelX+11)
- state[i][1]= temp[i-1][0] + (pskip)*
- (temp[F(i-11)][0]*roll[10]);
- }
- else
- state[i][1]= temp[i-1][0];
- }
- else
- state [i][j%(mobs[i]+1)] = temp[i][j-1];
- if (state[i][j%(mobs[i]+1)] != 0.0)
- {
- //cout<<"psi("<<i<<")"<<"("<<j%(mobs[i]+1)<<")"<<"("<<t<<")"<<" = " <<
- //state[i][j%(mobs[i]+1)]<<endl;
- avglvl=avglvl+(float(i)*state[i][j%(mobs[i]+1)]);
- avgrate=avgrate+(relic[i]*state[i][j%(mobs[i]+1)])/(0.0+t);
- avgtime[i]=avgtime[i] + ((t+0.0)*state[i][j%(mobs[i]+1)]);
- if (i<=finalX-11 && j==mobs[i]+1)
- {
- if (i<=jewelX)
- {
- avgtimesurpass[i+1]=avgtimesurpass[i+1]+ (t+1)*
- state[i][0];
- avgtimesurpass[i+2]=avgtimesurpass[i+2]+ (t+1)*
- state[i][0]*pskip;
- avgtimesurpass[i+3]=avgtimesurpass[i+3]+ (t+1)*
- state[i][0]*pskip*(1-roll[1]);
- avgtimesurpass[i+4]=avgtimesurpass[i+4]+ (t+1)*
- state[i][0]*pskip*(1-(roll[1]+roll[2]));
- avgtimesurpass[i+5]=avgtimesurpass[i+5]+ (t+1)*
- state[i][0]*pskip*(1-(roll[1]+roll[2]+roll[3]));
- avgtimesurpass[i+6]=avgtimesurpass[i+6]+ (t+1)*
- state[i][0]*pskip*(1-(roll[1]+roll[2]+roll[3]+roll[4]));
- avgtimesurpass[i+7]=avgtimesurpass[i+7]+ (t+1)*
- state[i][0]*pskip*(roll[6]+roll[7]+roll[8]+roll[9]+roll[10]);
- avgtimesurpass[i+8]=avgtimesurpass[i+8]+ (t+1)*
- state[i][0]*pskip*(roll[7]+roll[8]+roll[9]+roll[10]);
- avgtimesurpass[i+9]=avgtimesurpass[i+9]+ (t+1)*
- state[i][0]*pskip*(roll[8]+roll[9]+roll[10]);
- avgtimesurpass[i+10]=avgtimesurpass[i+10]+ (t+1)*
- state[i][0]*pskip*(roll[9]+roll[10]);
- avgtimesurpass[i+11]=avgtimesurpass[i+11]+ (t+1)*
- state[i][0]*pskip*(roll[10]);
- avgreciptsurpass[i+1]=avgreciptsurpass[i+1]+ (relic[i+1]/(t+1))*
- state[i][0];
- avgreciptsurpass[i+2]=avgreciptsurpass[i+2]+ (relic[i+2]/(t+1))*
- state[i][0]*pskip;
- avgreciptsurpass[i+3]=avgreciptsurpass[i+3]+ (relic[i+3]/(t+1))*
- state[i][0]*pskip*(1-roll[1]);
- avgreciptsurpass[i+4]=avgreciptsurpass[i+4]+ (relic[i+4]/(t+1))*
- state[i][0]*pskip*(1-(roll[1]+roll[2]));
- avgreciptsurpass[i+5]=avgreciptsurpass[i+5]+ (relic[i+5]/(t+1))*
- state[i][0]*pskip*(1-(roll[1]+roll[2]+roll[3]));
- avgreciptsurpass[i+6]=avgreciptsurpass[i+6]+ (relic[i+6]/(t+1))*
- state[i][0]*pskip*(1-(roll[1]+roll[2]+roll[3]+roll[4]));
- avgreciptsurpass[i+7]=avgreciptsurpass[i+7]+ (relic[i+7]/(t+1))*
- state[i][0]*pskip*(roll[6]+roll[7]+roll[8]+roll[9]+roll[10]);
- avgreciptsurpass[i+8]=avgreciptsurpass[i+8]+ (relic[i+8]/(t+1))*
- state[i][0]*pskip*(roll[7]+roll[8]+roll[9]+roll[10]);
- avgreciptsurpass[i+9]=avgreciptsurpass[i+9]+ (relic[i+9]/(t+1))*
- state[i][0]*pskip*(roll[8]+roll[9]+roll[10]);
- avgreciptsurpass[i+10]=avgreciptsurpass[i+10]+ (relic[i+10]/(t+1))*
- state[i][0]*pskip*(roll[9]+roll[10]);
- avgreciptsurpass[i+11]=avgreciptsurpass[i+11]+ (relic[i+11]/(t+1))*
- state[i][0]*pskip*(roll[10]);
- }
- else
- {
- avgtimesurpass[i+1]=avgtimesurpass[i+1]+ (t+1)*
- state[i][0];
- avgreciptsurpass[i+1]=avgreciptsurpass[i+1]+ (relic[i+1]/(t+1))*
- state[i][0];
- }
- }
- }
- }
- }
- for (int i=1; i<= finalX; i++)
- for (int j=1; j <= mobs[i]+1; j++)
- temp[i][j%(mobs[i]+1)]=state[i][j%(mobs[i]+1)];
- /*if (t%100 == 0)
- {
- cout<< "time: "<<t<<" <level>: "<<avglvl<<"\t <rate>: "<< avgrate<< endl;
- }*/
- if (avgrate >= besttimerate)
- {
- besttimerate=avgrate;
- besttime=t;
- besttimeavglvl = avglvl;
- }
- avglvl=0.0;
- avgrate=0.0;
- t++;
- }
- for (int i=10; i<= finalX; i=i+10)
- {
- if (avgreciptsurpass[i]>=bestspacerate)
- {
- bestspacerate=avgreciptsurpass[i];
- bestspace=i;
- }
- }
- cout<<"first is idle strategy with fixed time. second with fixed space."<<endl;
- cout <<"reach time: "<<besttime<<" <reached level>: "<<besttimeavglvl << " <rate>: " <<besttimerate <<endl;
- cout<<"surpass level: "<<bestspace<<" <surpass time>: " <<avgtimesurpass[bestspace]<< " <rate>: " << bestspacerate <<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement