zoukankan      html  css  js  c++  java
  • [HDOJ5583]Kingdom of Black and White(暴力)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5583

    一个01串,求修改一个位置,使得所有数均为0或1的子串长度的平方和最大。先分块,然后统计好原来的结果,每次更新块,更新最大值。

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <climits>
     6 #include <complex>
     7 #include <fstream>
     8 #include <cassert>
     9 #include <cstdio>
    10 #include <bitset>
    11 #include <vector>
    12 #include <deque>
    13 #include <queue>
    14 #include <stack>
    15 #include <ctime>
    16 #include <set>
    17 #include <map>
    18 #include <cmath>
    19 
    20 using namespace std;
    21 
    22 typedef long long ll;
    23 const int maxn = 100010;
    24 int n;
    25 char s[maxn];
    26 ll grid[maxn];
    27 
    28 int main() {
    29     // freopen("in", "r", stdin);
    30     int T;
    31     scanf("%d", &T);
    32     for(int _ = 1; _ <= T; _++) {
    33         scanf("%s", s);
    34         memset(grid, 0, sizeof(grid));
    35         ll cur = 0, ans = 0;
    36         n = 0; grid[n] = 1;
    37         for(int i = 1; s[i]; i++) s[i] == s[i-1] ? grid[n]++ : grid[++n] = 1;
    38         for(int i = 0; i <= n; i++)    cur += grid[i] * grid[i];
    39         if(n == 0) ans = grid[0] * grid[0];
    40         else {
    41             for(int i = 1; i <= n; i++) {
    42                 if(grid[i] == 1) ans = max(cur+2*(grid[i-1]*grid[i+1]+grid[i-1]+grid[i+1]), ans);
    43                 else {
    44                     if(grid[i-1] >= grid[i]) 
    45                         ans = max(cur+2*(grid[i-1]-grid[i]+1), ans);
    46                     else 
    47                         ans = max(cur+2*(grid[i]-grid[i-1]+1), ans);
    48                 }
    49             }
    50         }
    51         printf("Case #%d: %I64d
    ", _, ans);
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    关于换位思考
    C# 4.0 新特性之参数
    短信猫和短信网关
    win7中cookies位置(IE)
    IIS6.0应用程序池回收和工作进程
    深入理解IIS工作原理
    IIS的启动与停止命令
    汉字和Unicode码(utf8)之间的转换(Pack/Unpack)
    用struct模块处理二进制数据
    python: string的操作函数
  • 原文地址:https://www.cnblogs.com/kirai/p/5412530.html
Copyright © 2011-2022 走看看