暴力+降复杂度 BestCoder Round #39 1002 Mutiple

题目传送门

 1 /*
 2     设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id,
 3         若没有,默认加0,nlogn复杂度;
 4     我用暴力竟然水过去了:)
 5 */
 6 #include <cstdio>
 7 #include <iostream>
 8 #include <cstring>
 9 #include <string>
10 #include <algorithm>
11 using namespace std;
12
13 const int MAXN = 1e4 + 10;
14 const int INF = 0x3f3f3f3f;
15 int a[MAXN], b[MAXN];
16
17 int main(void)        //BestCoder Round #39 1002 Mutiple
18 {
19     //freopen ("1002.in", "r", stdin);
20
21     int n;
22
23     while (scanf ("%d", &n) == 1)
24     {
25         memset (b, 0, sizeof (b));
26         for (int i=1; i<=n; ++i)    scanf ("%d", &a[i]);
27
28         long long ans = 0;
29         for (int i=n; i>=1; --i)
30         {
31             ans += b[a[i]];
32             for (int j=1; j*j<=a[i]; ++j)
33             {
34                 if (a[i] % j == 0)
35                 {
36                     b[j] = i;    b[a[i]/j] = i;
37                 }
38             }
39         }
40
41         printf ("%lld\n", ans);
42     }
43
44     return 0;
45 }

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <string>
 5 #include <algorithm>
 6 using namespace std;
 7
 8 const int MAXN = 1e4 + 10;
 9 const int INF = 0x3f3f3f3f;
10 int a[MAXN];
11
12 int main(void)        //BestCoder Round #39 1002 Mutiple
13 {
14     //freopen ("1002.in", "r", stdin);
15
16     int n;
17     long long sum = 0;
18
19     while (scanf ("%d", &n) == 1)
20     {
21         for (int i=1; i<=n; ++i)    scanf ("%d", &a[i]);
22
23         sum = 0;    int k = 0;
24         for (int i=1; i<=n-1; ++i)
25         {
26             k = 0;
27             for (int j=i+1; j<=n; ++j)
28             {
29                 if (a[j] % a[i] == 0)
30                 {
31                     k = j;    break;
32                 }
33             }
34             sum += k;
35         }
36
37         printf ("%lld\n", sum);
38     }
39
40     return 0;
41 }

brute

时间: 2024-10-11 04:17:47

暴力+降复杂度 BestCoder Round #39 1002 Mutiple的相关文章

BestCoder Round #39 1002——降低复杂度——Mutiple

Problem Description WLD likes playing with a sequence a[1..N]. One day he is playing with a sequence of N integers. For every index i, WLD wants to find the smallest index F(i) ( if exists ), that i<F(i)≤n, and aF(i) mod ai = 0. If there is no such a

BestCoder Round #39 1002

Problem Description WLD likes playing with a sequence a[1..N]. One day he is playing with a sequence of N integers. For every index i, WLD wants to find the smallest index F(i) ( if exists ), that i<F(i)≤n, and aF(i) mod ai = 0. If there is no such a

Manacher BestCoder Round #49 ($) 1002 Three Palindromes

题目传送门 1 /* 2 Manacher:该算法能求最长回文串,思路时依据回文半径p数组找到第一个和第三个会文串,然后暴力枚举判断是否存在中间的回文串 3 另外,在原字符串没啥用时可以直接覆盖,省去一个数组空间,位运算 >>1 比 /2 速度快,用了程序跑快200ms左右,位运算大法好 4 */ 5 /************************************************ 6 Author :Running_Time 7 Created Time :2015-8-1

BestCoder Round #1 1002 项目管理 (HDU 4858)

项目管理 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 738    Accepted Submission(s): 260 Problem Description 我们建造了一个大项目!这个项目有n个节点,用很多边连接起来,并且这个项目是连通的!两个节点间可能有多条边,不过一条边的两端必然是不同的节点.每个节点都有一个能量值. 现在我

贪心/二分查找 BestCoder Round #43 1002 pog loves szh II

题目传送门 1 /* 2 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 3 当然有可能两个数和超过p,那么an的值最优,每次还要和an比较 4 注意:不能选取两个相同的数 5 反思:比赛时想到了%p和sort,lower_bound,但是还是没有想到这个贪心方法保证得出最大值,还是题目做的少啊:( 6 */ 7 #include <cstdio> 8 #include <algorithm>

矩阵快速幂---BestCoder Round#8 1002

当要求递推数列的第n项且n很大时,怎么快速求得第n项呢?可以用矩阵快速幂来加速计算.我们可以用矩阵来表示数列递推公式比如fibonacci数列 可以表示为 [f(n)   f(n-1)] = [f(n-1)    f(n-2)] [ 1 1 ]     [ 1 0 ] 设A = [ 1 1 ]  [ 1 0 ] [f(n)   f(n-1)] = [f(n-2)   f(n-3)]*A*A[f(n)   f(n-1)] = [f(2)   f(1)]*A^(n-2)矩阵满足结合律,所以先计算A^

二分图判定+点染色 BestCoder Round #48 ($) 1002 wyh2000 and pupil

题目传送门 1 /* 2 二分图判定+点染色:因为有很多联通块,要对所有点二分图匹配,若不能,存在点是无法分配的,no 3 每一次二分图匹配时,将点多的集合加大最后第一个集合去 4 注意:n <= 1,no,两个集合都至少有一人:ans == n,扔一个给另一个集合 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #include <cstring> 9 #include <cmath> 10 #in

BestCoder Round #4 1002

这题真是丧心病狂,引来今天的hack狂潮~ Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 10    Accepted Submission(s): 3 Problem Description There are N point on X-axis . Miaomiao would like t

HDU BestCoder Round #1 1002 项目管理

项目管理 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 0    Accepted Submission(s): 0 Problem Description 我们建造了一个大项目!这个项目有n个节点,用很多边连接起来,并且这个项目是连通的! 两个节点间可能有多条边,不过一条边的两端必然是不同的节点. 每个节点都有一个能量值. 现在我们