您的位置:首页 > 运维架构

Topcoder SRM 636 Div1 A

2016-06-03 13:35 302 查看
题意:这个题意和Div2的C题的题意一样只不过数据更少,估计暴力可过。

#include <bits/stdc++.h>

using namespace std;

class ChocolateDividingEasy
{
public :

int sum[55][55];

int num[4][55];

int n,m;

int ans ;

bool Judge(int ss)
{
int pos = 0;

int sum0 = 0,sum1 = 0,sum2 = 0;

for(int i = 0;i<m;i++)
{
sum0 += num[0][i];

sum1 += num[1][i];

sum2 += num[2][i];

if(sum0 >= ss && sum1 >= ss &&sum2 >= ss)
{
pos++;

sum0 = sum1 = sum2 =0;
}

if(pos >= 3) return true;
}

return pos >= 3;
}

int Ok(int st1,int st2)
{
for(int i = 0;i<m;i++)
{
num[0][i] = sum[st1][i];

num[1][i] = sum[st2][i] - sum[st1][i];

num[2][i] = sum
[i] - sum[st2][i];
}

int l = 0,r = 50*50*10;

int ant = 0;

while(l<=r)
{
int mid = (l+r) >> 1;

if(Judge(mid))
{
ant = mid;

l = mid+1;
}
else r = mid-1;

}

return ant;
}

void solve()
{

ans =  0;

for(int i = 1;i<n;i++)
{
for(int j = i+1; j < n;j++)
{
ans = max(ans,Ok(i,j));
}
}
}

int findBest(vector <string> chocolate)
{
n = chocolate.size();

m = chocolate[0].size();

for(int i = 0;i<n;i++)
{
for(int j = 0;j<m;j++)
{
sum[i+1][j] = sum[i][j] + chocolate[i][j]-'0';
}
}

solve();

return ans;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: