1042 数字0-9的数量 1050 循环数组最大子段和 1062 序列中最大的数 1067 Bash游戏 V2 1092 回文字符串
- 两个数a,b(1 <= a <= b <= 10^18)
- 输出共10行,分别是0-9出现的次数
- 10 19
- 1
- 11
- 1
- 1
- 1
- 1
- 1
- 1
- 1
- 1
这道题和有一题统计数字,差不多的,只不过这里统计所有,0的细节稍微特殊考虑一下。
- #include<cstdio>
- #include<algorithm>
- #include<iostream>
- #include<cmath>
- #include<cstring>
- using namespace std;
- typedef long long LL;
- LL st,ed,ans[]={};
- LL make(LL num,int now)
- {
- LL res=,tail=,mi=;
- if (num<&&now==) return ;
- while (num!=)
- {
- if (now==&&num<) break;
- int x=num%;
- num/=;
- res+=(num-(now==))*mi;
- if (x>now) res+=mi;
- if (x==now) res+=tail+;
- tail=(LL)x*mi+tail,mi*=;
- }
- return res;
- }
- int main()
- {
- scanf("%lld%lld",&st,&ed);
- for (int i=;i<=;i++)
- {
- ans[i]=make(ed,i)-make(st-,i);
- printf("%lld\n",ans[i]);
- }
- }
- 第1行:整数序列的长度N(2 <= N <= 50000)
- 第2 - N+1行:N个整数 (-10^9 <= S[i] <= 10^9)
- 输出循环数组的最大子段和。
- 6
- -2
- 11
- -4
- 13
- -5
- -2
- 20
直接爆力+剪枝就过了,普通最大字段和不行,不过可以从前面的非0出发,因为有长度限制。
- #include<cstdio>
- #include<algorithm>
- #include<iostream>
- #include<cmath>
- #include<cstring>
- using namespace std;
- typedef long long LL;
- const int NN=;
- int n;
- int a[NN*];
- int main()
- {
- scanf("%d",&n);
- for (int i=;i<=n;i++)
- {
- scanf("%d",&a[i]);
- a[i+n]=a[i];
- }
- LL ans=,x;
- for (int i=;i<=n;i++)
- {
- x=;
- for (int j=i;j<i+n;j++)
- {
- if (x+a[j]<) break;
- else x+=a[j];
- ans=max(x,ans);
- }
- }
- printf("%lld\n",ans);
- }
- 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10)
- 第2 - T + 1行:T个数,表示需要计算的n。(1 <= n <= 10^5)
- 共T行,每行1个最大值。
- 2
- 5
- 10
- 3
- 4
预处理+输出
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- #include<iostream>
- #include<cstring>
- using namespace std;
- typedef long long LL;
- const int NN=;
- LL a[NN],ans[NN];
- int main()
- {
- a[]=ans[]=;
- a[]=ans[]=;
- for (int i=;i<NN;i++)
- {
- if (i%==) a[i]=a[i/];
- else a[i]=a[i/]+a[i/+];
- ans[i]=max(ans[i-],a[i]);
- }
- int T,x;
- scanf("%d",&T);
- while (T--)
- {
- scanf("%d",&x);
- printf("%lld\n",ans[x]);
- }
- }


- 第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
- 第2 - T + 1行:每行1个数N。(1 <= N <= 10^9)
- 共T行,如果A获胜输出A,如果B获胜输出B。
- 3
- 2
- 3
- 4
- B
- A
- A
发现一个循环的规律吧,然后%一下,输出就可以了
- #include<cstdio>
- #include<iostream>
- #include<cmath>
- #include<algorithm>
- #include<cstring>
- using namespace std;
- const int ans[]={,,,,,,,};
- int main()
- {
- int T,x;
- scanf("%d",&T);
- while (T--)
- {
- scanf("%d",&x);
- x=x%;
- if (x==) x=;
- printf("%c\n",ans[x]+'A');
- }
- }


