• 洛谷 CF607B Zuma(区间dp)


    传送门


    解题思路

    显然是区间dp,判断a[i]是否等于a[j],然后再枚举中间节点k即可。

    关键是玄学错误

    一份代码提交后间接性AC?

    (就是一会显示AC,一会再提交就WA掉,一会又AC?)

    莫非是因为用了班主任名字当变量?

    AC记录 WA记录

    感谢 @rcxkk 解答并提供hack数据。

    32行前的else不能加,否则不能保证正确性。

     16

     1 1 1 2 2 1 1 2 2 1 1 1 2 2 1 1

    AC(WA)代码

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cmath>
     4 #include<cstdio>
     5 #include<cstring>
     6 #include<cstdlib>
     7 #include<queue>
     8 #include<set>
     9 #include<map>
    10 #include<vector>
    11 #include<iomanip>
    12 #include<ctime>
    13 #include<stack>
    14 using namespace std;
    15 const int maxn=505;
    16 int n,a[maxn],dp[maxn][maxn];
    17 int main()
    18 {
    19     memset(dp,0x3f,sizeof(dp));
    20     cin>>n;
    21     for(int i=1;i<=n;i++) cin>>a[i];
    22     for(int i=1;i<n;i++){
    23         dp[i][i]=1;
    24         if(a[i]==a[i+1]) dp[i][i+1]=1;
    25         else dp[i][i+1]=2;
    26     }
    27     dp[n][n]=1;
    28     for(int i=3;i<=n;i++){
    29         for(int j=1;j<=n-i+1;j++){
    30             int k=i+j-1;
    31             if(a[j]==a[k]) dp[j][k]=dp[j+1][k-1];
    32             for(int lxl=j;lxl<k;lxl++){
    33                 dp[j][k]=min(dp[j][lxl]+dp[lxl+1][k],dp[j][k]);
    34             }
    35         }
    36     }
    37     cout<<dp[1][n];
    38     return 0;
    39 }

     //辣鸡题目还我睡觉时间!!还我AC率!!呜呜呜~~~

  • 相关阅读:
    JavaScript优美的特性
    指尖初体验之主屏幕操作
    XHTML下css+div布局总结
    CSS表常用小技巧
    让两个DIV居中显示
    用CSS做滑动门
    CSS控制文本自动换行
    符合css规范的下拉菜单(兼容ff\ie6\ie7)
    层垂直居中于浏览器
    用css来强制按比例压缩图片的高度或宽度
  • 原文地址:https://www.cnblogs.com/yinyuqin/p/13838022.html
Copyright © 2020-2023  润新知