http://codeforces.com/problemset/problem/1005/D

 题意:

给一个仅包含数字的字符串,将字符串分割成多个片段(无前导0),求这些片段里最多有多少是3的倍数

思路一(贪心):

from:https://blog.csdn.net/islittlehappy/article/details/81006849

一个数是3的倍数,则各位的和能被3整除。

对于单独的一个数字,如果是3的倍数,则ans++

否则,考虑连续的两个数字,如果是,则ans++

如果第三个数本身是3的倍数,则ans++

如果第三个数不是3的倍数,则对于前两个数的和对3取余,结果为[1,1]或者[2,2](如果为[1,2],[2,1],则这两个数字能够被3整除)

对于第三个数对3取余,结果为0,1,2

0:第三个数本身能被3整除ans++

1:[1,1,1]是3的倍数取全部,[2,2,1]取后两个   ans++

2:[1,1,2]取后两个 [2,2,2]是3的倍数,取全部  ans++

所以 对于n=3 一定可以找到

 #include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 2e5+; char str[maxn]; int main()
{
scanf("%s",str);
int t=,sum=,ans=,n=;
for(int i=;i<strlen(str);i++)
{
t=(str[i]-'')%;
sum+=t;
n++;
if(t==||sum%==||n==)
{
ans++;
n=sum=;
}
}
printf("%d\n",ans);
return ;
}

思路二(dp):

 #include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <math.h>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <sstream>
const int INF=0x3f3f3f3f;
typedef long long LL;
const int mod=1e9+;
//const double PI=acos(-1);
#define Bug cout<<"---------------------"<<endl
const int maxm=1e6+;
const int maxn=1e6+;
using namespace std; char str[maxn];
LL sum[maxn];//前缀和
int dp[maxn];//dp[i]表示前i个数的答案 int main()
{
scanf("%s",str+);
for(int i=;str[i];i++)
{
if(i==)
sum[i]=str[i]-'';
else
sum[i]=sum[i-]+str[i]-'';
}
int num=;
if((str[]-'')%==)
dp[]=;
for(int i=;str[i];i++)
{
if((str[i]-'')%==)
dp[i]=dp[i-]+;
else
{
for(int j=i-;j>;j--)
{
if((sum[i]-sum[j-])%==)
{
dp[i]=max(dp[i],dp[j-]+);
break;
}
else
dp[i]=dp[i-];
}
}
}
printf("%d\n",dp[strlen(str+)]);
return ;
}

最新文章

  1. Linux下配置python环境
  2. 《疯狂Java讲义》学习笔记——第2章 理解面向对象
  3. Java中实现PHP中的urlencode与rawurlencode
  4. java的spilt(“,”)方法bug处理
  5. Hadoop IPC的代码结构分析
  6. JavaScript入门篇 第一天
  7. 解决java中对URL编码的问题
  8. Java装饰设计模式的例子
  9. 记微信开发(有道翻译api)
  10. 第003篇 深入体验C#项目开发(二)
  11. 微信开发-Jssdk调用分享实例
  12. 关于ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决的方法
  13. LINQ to JavaScript 源码分析
  14. 原生JavaScript常用的DOM操作
  15. hibernate学习(四)hibernate的一级缓存&amp;快照
  16. Kubernetes集群部署史上最详细(二)Prometheus监控Kubernetes集群
  17. angular 1.2.29版本下 动态添加多个表单、 校验全部、 提交 、ng-form方案
  18. Activity回传值报错:Failure delivering result ResultInfo{who=null,request=7,result = 0,data=null}
  19. CyberArticle(eLib电子图书馆)网文快捕
  20. STL_算法_02_排序算法

热门文章

  1. 51nod 算法马拉松3 A:序列分解
  2. POJ 3096:Surprising Strings
  3. Kmeans应用
  4. WebSocket在建立连接时通过@PathParam获取页面传值
  5. Vue.js(19)之 封装calendar组件
  6. sychronized和lock和区别
  7. jquery---利用jquery插件生成二维码
  8. ThinkCMF后台地址加密忘记了无法打开后台怎么办?
  9. 从认证到调度,K8s 集群上运行的小程序到底经历了什么?
  10. hibernate结果集多种映射方案