NYOJ 1170 最大的数 贪心
来源:互联网 发布:mac chrome 书签位置 编辑:程序博客网 时间:2024/06/05 09:09
最大的数
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
- 小明和小红在打赌说自己数学学的好,于是小花就给他们出题了,考考他们谁NB,题目是这样的给你N个数在这n个数之间添加N-1个*或+,使结果最大,但不可以打乱原顺序,请得出这个结果如1 3 5结果是(1+3)*5=20;最大可以添加若干个括号,但一定要保证配对,但是每两个数之间只可能有一个*或+数列最前和最后不应有+或乘小明想赢小红但是他比较笨,请你帮帮他
- 输入
- 多组测试数据以EOF结束,每组有一个n(n<10000),然后有n个正整数a[i](1<=a[i]<=20)
- 输出
- 输出最大的结果由于结果比较大,结果对10086取余
- 样例输入
31 2 335 1 2
- 样例输出
915
- 来源
- calamity_coming
- 上传者
- ACM_孙毓阳
思考:主要是对一进行处理,左加还是右加。
#include<stdio.h>#define MOD 10086int s[10005];void add(int a,int b){ if(s[a]==2) { s[a]++; return; } while(!s[a])//找到前一个不为0的数,其实要么是s[a],要么是s[a-1] a--; s[a]<=s[b]?s[a]++:s[b]++;//当s[a]=s[b]时也必须s[a]++}int main(){ int t; while(~scanf("%d",&t)) { int ans=1; for(int i=0;i<t;i++) scanf("%d",&s[i]); if(s[0]==1) s[0]=0,s[1]++; for(int i=1;i<t-1;i++) if(s[i]==1) s[i]=0,add(i-1,i+1); if(s[t-1]==1) { s[t-1]=0; int j=t-2; while(!s[j]) j--; s[j]++; } for(int i=0;i<t;i++) if(s[i]) { ans*=s[i]; if(ans>=MOD) ans%=MOD; } printf("%d\n",ans); }}
阅读全文
0 0
- nyoj 1170 最大的数(贪心)
- NYOJ 1170 最大的数 贪心
- NYOJ 1170 最大的数(贪心算法)
- NYOJ 448 最大数 贪心
- 寻找最大数 NYOJ 贪心
- 最大的数 nyoj 1170
- NYOJ 1170 最大的数
- NYOJ-1170 最大的数
- nyoj 448 寻找最大数(贪心)
- NYOJ 448 寻找最大数【贪心】
- nyoj 448寻找最大数(贪心)
- NYOJ 448 寻找最大数(贪心)
- NYOJ 448 寻找最大数 (贪心)
- NYOJ 448 寻找最大数(贪心)
- NYOJ-最大的数
- 最大的数(nyoj 1170)
- NYOJ 1170 最大的数(待续)
- NYOJ题目1170-最大的数
- ORB_SLAM2再学习——单目
- ivado HLS和OpenCV
- JavaScript-day17-个人学习笔记
- pycharm当中,如何导入python2或者python3环境
- 动态规划--(最长公共子序列 poj1458)
- NYOJ 1170 最大的数 贪心
- HDOJ 1262 寻找素数对
- GridBagConstraints参数详解
- 快速了解ES6/ES2015
- ES教程
- windows 重装系统后必装的软件(根据个人使用情况整理,欢迎读者在评论推荐其他好用的软件)
- Java Web开发(ER模型/DAO/JDBC/Tomcat中间件/JSP)
- Android Picasso的基本使用
- SGU