【Vijos】1218 数字游戏
算法:环形DP+划分型DP
环形DP的思路很简单,将1~n中每一个节点当成起点进行划分型DP即可,关于划分型DP前面论文有介绍~查找tag把~
sxbk!sxbk。。。此题那么水卡了我3个小时。。。变态。。。到头来发现是初始化。!!!!!!!
但我也学到了不少东西~
- #define oo (~(unsigned long long)(0)>>1) 替代了 maxlongint, 将oo+1即可得到负的最大值
- 负数的mod是将它mod后+上mod再mod,例如((a%10)+10)%10),mod出来的并不是负数,但编译器默认负数mod为负数了
- 要注意初始化的问题,不能再被卡了
- 放松心态~
这题真心不难,但sxbk的初始化让我无力吐槽
代码
#include <cstdio> using namespace std;
#define FOR(i, a, n) for(i = a; i <= (n); ++i)
#define NUM(j, i) ((((sum[i]-sum[j-1])%10)+10)%10)
#define oo (~(unsigned long long)(0)>>1) const int N = 80, M = 12;
int i, j, k, l, n, m;
long long a[N], sum[N<<1], d[N][M][2], ans[2];
long long min(const long long& a, const long long& b) { return a < b ? a : b; }
long long max(const long long& a, const long long& b) { return a < b ? b : a; } int main() {
ans[0] = oo, ans[1] = oo+1;
scanf("%d%d", &n, &m);
FOR(i, 1, n) { scanf("%lld", &a[i]); sum[i] = sum[i-1] + a[i]; }
FOR(i, 1, n) sum[i+n] = sum[i+n-1] + a[i];
FOR(l, 0, n-1) {
FOR(i, 1, n) FOR(j, 1, m) d[i][j][0] = oo, d[i][j][1] = oo+1; //丧尽天良的初始化
FOR(i, 1, n) d[i][1][0] = NUM(l+1, l+i), d[i][1][1] = NUM(l+1, l+i);
FOR(k, 2, m) FOR(i, k, n) FOR(j, k-1, i-1)
d[i][k][0] = min(d[i][k][0], d[j][k-1][0] * NUM(j+1+l, i+l)),
d[i][k][1] = max(d[i][k][1], d[j][k-1][1] * NUM(j+1+l, i+l));
ans[0] = min(ans[0], d[n][m][0]);
ans[1] = max(ans[1], d[n][m][1]);
}
printf("%lld\n%lld\n", ans[0], ans[1]);
return 0;
}
【Vijos】1218 数字游戏的更多相关文章
- 【动态规划】Vijos P1218 数字游戏(NOIP2003普及组)
题目链接: https://vijos.org/p/1218 题目大意: 一个N个数的环,分成M块,块内的数求和%10,最后每块地值累乘,求最大和最小. n(1≤n≤50)和m(1≤m≤9)太小了可以 ...
- Vijos_1218_数字游戏_(划分型动态规划+环状动态规划)
描述 https://vijos.org/p/1218 给出n个数围成一个环,将其划分成k个部分,每个部分求和再对10取模,最后将每个部分的值相乘,求其最大值与最小值. 描述 丁丁最近沉迷于一个数字游 ...
- 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版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
- NOIP2003pj数字游戏[环形DP]
题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...
- Codevs 1229 数字游戏
1229 数字游戏 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description Lele 最近上课的时候都很无聊,所以他发明了 ...
随机推荐
- HDU1711
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 为nginx增加nginx_http_concat模块
为nginx增加nginx_http_concat模块 时间 2013-06-05 22:14:56 我行我思 原文 http://www.fanjun.me/?p=562 主题 Nginx 缘由 ...
- Jump Game | & ||
Jump Game | Given an array of non-negative integers, you are initially positioned at the first index ...
- 转MYSQL学习(四) 查询
MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属 ...
- PHP--TP框架----生成验证码的方式
TP框架----生成验证码的方式 xianshi.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
- PHP---TP框架---添加数据-----有三种方式
添加数据 添加数据有三种方式: 第一种: <?php namespace Home\Controller;//这个文件的命名空间 use Think\Controller;//use使用哪一个而 ...
- 【xml】python的lxml库使用
1.官方教程:http://lxml.de/tutorial.html#parsing-from-strings-and-files 最重要的文档,看完基本就能用了 2.lxml支持xpath,xp ...
- Android实现边缘凹凸的View
转载 最近做项目的时候遇到一个卡劵的效果,由于自己觉得用图片来做的话可以会出现适配效果不好,再加上自己自定义view方面的知识比较薄弱,所以想试试用自定义View来实现.但是由于自己知识点薄弱,一开始 ...
- 在ubuntu 14.04 64位系统上安装32位库
转自:http://www.enjoydiy.com/2937.html 有些软件还是依赖32位的库,但是64位的系统已经成为现在的主流.以前的ubuntu可以通过下面的命令安装: ...
- MATLAB学习笔记(一)——入门与操作
(一)简单操作 一.命令行操作 简单的说就跟C语言(更简单来说,就跟手写的一样). 二.变量.数值与表达式 1.变量 (1)命名规则: ①变量名必须以字母开头: ②变量名可以由字母.数字和下画线混合组 ...