【违规紫衫】我是ssd
  • 板块学术版
  • 楼主ass_wecan
  • 当前回复17
  • 已保存回复17
  • 发布时间2021/5/25 21:05
  • 上次更新2023/11/4 22:43:45
查看原帖
【违规紫衫】我是ssd
505805
ass_wecan楼主2021/5/25 21:05

我又是ssd,又是btd,但是是真心想求助

本人现在心态已经崩溃了

又没有人帮我看看这两份代码的区别?

眼睛不好,看了好久了,就是看不出来。

1、

#include<bits/stdc++.h>
using namespace std;
const int N=32005;
int n;
int x[N],tree[N],level[N];
inline int read()
{
	int x=0;
	bool w=0;
	char c=getchar();
	while(!isdigit(c))
		w|=c=='-',c=getchar();
	while(isdigit(c))
		x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return w?-x:x;
}
inline int lowbit(int x)
{
	return x&(-x);
}
inline void add(int x,int k)
{
	for(register int i=x;i<=N;i+=lowbit(x))
		tree[i]+=k;
}
inline int sum(int x)
{
	int ans=0;
	for(register int i=x;i;i-=lowbit(i))
		ans+=tree[i];
	return ans;
}
int main()
{
	n=read();
	for(register int i=1;i<=n;++i)
	{
		int y;
		cin>>x[i];
		cin>>y;
		x[i]++;
	}
	for(register int i=1;i<=n;++i)
	{
		int now=sum(x[i]);
		add(x[i],1);
		++level[now];
	}
	for(register int i=1;i<=n;++i)
		cout<<x[i]<<' ';cout<<endl;
	for(register int i=0;i<n;++i)
		printf("%d\n",level[i]);
	return 0;
}

2、

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N=15010;
const int M=32010;
int n,c[M],level[M];
struct Node{
	int x,y;
}node[N];
void add(int x,int y){
	while(x<=M){
		c[x]+=y;
		x+=x&(-x);
	}
}
int ask(int x){
	int res=0;
	while(x>0){
		res+=c[x];
		x-=x&(-x);
	}
	return res;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>node[i].x;int y;cin>>y;
		++node[i].x;  
	}
	for(int i=1;i<=n;i++){
		int cnt=ask(node[i].x); 
		add(node[i].x,1);
		++level[cnt];
	}
	for(register int i=1;i<=n;++i)
		cout<<node[i].x<<' ';cout<<endl;
	for(int i=0;i<n;i++){
		cout<<level[i]<<endl;
	}
}
2021/5/25 21:05
加载中...