【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 最近上课的时候都很无聊,所以他发明了 ...
随机推荐
- poj1789 Truck History
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 20768 Accepted: 8045 De ...
- 解决港版A1530 ios8 联通4G 电话打不进无法接通的问题,联通4G开关开启方法
GF的iPhone5s港版A1530联通4G老是出现无法接通的问题, 根本原因是没有4G开关.港行iPhone却只有3G开关.也就是说,当启动3G时,却搜到4G信号,但是关闭时却只能关闭3G和2G.让 ...
- ZJOI 游记
在备战YZ提前招生考时去ZJOI玩了趟,ZJ果然人才辈出= =神犇讲课各种神听不懂啊orz day 0 Mon. 上午在AB班愉快地玩耍,下午就去HZ了. HZ真热啊... 学军也是节约= =空调都不 ...
- for循环,pydev提示未使用的变量,解决办法
对于如下代码,pvdev会产生未使用变量的警告 for i in range(5): func() 解决办法: 把变量替换成下划线_,就不会生产告警了.改变后如下: for _ in range(5) ...
- python提取百万数据到csv文件
转自:http://www.2cto.com/kf/201311/258112.html 今天有需求,需要把系统所有用户注册的id和邮箱等信息导出来提供给他们,在mysql里面count了下,大概有3 ...
- HDU 2841 Visible Trees 数论+容斥原理
H - Visible Trees Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- Window环境下Python和Django的安装
转载地址:http://blog.csdn.net/haoni123321/article/details/7593821 1.下载python,本文使用python-2.7.2.msi 2.下载dj ...
- css3之currentColor
一个css3的高效变量currentColor,能够继承(父级)当前字体的颜色属性(代表当前的标签所继承的文字颜色). 参考demo:http://www.zhangxinxu.com/study/2 ...
- js call apply caller callee bind
call apply bind作用类似.即调用一个对象的一个方法,以另一个对象替换当前对象. call 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) ...
- 菜鸟学Linux命令:grep配合ls等使用
linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文 ...