SGU 160.Magic Multiplying Machine
时间限制:0.5s
空间限制6M
题意:
给出n个(1<=n<=10000)1~m(2<m<1000)范围内的数,选择其中任意个数,使它们的 乘积 模m 最大,输出最大的分数,和选择的数的编号。
Solution:
DP,
从第一个数开始,f[]记录当前有哪些数可以得到.如果k可以得到令f[k]=1;
再记录路径,和更新ans。
如果单纯使用二重循环将是N*M 的复杂度。有很大可能超过0.5s的时限。
于是这里使用数组实现的记录了哪些数可以得到的链表,p是链表头。
code(31ms AC)
#include<cstdio>
int n, m, x;
int g[10009], pr[1009][2], f[1009][2];
void write (int x) {if (pr[x][0] != 0) write (pr[x][0]);printf ("%d ", pr[x][1]);
}
int main() {scanf ("%d %d", &n, &m);for (int i = 1; i <= n; i++) scanf ("%d", &x), g[i] = x % m;int p = 0, ans = 0;for (int i = 1; i <= n; i++) {for (int j = p; j != 0; j = f[j][1]) {int tem = (g[i] * j) % m;if (tem > 1 && !f[tem][0]) {f[tem][0] = 1; f[tem][1] = p;p = tem, pr[tem][0] = j, pr[tem][1] = i;if (tem > ans) ans = tem;}}if (!f[g[i]][0]) {f[g[i]][0] = 1, f[g[i]][1] = p;p = g[i], pr[g[i]][1] = i;if (g[i] > ans) ans = g[i];}}if (ans > 0) {printf ("%d\n", ans);write (ans);return 0;}puts ("1");return 0;
}
转载于:https://www.cnblogs.com/keam37/p/3904921.html
SGU 160.Magic Multiplying Machine相关推荐
- SGU 109 Magic of David Copperfield II
SGU_109 一开始没有看到Ki是有范围限制的,于是构造了一个最简单的情况,先挪1步,然后把除左上角3个以外全删掉,然后再挪3步,除左上角外两个也删掉.返回的结果是PE,也着实让我困扰了一阵子. 虽 ...
- 史上最全的SGU题目分类
由于SGU上神题遍地,特列此表,便于训练时分类训练. 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traffic Lights 最短路 104 Little Shop ...
- POJ前面的题目算法思路【转】
1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...
- 动态规划详解 转自瞿老师的博客
目录 一.动态规划初探 1.递推 2.记忆化搜索 3.状态和状态转移 4.最优化原理和最优子结构 5.决策和无后效性 二.动态规 ...
- POJ 超详细分类
POJ 各题算法 1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 ...
- Principles of Machine Learning -- Before You Start 翻译
全世界都在学习AI,当然我也不能例外.自动驾驶.人脸识别.遍地的机器人...So,今天起,我将开始着手翻译Principles of Machine Learning全书,全书共7个章节加一个导读,如 ...
- DBA常用Sql语句--留着给自己看
查看表空间的名称及大小: SQL>select t.tablespace_name,round(sum(bytes/(1024*1024)),0) ts_size from dba_tables ...
- Fedora12 编译s3c2416 U-Boot1.3.4的Makefile和头文件
复制Makefile到./ 和smdk2416.h到include/configs 执行: $ make distclean $ make smdk2416_config $make /** (C) ...
- objects365数据集类别对应表
{'name': 'human', 'id': 1} #人 {'name': 'sneakers', 'id': 2} #运动鞋:球鞋:网球鞋 {'name': 'chair', 'id': 3} { ...
最新文章
- 强大的矩阵奇异值分解(SVD)和特征值及其应用
- 清华大数据软件成果亮相第三届数字中国建设峰会成果展览
- Silverlight:正式进入2.0
- java 实现HTTP连接(HTTPClient)
- python27安装-linux安装python2.7
- 多个结果集ResultSet的问题
- JavaScript原型与原型链(总结篇)
- tensorflow与keras的关系
- php获取html中文本框内容_小猿圈Python入门之批量获取html内body内容的方法
- kloxo 一行安装 -cnblogs
- django-admin源码解析
- Spring框架入门程序:获取Bean的三种方式
- 博士生如何进行文献阅读和文献整理?
- 考育婴师看什么书?中级育婴师需要备考多久?
- VBV缓冲区大小-MPEG2规范
- 【转】网页提示“证书错误:导航已阻止”,无法跳转解决办法。
- 解决 VMware 无法复制粘贴问题
- Linux /usr目录挂载到新分区
- Bulletproof零知识证明
- Html HBuilder封装APP
热门文章
- wordpress 当前栏目名,当前栏目的分类名
- Yii2 behavior运用
- visualstudio调试html,Visual Studio Code中调试JavaScript
- 嵌入式软件工程师2021面试指南【转】
- 多级指针和静动态内存的跨函数访问
- python发邮件给女朋友代码_python实现邮件发送完整代码(带附件发送方式)
- Spring事务CallbackPreferringPlatformTransactionManager
- 根据图片地址得到文件流
- run()方法和start()方法测试解析
- 10个常见的JS语言错误总汇