NOIP 数字游戏
描述
丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你所得的k最大或者最小。
格式
输入格式
输入文件第一行有两个整数,n(1≤n≤50)和m(1≤m≤9)。以下n行每行有个整数,其绝对值不大于104,按顺序给出圈中的数字,首尾相接。
输出格式
输出文件有两行,各包含一个非负整数。第一行是你程序得到的最小值,第二行是最大值。
限制
各个测试点1s,128MB
分析:
f_max[i][j]表示前i个数,分成j分的最大值
f_min[i][j]表示前i个数,分成j分的最小值
下面给出两种转移顺序,第一种是错的,第二种是对的,两者只有顺序不同。。。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
const LL MOD=;
const LL MAX_N=;
const LL MAX_M=;
LL N,M;
LL a[MAX_N];
LL sum[MAX_N];
LL b[MAX_N];
LL f_max[MAX_N][MAX_M];//f[i][j]前 i个数 ,分成 j部分的最大值
LL f_min[MAX_N][MAX_M];//f[i][j]前 i个数 ,分成 j部分的最小值
void calc();
void move_a(LL);
LL MAX;
LL MIN=0x3f3f3f3f;
int main(){ scanf("%lld%lld",&N,&M);
for(LL i=;i<=N;i++){
scanf("%lld",&a[i]);
b[i]=a[i];
sum[i]=sum[i-]+b[i];
} calc();
for(LL i=;i<=M+;i++){//序列向后退 i个单位
move_a(i);
calc();
} cout<<MIN<<endl<<MAX<<endl; return ;
}
void calc(){
memset(f_min,,sizeof(f_min));
memset(f_max,,sizeof(f_max));
memset(f_min,0x3f3f3f3f,sizeof(f_min));
f_max[][]=;
f_min[][]=;
for(LL i=;i<=N;i++){
f_max[i][]=(sum[i]%MOD+MOD)%MOD;
f_min[i][]=(sum[i]%MOD+MOD)%MOD;
}
/* 这个是错的
for(LL i=2;i<=N;i++){//前 i个数
for(LL j=2;j<=M&&j<=i;j++){//分成 j部分
for(LL k=j-1;k<i;k++){//从 k后截断一次
f_max[i][j]=max(f_max[i][j], (f_max[k][j-1]*(((sum[i]-sum[k])%MOD+MOD)%MOD)));
f_min[i][j]=min(f_min[i][j], (f_min[k][j-1]*(((sum[i]-sum[k])%MOD+MOD)%MOD)));
}
}
}
*/
//下面这个才是对的
for(LL j=;j<=M;j++){//分成 j部分
for(LL i=j;i<=N;i++){//前 i个数
for(LL k=j-;k<i;k++){//从 k后截断一次
f_max[i][j]=max(f_max[i][j], (f_max[k][j-]*(((sum[i]-sum[k])%MOD+MOD)%MOD)));
f_min[i][j]=min(f_min[i][j], (f_min[k][j-]*(((sum[i]-sum[k])%MOD+MOD)%MOD)));
}
}
} MAX=max(MAX,f_max[N][M]);
MIN=min(MIN,f_min[N][M]); }
void move_a(LL x){
memset(b,,sizeof(b));
memset(sum,,sizeof(sum));
LL now;
for(LL i=;i<=N;i++){
now=i+x;
if(now>N){
now%=N;
}
b[now]=a[i];
}
for(LL i=;i<=N;i++){
sum[i]=sum[i-]+b[i];
}
}
NOIP 数字游戏的更多相关文章
- 1085 数字游戏 2003年NOIP全国联赛普及组
丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分 ...
- codevs 1085 数字游戏 dp或者暴搜
1085 数字游戏 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单 ...
- Codevs 1085 数字游戏
1085 数字游戏 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 丁丁最近沉迷于一个数字游戏之中 ...
- 1861 奶牛的数字游戏 2006年USACO
codevs——1861 奶牛的数字游戏 2006年USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题解 题目描述 Descript ...
- C语言猜数字游戏
猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...
- 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II
好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...
- java 猜数字游戏
作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...
- 【原创Android游戏】--猜数字游戏Version 0.1
想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...
- 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用
--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
随机推荐
- Android中流式布局和热门标签
1.流式布局特点.应用场景.2.自定义ViewGroup (1)onMeasure:测量子View的宽和高,设置自己的宽和高. (2)onLayout:设置子View的位置. onMeasure:根据 ...
- Eclipse修改背景颜色
windows->peferences->General->Editors->Text EditorAppearance color options:选择Background ...
- spring boot rabbitmq 多MQ配置 自动 创建 队列 RPC
源码地址:https://github.com/hutuchong518/RabbitmqStudy 需求: spring boot 整合 rabbitmq rpc功能, 需要将 请求和响应 ...
- Poj1426
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25721 Accepted: 106 ...
- Linux磁盘管理命令(fdisk,mount,umount,mkfs)
查看磁盘:fdisk -l 一块磁盘可以分14个分区 [root@wendyhost ~]# fdisk -l Disk /dev/sda: 64.4 GB, 64424509440 bytes 25 ...
- PHP下SESSION无法跨页传递的解决
修改PHP.ini1.Windows下PHP的session文件保存路径要设置成为一个绝对路径session.save_path = C:\windows\temp2.为temp设置权限,允许User ...
- css的常用知识点
一.css的引入方式 1.行内引入 直接在标签中定义样式 <p style="background-color: red">test</p> 2.嵌入式引入 ...
- JS不改HTML任何代码就达到动态效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DT ...
- 转!!SQL左右连接中的on and和on where的区别
原博文地址:http://blog.csdn.net/xingzhemoluo/article/details/39677891 原先一直对SQL左右连接中的on and和on where的区别不是太 ...
- detectron安装+caffe2安装
detectron安装+caffe2安装 因为想跑一下facebook最近开源的detectron物体检测平台,所以安装caffe2+detectron 总结: 一定要好好看官方安装教程:https: ...