hdu 5583
来源:互联网 发布:vb中default是什么意思 编辑:程序博客网 时间:2024/06/07 06:06
思路一直是正确的,总是wa
一开始我估计复杂度是n^2 后来提前把和求出来,就变成n了
就可以直接暴力了
后来在hdu discuss发现,原来是数据有问题
代码如下
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;int main(){int t,cnt=0;scanf("%d",&t);while(t--){cnt++;string s;cin>>s;long long a[100005];memset(a,0,sizeof(a));char temp=s[0];int num=0;for(int i=0;i<s.size();i++){if(s[i]==temp) a[num]++;if(s[i]!=temp) {num++;temp=s[i];a[num]++;} }//for(int i=0;i<=num;i++)//printf("%d ",a[i]);//printf("\n");if(num==0){long long temp=a[0]*a[0];printf("Case #%d: %I64d\n",cnt,temp); continue;}if(num==1){long long temp=(max(a[0],a[1])+1)*(max(a[0],a[1])+1)+(min(a[0],a[1])-1)*(min(a[0],a[1])-1);printf("Case #%d: %I64d\n",cnt,temp); continue;}long long sum=0;for(int i=0;i<=num;i++){sum+=(a[i]*a[i]);} long long ans=0;for(int i=0;i<num;i++){long long res=sum;res-=(a[i]*a[i]+a[i+1]*a[i+1]);res+=(max(a[i],a[i+1])+1)*(max(a[i],a[i+1])+1)+(min(a[i],a[i+1])-1)*(min(a[i],a[i+1])-1);ans=max(ans,res);if(a[i+1]==1&&i+2<=num){res=sum;res-=(a[i]*a[i]+a[i+1]*a[i+1]+a[i+2]*a[i+2]);res+=((a[i]+a[i+2]+1)*(a[i]+a[i+2]+1));ans=max(ans,res);} }printf("Case #%d: %I64d\n",cnt,ans); }}
阅读全文
0 0
- hdu 5583
- hdu 5583
- HDU 5583 枚举。。。区间
- hdu 5583 暴力
- hdu 5583 暴搜加剪枝
- hdu 5583 Numbers
- HDU-5583-暴力
- hdu 5583(贪心)
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- 笔记10: 进程控制的基本概念
- 枚举变量的使用和类型声明
- 示波器中,两同频波形相位差的计算
- Windows远程桌面实现之三(电脑内部声音采集,录音采集,摄像头视频采集)
- spring只扫描指定文件注解
- hdu 5583
- linux初学者-DNS配置篇
- How to install python packages
- <C语言>带参数的主函数理解int main(int argc, char *argv[])
- Xamarin.Forms 用户界面——控件——Style——隐式样式
- VMware虚拟机删除已经安装的centos操作系统
- Google/LintCode:M-摊平嵌套的列表
- 【GDOI2018模拟8.7】最长公共子序列
- CNTK API文档翻译(15)——自然语言理解