|
7#
楼主 |
发表于 2021-10-15 20:46:14
|
只看该作者
//然后看到了洛谷最优解比我快
发现a也没有必要
于是直接卡到最优解- #include <stdio.h>
- double dp[2][2];//虽然没必要,但万一毒瘤出题人把内存改为4mb呢?(doge)
- int n,a;
- int read(){//快读(没必要)
- int x=0;char ch=getchar();
- while(ch<'0'||ch>'9') ch=getchar();
- while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
- return x;
- }
- double mx(double x,double y){
- return x>y?x:y;//double的max建议手写
- }
- int main(){
- n=read();
- dp[0][1]=100;
- for(int i=1;i<=n;++i){
- a=read();
- dp[1][1]=mx(dp[0][1],dp[0][0]*100.0/a/*mark->dollar*/);//状态转移方程
- dp[1][0]=mx(dp[0][0],dp[0][1]*a/100.0/*dollar->mark*/);
- dp[0][0]=dp[1][0];
- dp[0][1]=dp[1][1];//滚动数组
- }
- printf("%.2f",dp[0][1]);//保险起见可以恶心一点
- /*
- int ans=int(dp[0][1]*100);
- int ans1=ans%100;
- ans/=100;
- cout<<ans<<"."<<ans1;
- */
- return 0;
- }
复制代码 |
|