社区讨论
举报@臣萎根 抄袭大量题解
工单反馈版参与者 6已保存回复 13
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 13 条
- 当前快照
- 1 份
- 快照标识符
- @mi7wn55k
- 此快照首次捕获于
- 2025/11/21 04:49 4 个月前
- 此快照最后确认于
- 2025/11/21 06:34 4 个月前
关于举报臣萎根抄题解
臣萎根大量抄袭题解,他还是个初中生QAQ怎么可能完成这题
臣萎根还恶意评分,管理员们可以看看他的评分,把红题评成黑题%%%不得不说这是个“巨佬”。
让我们看看一些证据:
CPP题目:P3285 [SCOI2014]方伯伯的OJ
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <map>
using namespace std;
struct Node{
Node* l;
Node* r;
int cal,val;
Node(){
cal=val=0;
l=r=NULL;
}
};
int n,q,Bi,Ai,Jia,Len,pai;
Node* Root;
map<int,int> wei;
Node* NewNode(){
return new Node();
}
inline int Cal(Node* o,int l,int r)
{
if(o!=NULL)
return o->cal;
r=min(Jia+n,r);
l=max(Jia+1,l);
return (l>r?0:r-l+1);
}
void update(Node* o,int l,int r,int k,int val0,int cao)
{
// printf("%d %d %d %d %d %d\n",l,r,k,val0,cao,pai);
o->cal+=cao;
if(l==r){
if(cao!=-1)
o->val=val0;
return;
}
int mid=(l+r)>>1,l_cal=Cal(o->l,l,mid);
// cout<<"cal: "<<l_cal<<endl;
if(k<=mid)
{
if(o->l==NULL){
o->l=NewNode();
o->l->cal=l_cal;
}
update(o->l,l,mid,k,val0,cao);
}
else
{
if(o->r==NULL){
o->r=NewNode();
o->r->cal=o->cal-1-l_cal;
}
pai+=l_cal;
update(o->r,mid+1,r,k,val0,cao);
}
}
int query(Node* o,int l,int r,int k)
{
if(l==r){
if(!o->val)
o->val=l-Jia;
return o->val;
}
int mid=(l+r)>>1,l_cal=Cal(o->l,l,mid);
if(k<=l_cal)
{
if(o->l==NULL){
o->l=NewNode();
o->l->cal=l_cal;
}
return query(o->l,l,mid,k);
}
else
{
if(o->r==NULL){
o->r=NewNode();
o->r->cal=o->cal+1-l_cal;
}
return query(o->r,mid+1,r,k-l_cal);
}
}
void out(int f,int x){
printf("After %d %d the rank is :\n",f,x);
for(int i=1;i<=n;i++)
printf("%d ",query(Root,1,Len,i));
printf("\nEnd\n");
}
int main()
{
// freopen("scoi.in","r",stdin);
// freopen("scois.out","w",stdout);
Root=NewNode();
scanf("%d%d",&n,&q);
Jia=q;
Root->cal=n;
Bi=Jia;
Ai=Jia+n+1;
Len=n+2*Jia;
int a=0;
while(q--)
{
pai=0;
int f,x,y;
scanf("%d%d",&f,&x);
x-=a;
int w=wei[x];
// cout<<"sd:"<<w<<endl;
if(!w) w=x+Jia;
if(f==1)
{
scanf("%d",&y);
y-=a;
wei[x]=-1;
wei[y]=w;
update(Root,1,Len,w,y,0);
pai++;
a=pai;
printf("%d\n",a);
}
else if(f==2)
{
wei[x]=Bi;
update(Root,1,Len,w,2853,-1);
pai++;
a=pai;
printf("%d\n",a);
update(Root,1,Len,Bi,x,1);
Bi--;
}
else if(f==3)
{
wei[x]=Ai;
update(Root,1,Len,w,2853,-1);
pai++;
a=pai;
printf("%d\n",a);
update(Root,1,Len,Ai,x,1);
Ai++;
}
else
{
a=query(Root,1,Len,x);
printf("%d\n",a);
}
// out(f,x);
}
return 0;
}
回复
共 13 条回复,欢迎继续交流。
正在加载回复...