BOJ262 Channel Coding DP
来源:互联网 发布:关系型数据库rds 编辑:程序博客网 时间:2024/06/05 02:12
题意:
给一串数字,里面只包含0 -1 1三种数字。
问和为0的最长连续子串。
思路:
遍历一遍,求每个i的sum[i],代表从第一个数字到这个数字的和。
显然如果sum[i]=sum[j],则从i+1到j这j-i个数字的和=0。即次数所求的D=j-i-1。
#include<iostream>#define max(a,b) (a>b?a:b)#define min(a,b) (a<b?a:b)using namespace std;const int N=50005;int n;int data[N];int pos[N];int neg[N];int mx;int main(){int cases;scanf("%d",&cases);while(cases--){mx=0;memset(pos,-1,sizeof(pos));memset(neg,-1,sizeof(neg));pos[0]=0;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",data+i);for(int i=1;i<=n;i++){data[i]+=data[i-1];if(data[i]>=0){if(pos[data[i]]<0){pos[data[i]]=i;}else{mx=max(mx,i-pos[data[i]]);}}else{if(neg[-data[i]]<0){neg[-data[i]]=i;}else{mx=max(mx,i-neg[-data[i]]);}}}if(mx>1)printf("%d\n",mx-1);elseprintf("-1\n");}}
- BOJ262 Channel Coding DP
- BOJ 262 Channel Coding
- Channel
- channel
- channel
- Channel
- channel
- Channel
- Channel
- Coding
- Coding
- coding
- coding
- coding
- coding
- Coding
- coding
- Coding
- linux中用户组的管理(setuid、setgid)
- 每天读一遍,不久你就会变
- Understanding umbraco's "currentPage"
- Android开发十大必备工具(图文)
- 研究了一段时间siverlight,最近需要实现一个动画,此动画是循环滚动的动画
- BOJ262 Channel Coding DP
- 文件下载
- a different object with the same identifier value was already associated with the session 2
- 关于数字签名挺有意思的解释
- 数据库中的1NF、2NF、3NF,BCNF范式解析1
- 远程控制的安装设置和使用
- android通过GPS获得经纬度
- 数据库表就是符合I,II,III范式2
- android中Http和Socket连接的区别?