CodeForces - 789B B. Masha and geometric depression---(水坑 分类讨论)
当时题意理解的有点偏差,一直wa在了14组。是q等于0的时候,b1的绝对值大于l的时候,当b1的绝对值大于l的时候就应该直接终端掉,不应该管后面的0的。
题意告诉你b1,q,l,m然后b1和q是一个等比序列的首项和公比,然后l是这个序列出现的数绝对值的最大值。m代表序列有m个数不能被计算在内。问你能写出的最多的序列的元素个数。如果有无限多个输出inf。
分析一下,首先就是无限多个出现的情况。
1.b1==0。此时的序列是无限个0,只要0不在m个数中就是inf,否则就是0。
2.q==0。此时的序列就是b1 +无限个0。首先就是判断一下b1的绝对值是不是大于l,是就输出0.
不是的话就看一看0是不是出现在m个数中,如果没有,就输出inf,否则看一下b1是不是出现在m个数中,如果没有输出1,否则输出0。
3.还有就是q的绝对值等于1的时候,可能出现无限个。
q==1数列就是无限个b1,只要b1不在m个数中就是inf,否则就是0。
q==-1数列就是无限个b1和-b1,看一下b1和-b1是不是出现在m个数中,如果都有就是0,否则就是inf。
4.剩下的情况就没有无限个出现了。
这时候直接从b1不断乘q得到序列的值判断有没有出现在m个数中然后累加就可以了。
原始思路:AC
注意:每种思路有不同解决方法,也可能犯不同的错误
注意lld规范输入输出
分类讨论清楚
若一直错在同一点,赶快换种解法
#include "cstdio"
#include "map"
#include "cstring"
#include "cmath"
#include "iostream"
using namespace std;
#define LL long long
map<LL,LL> arr;
int main()
{
LL b,q,l,m;
while(scanf("%lld%lld%lld%lld",&b,&q,&l,&m)!=EOF)
{
arr.clear();
LL x;
for(int i=;i<m;i++)
{
scanf("%lld",&x);
arr[x]++;
}
LL flag=,cnt=;
LL tm=abs(b);
if(b==||q==)
{
if(tm<=l&&arr.find(b)==arr.end())
{
flag=;
}else
{
flag=;
}
}
else if(q==-)
{
if(tm<=l&&(arr.find(b)==arr.end()||arr.find(-b)==arr.end()))
{
flag=;
}else
{
flag=;
}
}
else if(q==)
{
if(tm<=l&&arr.find(b)==arr.end())
{
flag=;cnt++;
}
else
{
flag=;
}
if(tm<=l){///这里不处理,wrong在第14组,要求一遇到>l的直接不管后面,所以这种思路易出错,还找不出原因
if(<=l&&arr.find()==arr.end()){
flag=;
}
}
}
else if(q<)
{
flag=;
while()
{
if(tm>l)break;
if(tm<=l&&arr.find(b)==arr.end())
{
cnt++;
}
tm*=(-q);
b*=q;
}
}
else if(q>)
{
flag=;
while()
{
if(tm>l)break;
if(tm<=l&&arr.find(b)==arr.end())
{
cnt++;
}
tm*=q;
b*=q;
}
}
if(flag==){
printf("0\n");
}
else if(flag==)
{
printf("inf\n");
}
else if(flag==)
{
printf("%lld\n",cnt);
}
}
return ;
}
解法二:
题意:给出等比数列的b1,q,m个数,问是在等比数列中且不在M个数中又小于l的数的个数。无穷输出inf。
题解:因为是等比数列所以增长很块。暴力求解即可。
可以,可以。。。。。如此。。手段,也是经验丰富
http://www.voidcn.com/blog/qq_33183401/article/p-6543935.html
#include<bits/stdc++.h>
#define ll long long
using namespace std;
set<ll>s;
map<ll,int>mp;
ll b,q,l,m,k;
int main()
{
cin>>b>>q>>l>>m;
for(int i=; i<m; i++)
{
cin>>k;
s.insert(k);
}
int cnt=;
ll ans=;
while(cnt<)
{
cnt++;
if(abs(b)>l) break;
if(s.find(b)==s.end())
ans++;
b*=q;
}
if(ans>)
cout<<"inf"<<endl;
else
cout<<ans<<endl;
}
CodeForces - 789B B. Masha and geometric depression---(水坑 分类讨论)的更多相关文章
- 【cf789B】Masha and geometric depression(分类讨论/暴力)
B. Masha and geometric depression 题意 在黑板上写数列,首项是b,公比是q,超过l时就停止不写.给定m个数,遇到后跳过不写.问一共写多少个数,如果无穷个输出inf. ...
- 【codeforces 789B】Masha and geometric depression
[题目链接]:http://codeforces.com/contest/789/problem/B [题意] 让你一个一个地写出等比数列的每一项 (注意是一个一个地写出); 有m个数字不能写; 且数 ...
- CF789B. Masha and geometric depression
/* CF789B. Masha and geometric depression http://codeforces.com/contest/789/problem/B 水题 各种特判,贼烦 */ ...
- codeforces 789 B. Masha and geometric
链接 B. Masha and geometric depression 题意 给你一个等比数列的首项和公比q,然后给出一个上限l,m个数字,在这个等比数列里,小于l且没有在m个数字里面出现过的可以写 ...
- Codeforces 521E - Cycling City(点双连通分量+分类讨论)
Codeforces 题面传送门 & 洛谷题面传送门 大家都是暴力找生成树然后跳路径,代码不到 50 行(暴论)的一说--好,那本蒟蒻决定提供一种代码 150 行,但复杂度也是线性的分类讨论做 ...
- 【分类讨论】【set】Codeforces Round #407 (Div. 2) B. Masha and geometric depression
模拟一下那个过程,直到绝对值超过l,或者出现循环为止. 如果结束之后,绝对值是超过l的,就输出当前写在黑板上的数量. 如果出现循环,则如果写在黑板上的数量非零,则输出inf(注意!如果陷入的循环是一个 ...
- Codeforces 1236F - Alice and the Cactus(期望+分类讨论)
Codeforces 题面传送门 & 洛谷题面传送门 期望好题. 首先拆方差: \[\begin{aligned} &E((x-E(x))^2)\\ =&E(x^2)-2E(x ...
- Codeforces Round #451 (Div. 2) A. Rounding【分类讨论/易错】
A. Rounding time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...
- Codeforces 685C - Optimal Point(分类讨论+乱搞)
Codeforces 题面传送门 & 洛谷题面传送门 分类讨论神题. 首先看到最大值最小,一眼二分答案,于是问题转化为判定性问题,即是否 \(\exists x_0,y_0,z_0\) 满足 ...
随机推荐
- css样式 body的font-size 为什么用625%
浏览器的默认高度?一般为16px. 为什么用62.5%作为body的默认样式?16px62.5%=10px.* 那么为什么一般多是 16px *625% = 100px; <响应式Web设计实 ...
- ethereum(以太坊)(七)--枚举/映射/构造函数/修改器
pragma solidity ^0.4.10; //枚举类型 contract enumTest{ enum ActionChoices{Left,Right,Straight,Still} // ...
- js面向(基于)对象编程—类(原型对象)与对象
JS分三个部分: 1. ECMAScript标准--基础语法 2. DOM Document Object Model 文档对象模型 3. BOM Browser Object Moldel 浏览 ...
- Git的基本命令介绍
Git的安装 进入官网下载系统所需要的版本 官网地址:https://git-scm.com/downloads 点击下载按钮官方网站一般会根据操作系统的自动下载所需要的Git版本. 下载完成后,点 ...
- NPM安装vue-cli,并创建vue+webpack项目模板
1.安装npm npm 是node.js 的包管理工具, 安装流程地址:https://docs.npmjs.com/cli/install 估计会非常慢,我们可以使用淘宝NPM镜像下载安装:htt ...
- Android 支付宝H5 没有回调
今天测试反馈问题,说,手机上没有安装支付宝的,调用支付宝支付之后,没有回调.不提示成功也不提示失败. 我自己试了半天也都是没有问题 .后来终于可以试出来了. 发现原来是,清单里面注册的Activity ...
- 玩转Openstack之Nova中的协同并发(二)
玩转Openstack之Nova中的协同并发(二) 昨天介绍了Python中的并发处理,主要介绍了Eventlet,今天就接着谈谈Openstack中Nova对其的应用. eventlet 在nova ...
- Percona-Tookit工具包之pt-slave-restart
Preface Sometimes,the threads(especially the SQL_Thread) will be terminated by accident.The ...
- Windows+Python 3.6环境下安装PyQt4
第一步:下载.whl,地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4,这里可以下载不同的python版本对应的包. 第二步:选择一个目录,将下 ...
- (原)Unreal 渲染模块 渲染流程
@author:白袍小道 浏览分享随缘,评论不喷亦可. 扯淡部分: 在temp中,乱七八糟的说了下大致的UE过程.下面我们还是稍微别那么任性,一步步来吧. UE渲染模块牵扯到场景遍历. ...