Geometric Progression---cf 567C(求组合方式,map离散)
题目链接:http://codeforces.com/contest/567/problem/C
题意就是有n个数现在要让 ai aj ak 构成公比为K的等比数列(i < j < k);求有多少种组合方法;
我们可以对 a[i] 找 a[i]/k 和 a[i]*k ,设a[i]前面有 x个a[i]/k ;后面有y个 a[i]*k ;那么答案就是所有的x*y的和;由于数据比较大无法引用下标, 所以用map离散一下
- #include <iostream>
- #include <stdio.h>
- #include <string.h>
- #include <algorithm>
- #include <math.h>
- #include <vector>
- #include <map>
- #include <string>
- using namespace std;
- #define INF 0x3f3f3f3f
- #define met(a, b) memset(a, b, sizeof(a))
- #define N 200005
- typedef long long LL;
- int main()
- {
- int n;
- LL k, a[N];
- while(scanf("%d %I64d", &n, &k)!=EOF)
- {
- map<LL, LL> mp1, mp2;
- for(int i=; i<=n; i++)
- {
- scanf("%I64d", &a[i]);
- mp1[a[i]]++;
- }
- LL ans = ;
- for(int i=n; i>=; i--)///倒着来便于统计mp2[x]的个数,即倒着来的数的个数;
- {
- mp1[a[i]] --;///正着来的要减减;
- if(a[i]%k==)
- ans += mp1[a[i]/k] * mp2[a[i]*k];
- mp2[a[i]] ++;
- }
- printf("%I64d\n", ans);
- }
- return ;
- }
这是一个用二分写的,不用map离散化的代码;
- LL a[maxn], b[maxn], l[maxn], r[maxn], n, m;
- LL bin_sreach (LL x)
- {
- LL high = m-, low = ;
- while (high >= low)
- {
- LL mid = (high + low) / ;
- if (b[mid] == x)
- return mid;
- if (b[mid] < x)
- low = mid + ;
- else
- high = mid -;
- }
- return n;
- }
- int main ()
- {
- LL k;
- while (scanf ("%I64d %I64d", &n, &k) != EOF)
- {
- for (LL i=; i<n; i++)
- {
- scanf ("%I64d", &a[i]);
- b[i] = a[i];
- }
- sort (b, b+n);
- m = unique(b, b+n) - b;
- memset (l, , sizeof(l));
- memset (r, , sizeof(r));
- for (LL i=; i<n; i++)
- {
- LL x = bin_sreach(a[i]);
- l[x] ++;
- }
- __int64 ans = ;
- for (LL i=n-; i>=; i--)
- {
- LL x, y, z;
- x = y = n;
- z = bin_sreach(a[i]);
- l[z] --;
- if (a[i] % k == )
- x = bin_sreach(a[i]/k);
- y = bin_sreach(a[i]*k);
- ans += l[x] * r[y];
- r[z] ++;
- }
- printf ("%I64d\n", ans);
- }
- return ;
- }
Geometric Progression---cf 567C(求组合方式,map离散)的更多相关文章
- CodeForces 567C. Geometric Progression(map 数学啊)
题目链接:http://codeforces.com/problemset/problem/567/C C. Geometric Progression time limit per test 1 s ...
- CodeForces 567C Geometric Progression
Geometric Progression Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I ...
- Codeforces Round #Pi (Div. 2) C. Geometric Progression map
C. Geometric Progression Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- map Codeforces Round #Pi (Div. 2) C. Geometric Progression
题目传送门 /* 题意:问选出3个数成等比数列有多少种选法 map:c1记录是第二个数或第三个数的选法,c2表示所有数字出现的次数.别人的代码很短,思维巧妙 */ /***************** ...
- CF 567C(Geometric Progression-map)
C. Geometric Progression time limit per test 1 second memory limit per test 256 megabytes input stan ...
- Codeforces 567C:Geometric Progression(DP)
time limit per test : 1 second memory limit per test : 256 megabytes input : standard input output : ...
- 加和求不同的组合方式数目(dp)
描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如: n=5,5个数分别为1,2,3,4,5,t=5: 那么可能的组合有5=1+4和5=2+3和5=5三种组合方式. 输入 输入的第 ...
- hdu 5278 Geometric Progression 高精度
Geometric Progression Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contes ...
- Codeforces Round #Pi (Div. 2) C. Geometric Progression
C. Geometric Progression time limit per test 1 second memory limit per test 256 megabytes input stan ...
随机推荐
- Apache Avro:一个新的数据交换格式
原文: http://blog.cloudera.com/blog/2009/11/avro-a-new-format-for-data-interchange/ 注:由于个人英语能力有限,翻译不准确 ...
- 一款基于的jQuery仿苹果样式焦点图插件
这次我们要分享的这款jQuery焦点图非常特别,它的外观特别简单,但是又相当大气.焦点图的整体样式是仿苹果样式的,由于jQuery的运用,我们只要点击图片下方的缩略图即可达到图片切换的焦点图特效,这款 ...
- vsftpd 服务移植出现 500 oops : socket 解决
一开始, 在vsftpd 打印的错误是 500 oops : socket 在 vsftpd 源码里面找到 buildroot-2016.05/output/build/vsftpd-3.0.3/sy ...
- How to activate maven profile inside eclipse
How to activate maven profile inside eclipse Normally maven is use for project dependency management ...
- 解决异常:Package should contain a content type part [M1.13]
http://blog.csdn.net/llwan/article/details/8890190 ————————————————————————————————————————————————— ...
- 并查集 - UVALive 6889 City Park
City Park Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=129725 Mean: 在 ...
- Hadoop周边生态软件和简要工作原理(一)
转自:http://www.it165.net/admin/html/201307/1531.html 基本都是在群里讨论的时候,别人问的入门问题,以后想到新的问题再补充进来.但是其实入门问题也很重要 ...
- CSS旋转&翻转,兼容方案
CSS代码,高级浏览器使用transform,ie用滤镜实现. 转自http://aijuans.iteye.com/blog/19364921 /*水平翻转*/ 2 .flipx { 3 -moz- ...
- 梯度下降算法到logistic回归
http://sbp810050504.blog.51cto.com/2799422/1608064/ http://blog.csdn.net/dongtingzhizi/article/detai ...
- 第二百八十节,MySQL数据库-外键链表之一对多,多对多
MySQL数据库-外键链表之一对多,多对多 外键链表之一对多 外键链表:就是a表通过外键连接b表的主键,建立链表关系,需要注意的是a表外键字段类型,必须与要关联的b表的主键字段类型一致,否则无法创建索 ...