- 输入一个字符串Str,Str的长度 <= 1000。
- 输出最少添加多少个字符可以使之变为回文字串。
- abbc
- 2
水题,正和反求一次lcs就差不多了。
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- #include<cstring>
- #include<iostream>
- using namespace std;
- const int NN=;
- char a[NN],b[NN];
- int dp[NN][NN];
- int main()
- {
- char temp;
- int n,i,j;
- scanf("%s",a);
- n=strlen(a);
- i=;j=n-;
- while(i<n) b[i++]=a[j--];
- for(i=;i<=n;i++)
- for(j=;j<=n;j++)
- if(a[i-]==b[j-]) dp[i][j]=max(dp[i-][j-]+,max(dp[i-][j],dp[i][j-]));
- else dp[i][j]=max(dp[i-][j-],max(dp[i-][j],dp[i][j-]));
- int ans=n-dp[n][n];
- printf("%d\n",ans);
- }
1042 数字0-9的数量 1050 循环数组最大子段和 1062 序列中最大的数 1067 Bash游戏 V2 1092 回文字符串的更多相关文章
- 51nod 1050 循环数组最大子段和【环形DP/最大子段和/正难则反】
1050 循环数组最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该 ...
- 51nod 1050 循环数组最大子段和
题目链接:51nod 1050 循环数组最大子段和 #include<stdio.h> #include<algorithm> using namespace std; ; l ...
- 51nod 1050 循环数组最大子段和【动态规划】
N个整数组成的循环序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n] ...
- 51Nod 1050 循环数组最大子段和 | DP
Input示例 6 -2 11 -4 13 -5 -2 Output示例 20 分析: 有两种可能,第一种为正常从[1 - n]序列中的最大子字段和:第二种为数组的total_sum - ([1-n] ...
- 51nod 1050 循环数组最大子段和 (dp)
http://www.51nod.com/onlineJudge/questionCode.html#problemId=1050¬iceId=13385 参考:http://blog. ...
- 51nod 1050 循环数组最大子段和 单调队列优化DP
题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 这个呢,这个题之前 求一遍最大值 然后求一遍最小值 ...
- 51nod 循环数组最大子段和(动态规划)
循环数组最大子段和 输入 第1行:整数序列的长度N(2 <= N <= 50000) 第2 - N+1行:N个整数 (-10^9 <= S[i] <= 10^9) 输出 输 ...
- [51NOD1959]循环数组最大子段和(dp,思路)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 这道题的最大子段和有两种可能,一种是常规的子段和,另一种 ...
- 51nod 循环数组最大子段和
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 对于普通的数组,只要求一次最大子段和即可.但是这题是可以循环的,所 ...
随机推荐
- chrome开发工具指南(五)
Main Menu Click More to open the Main Menu. Settings To open Settings, do one of the following: Pre ...
- yum安装mariadb-galera同步
节点 ip地址 hostname 系统版本 程序版本 node1 10.4.90.90 mysql1 db1 ...
- poj 1330 LCA最近公共祖先
今天学LCA,先照一个模板学习代码,给一个离线算法,主要方法是并查集加上递归思想. 再搞,第一个离线算法是比较常用了,基本离线都用这种方法了,复杂度O(n+q).通过递归思想和并查集来寻找最近公共祖先 ...
- Oracle数据库中直方图对执行计划的影响
在Oracle数据库中,CBO会默认目标列的数据在其最小值low_value和最大值high_value之间均匀分布,并按照均匀分布原则,来计算目标列 施加查询条件后的可选择率以及结果集的cardin ...
- 结对编程1.四则运算GUI版
201421123022 王若凡 201421123026 欧阳勇 coding详细代码 a.需求分析: 这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linu ...
- IT之光
作为一个IT界的新新人才,现在拥有第一个博客,可以在这里学习和分享IT方面的知识和技术.
- 201521123075 《Java程序设计》第5周学习总结
1. 本周学习总结 2. 书面作业 作业参考文件下载 1 .代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分 ...
- 201521123009《Java程序设计》第3周学习总结
1. 本周学习总结 2. 书面作业 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pub ...
- 201521123087 《Java程序设计》第3周学习总结
1.本周学习总结 2. 书面作业 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; publ ...
- java程序设计 彩票购买抽奖程序 团队博客
一.项目介绍 题目要求 功能要求: 模拟福利彩票36选7,实现彩票的抽奖与中奖通知功能. 1.允许注册用户,用户信息包括用户id,用户名,密码,账户金额,电话号码等属性. 2.允许注册用户购买彩票:手 ...