首页 > 其他分享 >1030 完美数列

1030 完美数列

时间:2024-04-17 11:14:44浏览次数:21  
标签:end 数列 no 完美 ll long int vec 1030

直观:(25分)

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
vector<ll> vec;
map<ll,int> mp;//元素-所在下标 
int main(){
	int n;
	ll p;
	cin>>n>>p;
	for(int i=0;i<n;i++){
		int no;
		cin>>no;
		vec.push_back(no);
	} 
	//进行排序
	sort(vec.begin(),vec.end());
    for(int i=0;i<vec.size();i++){
    	ll ele = vec[i];
    	mp[ele] = i;
	}
	//遍历
	int dist = 1; 
	for(int i=0;i<vec.size();i++){
		//作为最小元素
		if(mp[vec[i]*p]){//如果存在 
			dist = max(dist,mp[vec[i]*p]-i+1);
		}else{
			int index = lower_bound(vec.begin(),vec.end(),vec[i]*p)-vec.begin();//第一个大于等于x的元素 
		    dist = max(dist,index-i);
		}
	} 
	cout << dist << '\n';
	return 0; 
}

进一步梳理,如果mp不止一个,那么应该是取最远的那个,所以lower_bound应该用upper_bound,大于mp的第一个,那么这个index-1就是符合要求的。
如果返回的是vec.end(),那么说明没找到,距离最长的自然是最后一个元素了。
使用upper_bound(25分)

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
vector<ll> vec;
int main(){
	int n;
	ll p;
	cin>>n>>p;
	for(int i=0;i<n;i++){
		int no;
		cin>>no;
		vec.push_back(no);
	} 
	int dist = 1;
	vector<ll>::iterator it;
    sort(vec.begin(),vec.end());
    for(int i=0;i<vec.size();i++){
    	ll mp = vec[i] * p;    
        int index = upper_bound(vec.begin(),vec.end(),mp) - vec.begin();
        dist=max(dist,index-i);
	}
	cout << dist << '\n';
	return 0; 
}

标签:end,数列,no,完美,ll,long,int,vec,1030
From: https://www.cnblogs.com/chengyiyuki/p/18140102

相关文章

  • IDEA2023版本创建Spring项目只能勾选17和21却无法使用Java8的完美解决方案
    参考:https://www.jb51.net/program/308256k4b.htm方案一:替换创建项目的源我们只知道IDEA页面创建Spring项目,其实是访问springinitializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。将https://start.spring.io/或者http://start.springboot.io/替换为https://......
  • 猴子吃桃 递归 循环 等比数列
    do-while#include<stdio.h>intmain(){intn=1;//第十天只剩下1个桃子,所以初始值为1intday=9;//第十天是已知条件,所以循环从第九天开始do{n=(n+1)*2;//每天都是前一天的一半加1,所以这里计算后一天的桃子数day--;//天数减1}while(day>=0);//......
  • win10完美去除小箭头
    win10完美去除小箭头1.去掉小箭头regadd"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIcons"/v29/d"%systemroot%\system32\imageres.dll,197"/treg_sz/ftaskkill/f/imexplorer.exeattrib-s-r-h"......
  • P3901 数列找不同
    原题链接题解1看代码,最简单的这叫什么思想?不知道,我暂时叫做信息标记法,但是标记的角度清奇code1#include<bits/stdc++.h>usingnamespacestd;intlate[100005]={0};//离自己最近的相同元素的位置intmaxleft[100005]={0};//最近的一个出现了两次的元素的前一次的位置int......
  • 【SQL】mysql函数列表
    MySQL提供了大量的内置函数,用于处理各种数据类型和执行特定的操作。以下是一些主要的MySQL函数类别和其中的一些函数示例:数学函数ABS(x):返回x的绝对值。CEIL(x) 或 CEILING(x):返回大于或等于x的最小整数。FLOOR(x):返回小于或等于x的最大整数。ROUND(x,d):......
  • 【ZZULIOJ】1052: 数列求和4(Java)
    目录题目描述输入输出样例输入 Copy样例输出 Copycode题目描述输入n和a,求a+aa+aaa+…aa…a(n个a),如当n=3,a=2时,2+22+222的结果为246输入包含两个整数,n和a,含义如上述,你可以假定n和a都是小于10的非负整数输出输出前n项和,单独占一行样例输入 Copy32样例输出......
  • 等差数列-
    importjava.util.Arrays;importjava.util.Scanner;//1:无需package//2:类名必须Main,不可修改publicclassMain{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);//在此输入您的代码...intN=......
  • 基于C语言用递归思想实现斐波那契数列的函数设计
    用C语言并利用递归思想实现设计一个程序,完成斐波那契数列的函数设计,利用递归实现!/********************************************************************* filename: * author :[email protected]* date :2024/04/07* function:利用递归思想实现设计......
  • 双数列-力扣-打家劫舍2
    一个专业的小偷,计划偷窃一个环形街道上沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每......
  • 蓝桥杯,省赛,动态规划专题,青蛙,更小的数,松散子序列,接龙数列
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e5+9;doublex[N],a[N],b[N];doubledp[N][5];intmain(){intn;cin>>n;for(inti=1;i<=n;i++)cin>>x[i];for(inti=1;i<=n-1;i++)cin>>a[i]>>b[i......