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\) 满足 ...
 
随机推荐
- 在唯一密钥属性“fileExtension”设置为“.”时,无法添加类型为“mimeMap”的重复集合项
			
在ASP.NET 网站的配置文件中添加了MIME类型,但是运行网站后在IIS上和页面上提示"在唯一密钥属性“fileExtension”设置为“.woff”时,无法添加类型为“mimeMap ...
 - 详解 JavaScript 中 splice() 方法
			
splice() 方法是一个比较少用的方法,但是功能确实很好,并且在我们 coding 的时候,经常有需要 splice() 方法,先介绍一下该方法. 在 JavaScript 中 splice() ...
 - 学习python第十四天,模块
			
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...
 - 数据结构学习-BST二叉查找树  : 插入、删除、中序遍历、前序遍历、后序遍历、广度遍历、绘图
			
二叉查找树(Binary Search Tree) 是一种树形的存储数据的结构 如图所示,它具有的特点是: 1.具有一个根节点 2.每个节点可能有0.1.2个分支 3.对于某个节点,他的左分支小于自身 ...
 - C语言数组篇(五)多级指针和二维数组指针的区别
			
多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[] --> 10个空间的数组 * p[] --> 这10个空间的数组里面存放 ...
 - PHP.21-商品信息管理
			
商品信息管理 在线增删改查和图片信息管理 主要技术:文件上传.图片缩放.数据库基本操作 思路: 1.设计并创建数据库 库名:demodb 表名:goods 编号(id) 名称(name) 商品类型(t ...
 - PHP代码审计6-实战漏洞挖掘-xdcms用户注册页面漏洞
			
xdcms 源码:xdcms v2.0.8 1.配置 [一直下一步(仅为测试)] #数据库账号root,密码为空:管理员账号/密码:xdcms/xdcms #登录后台 2.查看后台登录页面的配置项[x ...
 - django中间件CsrfViewMiddleware源码分析,探究csrf实现
			
Django Documentation csrf保护基于以下: 1. 一个CSRF cookie 基于一个随机生成的值,其他网站无法得到.此cookie由CsrfViewMiddleware产生.它 ...
 - USACO Section1.5 Superprime Rib 解题报告
			
sprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...
 - USACO Section1.2 Transformations 解题报告
			
transform解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...