<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ==
      第一題
      題意:走階梯,有限制條件:1.只能走一步或者走兩步 2.不能連續跳兩步
      思路:dp[i][j]表示通過跳j步跳到i個的方案數,那么顯然dp[i][1]==dp[i][1]+dp[i-1][2]+dp[i-1][1]
      而dp[i][2]=dp[i][2]+dp[i-2][1],最后輸出就好了,我用的是python,其他語言的話可能要開long long或者大數

       1 dp=[]
       2 for i in range(0,105):
       3     dp.append([0,0,0,0])
       4 dp[1][1]=1
       5 dp[2][2]=1
       6 dp[2][1]=1
       7 n=int(input())
       8 for i in range(3,105):
       9     dp[i][1]=dp[i][1]+dp[i-1][2]+dp[i-1][1]
      10     dp[i][2]=dp[i][2]+dp[i-2][1]
      11 print(dp[n][1]+dp[n][2])

      第二題:
      題意:求左邊第一個比a[i]大的a[j]的坐標j,定義為L[i]=j,如果沒有則L[i]=0
      和右邊第一個比a[i]的大的a[k]的坐標k,定義R[i]=k,如果沒有則R[i]=0
      求最大的R[i]*L[i]
      做法:沒有什么好i說的,單調棧裸題,建議百度看一下。求出所有的R[i]和L{i],然后求他們的乘積即可

       1 #include<cstdio>
       2 #include<stack>
       3 #include<algorithm>
       4 using namespace std;
       5 typedef long long ll;
       6 const ll N=1e5+5;
       7 ll L[N],R[N];
       8 ll a[N];
       9 int main()
      10 {
      11     ll n;
      12     scanf("%lld",&n);
      13     for(int i=1;i<=n;i++)
      14     {
      15         scanf("%lld",&a[i]);
      16     }
      17     stack<ll>st1;
      18     stack<ll>st2;
      19     for(int i=1;i<=n;i++)
      20     {
      21         while(!st1.empty()&&a[i]>=a[st1.top()])
      22             st1.pop();
      23         if(st1.empty())
      24             L[i]=0;
      25         else
      26             L[i]=st1.top();
      27         st1.push(i);
      28     }
      29     for(int i=n;i>=1;i--)
      30     {
      31         while(!st2.empty()&&a[i]>=a[st2.top()])
      32             st2.pop();
      33         if(st2.empty())
      34             R[i]=0;
      35         else
      36             R[i]=st2.top();
      37         st2.push(i);
      38     }
      39     ll ans=0;
      40     for(int i=1;i<=n;i++)
      41         ans=max(L[i]*R[i],ans);
      42     printf("%lld\n",ans);
      43     return 0;
      44 }

       


      第三題:
      題意:給定n長的序列,可以把序列乘以m 倍變成n*m倍的,求最大連續和,且至少包含一個元素
      做法:1.求出這個序列本身的最大連續和(這種情況下至少選一個)
            2.求包含x個一整個序列(長度為n的)的最大連續和,這種情況下要求序列的和必須大于等于0,并且m大于等于2
            將二者求最大值,第一種就是簡單的最大連續和,注意一下至少選一個,第二題通過dp求出從左至右包含當前元素的最大連續和(從右至左同理)
            那么,答案顯然就兩者之和加上中間包含的序列總和。 

       1 #include<cstdio>
       2 #include<algorithm>
       3 using namespace std;
       4 typedef long long ll;
       5 const ll N=1e5+5;
       6 const ll INF=1e17;
       7 ll dp[N][2];
       8 ll a[N*2];
       9 int main()
      10 {
      11     ll n,m,i;
      12     scanf("%lld %lld",&n,&m);
      13     ll maxsum=0;
      14     ll sum=0;
      15     ll ans=-INF;
      16     for( i=1;i<=n;i++)
      17     {
      18         scanf("%lld",&a[i]);
      19         sum+=a[i];
      20         if(maxsum+a[i]<0)
      21         {
      22             maxsum=0;
      23         }
      24         else
      25         {
      26             maxsum+=a[i];
      27             ans=max(maxsum,ans);
      28         }
      29         ans=max(ans,a[i]);
      30     }
      31     dp[n][0]=a[n];
      32     dp[1][1]=a[1];
      33     for(i=2;i<=n;i++)
      34     {
      35         dp[i][1]=max(dp[i-1][1]+a[i],a[i]);
      36     }
      37     for(i=n-1;i>=1;i--)
      38     {
      39         dp[i][0]=max(dp[i+1][0]+a[i],a[i]);
      40     }
      41     if(sum>0&&m>=2)
      42     {
      43         ll k=(m-2)*sum;
      44         ans=max(k+dp[1][0]+dp[n][1],ans);
      45     }
      46     if(m>=2)
      47     {
      48         ans=max(dp[1][0]+dp[n][1],ans);
      49     }
      50     printf("%lld\n",ans);
      51     return 0;
      52 }

       


      第四題:沒寫了,據說輸出0也有20%,想著三題差不多就跑路了

      posted on 2020-09-06 13:44  Carits  閱讀(545)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 精品无码中文视频在线观看| 亚洲无人区码二码三码区| 亚洲一区二区三区啪啪| 久久免费精品国自产拍网站| 欧美精品黑人粗大破除| 四虎精品永久在线视频| 粗大的内捧猛烈进出小视频| 91精品国产自产91精品| 成人午夜福利一区二区四区| 一区二区三区四区在线不卡高清| 精品中文字幕人妻一二| 免费无遮挡毛片中文字幕| 天美传媒一区二区| 亚洲国产av永久精品成人| 狠狠做五月深爱婷婷天天综合 | 成人午夜大片免费看爽爽爽| 一二三四区无产乱码1000集| 欧美精品黑人粗大破除| 亚洲午夜av久久久精品影院| 激情综合网五月婷婷| 国产盗摄视频一区二区三区| 国产aⅴ夜夜欢一区二区三区| 国产亚洲综合一区二区三区| 大帝AV在线一区二区三区| 国产成人午夜福利院| 91亚洲国产成人久久精品| 国精品无码一区二区三区在线看| 亚洲无人区码一二三四区| 一区二区三区午夜福利院| 欧美大香线蕉线伊人久久| 男人猛躁进女人免费播放| 2021AV在线无码最新| 91中文字幕一区二区| 老色鬼在线精品视频在线观看| 日韩黄色av一区二区三区| 99精品国产一区二区三区| 五月天国产成人AV免费观看| 国产卡一卡二卡三免费入口| 国产嫩草精品网亚洲av| 亚洲热妇无码av在线播放| 久久精品一区二区三区av|