Electric wave

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 596 Accepted Submission(s): 173

Problem Description
Ali was doing a physic experiment which requires him to observe an electric wave. He needs the height of each peak value and valley value for further study (a peak value means the value is strictly larger than its neighbors and a valley value means the value is strictly smaller than its neighbors). He did write these numbers down but he was too careless that he wrote them in a line without separations, such as “712495” may represent “7 12 4 9 5”. The only information he can remember was:

1. The data begins with a valley value

2. Each value is either a peak value or a valley value

Now he wants to insert blanks to make the data valid. If multiple solutions exist, he will choose the one with more blanks.
 
Input
The input consists several testcases.

The first line contains one integer N (1 <= N <= 100), the length of the data.

The second line contains one string S, the data he recorded.

S contains only digits.
 
Output
Print one integer, the maximum number of blanks he can insert.
 
Sample Input
6
712495
 
Sample Output
4

Hint

The separated data may have leading zeros.

 
Source
就是把一个字符串分成一个个小串,保证是一大一小,我们用dp[flag][i][j]表示第一位是谷还是峰,第一位是从i到j这一段,dp[flag][i][j]=fmax(dp[flag^1][j+1][k]),这样复杂度为n^3,不过,也没有什么好的优化方法,反正a这一题没有问题吧!
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
char str[105];
int dp[2][105][105];
int compare(int i,int j,int a,int b )//前面小返回0大返回1
{
int c;
while(str[i]=='0'&&i<j)
{
i++;
}
while(str[a]=='0'&&a<b)
{
a++;
}
int len1=j-i,len2=b-a;
if(len1<len2)
{
return 0;
}
else if(len1>len2)
{
return 1;
}
else
{
for(c=0;c<=len1;c++)
{
if(str[i+c]!=str[a+c])
{
if(str[i+c]<str[a+c])
{
return 0;
}
else
{
return 1;
}
}
}
return -1;
}
}
int fmax(int a,int b)
{
if(a>b)
return a;
return b;
}
int main ()
{
int n,flag,i,j,k;
while(scanf("%d",&n)!=EOF)
{
scanf("%s",str);
memset(dp,0,sizeof(dp));
{
for(i=n-1;i>=0;i--)
{
for(j=i;j<n;j++)
{
for(flag=0;flag<2;flag++)
for(k=j+1;k<n;k++)
{
if((flag^1)==compare(i,j,j+1,k))
dp[flag][i][j]=fmax(dp[flag][i][j],1+dp[flag^1][j+1][k]);
} }
}
} int maxx=dp[1][0][0];
for(i=0;i<n;i++)
{
if(dp[1][0][i]>maxx)
{
maxx=dp[1][0][i];
}
}
printf("%d\n",maxx);
}
return 0;
}

 

hdu4105  Electric wave的更多相关文章

  1. 简单dp hdu-4105-Electric wave

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4105 题目意思: 给一个字符串,求最大的分隔空格数,记所有被分隔的数为a1,a2,a3,..... ...

  2. RIFF和WAVE音频文件格式

    RIFF file format RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构.RIFF文 ...

  3. IEEE 802.11p (WAVE,Wireless Access in the Vehicular Environment)

    IEEE 802.11p(又称WAVE,Wireless Access in the Vehicular Environment)是一个由IEEE 802.11标准扩充的通讯协定.这个通讯协定主要用在 ...

  4. Wave - 花たん 音乐

    Wave 歌手:花たん 所属专辑:Flower 間違えて宇宙終わって(宇宙因为一个错误而终结了) 青信号はいつも通り(通行的灯号一如往常的) 飛んでまた止まって(又再停止传播) また 飛びそうだ(然后 ...

  5. Web 播放声音(AMR 、WAVE)

    最近甚是苦闷,属于边学边做,跳进了很多坑,别提有多惨了,不过结果还是不错滴,纵观前后,一句话足以概括 “痛并快乐着” ~~~ ok,我少说废话,下面来总结下 Web 播放声音一些注意事项. 说到 We ...

  6. 多媒体(2):WAVE文件格式分析

    目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(2):WAVE文件格式分析

  7. UVa 488 - Triangle Wave

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...

  8. modelsim 中 WAVE窗口中能不能只显示变量名,而不显示路径

    可以的,在wave窗口左下角有一个黑色的logo,你点击它就可以省电路径,只显示port名称,再点击就切换回来了,如图红色圈圈标记的logo,你可以试试!

  9. C# 获取wave文件信息【转】

    public class WaveHelper { /// <summary> /// 数据流 /// </summary> private Stream m_WaveData ...

随机推荐

  1. salon_百度百科

    salon_百度百科     salon    编辑    是法语Salon一字的译音,中文意即客厅,原指法国上层人物住宅中的豪华会客厅.从十七世纪,巴黎的名人(多半是名媛贵妇)常把客厅变成著名的社交 ...

  2. SqlServer和Oracle中一些常用的sql语句7 游标

    declare db_cursor4 scroll cursor for select * from 供应商 --声明游标 open db_cursor4 --打开游标 fetch first fro ...

  3. Android中Parcelable序列化总结

    在使用Parcelable对android中数据的序列化操作还是比较有用的,有人做过通过对比Serializable和Parcelable在android中序列化操作对象的速度比对,大概Parcela ...

  4. HTML+CSS - 前端设计的小技巧(持续更新......)

    2015年7月6日20:28:20 1.设置文字的居中,非控件内的. :text-alain:center 2.图片在ASP.NET中,可以直接拖放到界面,自动形成img控件. 3.CSS直接在全局样 ...

  5. CSDN高校俱乐部2013年秋季北京地区第一站“编程语言的应用及其发展”—北京联合大学

    2013年12月11日晚17:00.CSDN高校俱乐2013年秋季北京地区第一站“编程语言的应用及其发展”在北京联合大学进行. 首先,CSDN总部人员介绍CSDN俱乐部的改版以及线上编程挑战赛.CSD ...

  6. 重操JS旧业第四弹:Date与Global对象

    1 Date原理 Date类型表示时间,js中采用UTC国际协调时间,以1971年1月1日0分0秒0微秒开始,经过的毫秒数来表示时间,比如一年的时间计算 1分:1000*60: 1小时:1000(毫秒 ...

  7. 静态代码检查工具 cppcheck 的使用(可分别集成到VS和QT Creator里)

    CppCheck是一个C/C++代码缺陷静态检查工具.不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误.所谓静态代码检查就是使用一个工具检查我们写的 ...

  8. css 水平居中的办法

    <div style="width: 100%; text-align: center; margin: auto;"> <div style="dis ...

  9. Servlet过滤器——过滤器分析流量

    1.概述 Servlet过滤器可以对用户提交的数据或服务器返回的数据进行更改.任何到达服务器的请求都会首先经过过滤器的处理.本实例应用过滤器的这个特点,编写了一个在过滤器中统计网站流量的实例. 本实例 ...

  10. okHttp封装使用

    package com.zhy.utils.http.okhttp; import android.graphics.Bitmap; import android.graphics.BitmapFac ...