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;
}
SGU 160.Magic Multiplying Machine的更多相关文章
- 构造 - SGU 109 Magic of David Copperfield II
Magic of David Copperfield II Problem's Link Mean: 略 analyse: 若i+j为奇数则称(i,j)为奇格,否则称(i+j)为偶格,显然每一次报数后 ...
- sgu 109 Magic of David Copperfield II
这个题意一开始没弄明白,后来看的题解才知道这道题是怎么回事,这道题要是自己想难度很大…… 你一开始位于(1,1)这个点,你可以走k步,n <= k < 300,由于你是随机的走的, 所以你 ...
- SGU 119.Magic pairs
题意: 对于给出的一个整数N,和一对(A0,B0) 找到所有的整数对(A,B)满足 : 对于任意 X,Y 当 A0 * X + B0 * Y 能被 N 整除时 A * X + B * Y 也能被 N ...
- SGU 分类
http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traff ...
- DP:0
小故事: A * "1+1+1+1+1+1+1+1 =?" * A : "上面等式的值是多少" B : *计算* "8!" A *在上面等式 ...
- How do I learn machine learning?
https://www.quora.com/How-do-I-learn-machine-learning-1?redirected_qid=6578644 How Can I Learn X? ...
- 今日SGU 6.5
sgu 160 题意:给你n个数字 数字范围 1 到 m 问你从中取出任意数量的数字使得这些数字的积取模m最大 收获:dp,记录dp的路径 #include<bits/stdc++.h> ...
- Uncompressing Linux___ done, booting the kernel_tekkamanninja-ChinaUnix博客
今天用主线Linux内核移植到MINI6410,主线内核2.6.37.1基本已经支持了MINI6410的板子,所以移植到能够启动起来的阶段很简单,但是在移植的时候还是出现了一个比较常见的问题: MIN ...
- (zhuan) Notes on Representation Learning
this blog from: https://opendatascience.com/blog/notes-on-representation-learning-1/ Notes on Repr ...
随机推荐
- 大型系统OA--需求
1.面向普通用户 普通用户一般都是公司的小职员,上OA都干什么呢?当然是获取信息咯.还有最好很多事儿,不需要跟公司的其他部门的人儿,打交道,直接在网上解决就好了. 收发邮件: 查看自己发动的流程,也就 ...
- 【转】VSync Count 垂直同步
原文:http://blog.csdn.net/yesy10/article/details/7794556 Unity3D中新建一个场景空的时候,帧速率(FPS总是很低),大概在60~70之间.一直 ...
- 《A First Course in Probability》-chaper2-概率论公理
概率论自身有一套很深的理论体系,读过<几何原本>的读者会知道,伟大的欧几里得之所以伟大,是因为它基于几条最基本的公理,推导除了整个欧式几何学的理论体系,同样,在概率论这里,一切的推导都是源 ...
- [2013 ACM/ICPC Asia Regional Hangzhou Online J/1010]hdu 4747 Mex (线段树)
题意: + ;];;;], seg[rt << | ]);)) * fa.setv;) * fa.setv;;], seg[rt << | ], r - l + );;, ...
- hdu 4750 Count The Pairs(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750 代码: #include<cstdio> #include<cstring&g ...
- 利用qemu模拟嵌入式系统制作全过程
http://www.tinylab.org/using-qemu-simulation-inserts-the-type-system-to-produce-the-whole-process/ 利 ...
- Python切割nginx日志_小组_ThinkSAAS
Python切割nginx日志_小组_ThinkSAAS Python切割nginx日志
- 设计模式(4) -- 单例模式(Singleton)
设计模式(4) -- 单例模式(Singleton) 试想一个读取配置文件的需求,创建完读取类后通过New一个类的实例来读取配置文件的内容,在系统运行期间,系统中会存在很多个该类的实例对象,也就是说 ...
- delphi 保存 和 打开 TREE VIEW的节点已经展开的状态
保存 和 打开 TREE VIEW的节点已经展开的状态 如果每次打开后能自动读取上次展开的状态就会非常快捷 下载地址: 实现方法 将已经展开的节点索引 放在一个文本中最后选中的那个节点索引放在最后一位 ...
- hdu 3450 Counting Sequences
/* n*n暴力 这个很好想 */ #include<cstdio> #define maxn 100010 #define mod 9901 using namespace std; i ...