zoukankan      html  css  js  c++  java
  • hdu6376 度度熊剪纸条

    思路:

    01背包。有些细节需要注意一下,比如k = 0的情况。

    实现:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef pair<int, int> pii;
     4 const int INF = 0x3f3f3f3f;
     5 
     6 int dp[10005];
     7 
     8 int main()
     9 {
    10     int n, k; string s;
    11     while (cin >> n >> k >> s)
    12     {
    13         k++;
    14         fill(dp, dp + k + 1, -INF);
    15         vector<pii> v;
    16         int begin = 0;
    17         for (int i = 0; i < n; i++)
    18         {
    19             int j = i;
    20             while (j < n && s[j] == '1') j++;
    21             if (j - i)
    22             {
    23                 if (i == 0) { v.push_back(pii(1, j - i)); begin = j - i; }
    24                 else if (j == n) v.push_back(pii(1, j - i));
    25                 else v.push_back(pii(2, j - i));
    26                 i = j;
    27             }
    28         }
    29         if (k == 1) { cout << begin << endl; continue; }
    30         dp[0] = 0;
    31         for (int i = 0; i < v.size(); i++)
    32         {
    33             for (int j = k; j >= 0; j--)
    34                 if (j >= v[i].first)
    35                     dp[j] = max(dp[j], dp[j - v[i].first] + v[i].second);
    36         }
    37         int ans = 0;
    38         for (int i = 0; i <= k; i++) ans = max(ans, dp[i]);
    39         cout << ans << endl;
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    wamp配置虚拟主机
    php单例模式
    YII缓存操作
    YII的延迟加载
    之字形打印二叉树
    对称的二叉树
    二叉树的下一节点
    删除链表的重复节点
    链表中环的入口
    字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/wangyiming/p/9877446.html
Copyright © 2011-2022 走看看