nyoj1170 最大的数
来源:互联网 发布:显示器屏幕测试软件 编辑:程序博客网 时间:2024/05/29 10:37
是一道贪心的题目,一开始用区间dp做了一遍,竟然超内存了。。。不过就算不超内存肯定也会超时。
题解:
当该数不是1的话肯定是相乘最大,所以就找1处理就好,处理之后该位要变成0。
当1在首尾的时候要特殊判断,找到和它最近的数加起来。
当在其他位置的时候,和最小的数相加,若这里要注意2要特殊判断,一个样例:2 1 1 2,这里第一个1就要加到2上,而不是第三位的1。
#include<iostream>#include<stdio.h>#include<math.h>#include<string.h>#include<vector>#include<list>#include<algorithm>using namespace std;int a[10010];void add(int l,int r);int main(){int n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=0;i<n;i++){if(a[i]==1){if(i==0){if(i+1<n){a[i+1]++;a[i] = 0;}}else if(i==n-1){for(int j=i-1;j>=0;j--){if(a[j]){a[j]++;a[i] = 0;break;}}}else{add(i-1,i+1);}}}int ans = 1;for(int i=0;i<n;i++){if(a[i]) ans = ans * a[i] %10086;}printf("%d\n",ans);} return 0;}void add(int l,int r){while(a[l]==0)l--;if(a[l]==2){a[l]++;a[r-1] = 0;}else{a[l]>a[r]?a[r]++:a[l]++;a[r-1] = 0;}}
0 0
- nyoj1170 最大的数
- nyoj1170 最大的数
- nyoj1170最大的数
- nyoj1170 最大的数
- NYOJ1170 最大的数
- nyoj1170最大的数【贪心】
- NYOJ1170(最大的数)(贪心?)
- NYOJ1170最大数
- nyoj1170
- 最大数的输出
- 最大的回文数
- 最大的数
- 最大的数
- 求三数间最大的数
- 最大的数
- 最大的数
- 最大的数
- NYOJ-最大的数
- IntelliJ IDEA 14.1上JFinal开发环境搭建手册
- Intellij IDEA - JFinal内置Jetty改换端口
- C++ Primer 学习笔记_90_用于大型程序的工具 -错误处理[续3]
- 小孩子教育不好产生如此严重的苦果
- JSP常见错误
- nyoj1170 最大的数
- 一步一步上手IntelliJ IDEA - JFinal最简增删改查系统(之一)
- C++ Primer 学习笔记_91_用以大型程序的工具 -命名空间
- 脚本解析器
- C++ Primer 学习笔记_92_用来大型程序的工具 -命名空间[续1]
- 一步一步上手IntelliJ IDEA - JFinal最简增删改查系统(之二)
- 3. web前端开发分享-css,js提高篇
- python统计字符串里每个字符的次数
- C++ Primer 学习笔记_93_用以大型程序的工具 -命名空间[续2]