用%d读long long类型,但是int范围内的数一定会出错吗?
  • 板块学术版
  • 楼主PCCP
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/3/30 21:05
  • 上次更新2023/10/23 20:00:24
查看原帖
用%d读long long类型,但是int范围内的数一定会出错吗?
310773
PCCP楼主2023/3/30 21:05

RT,蒟蒻今天写了个最长上升子序列,忘记改%lld了,结果在这组数据错了。

10
-5 -1 8 -4 3 -2 -5 -6 2 -6

那么请问站内各位大佬,用%d读long long类型,但是int范围内的数一定会出错吗?

#include<iostream>
#include<cstdio>
#include<csrting>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1e5+10;
long long a[N],b[N],n,cnt;
int main(){
	scanf("%d",&n);
	b[cnt]=-1e9;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=n;i++){
		int l=0,r=cnt;
		while(l<r){
			int mid=(l+r+1)>>1;
			if(b[mid]>=a[i]){
				r=mid-1;
			}
			else{
				l=mid;
			}
		}
		b[r+1]=a[i];
		if(b[cnt+1]!=0){
			cnt++;
		}
	}
	if(cnt==0){
		printf("1\n");
		return 0;
	}
	printf("%d",cnt);
}
2023/3/30 21:05
加载中...