0
点赞
收藏
分享

微信扫一扫

qduoj10月赛

诗与泡面 2022-08-05 阅读 37


#include<bits/stdc++.h>
using namespace std;
int F[1100];
int find_(int x){
return (F[x]==x)?x:find_(F[x]);
}
int main()
{
int n,m;
while(scanf("%d",&n),n!=0){
scanf("%d",&m);
for(int i=1;i<=n;i++) F[i]=i;
while(m--){
int x,y;
scanf("%d%d",&x,&y);
int fx=find_(x);
int fy=find_(y);
if(fx!=fy){
F[fx]=fy;
}
}
int ans=-1;
for(int i=1;i<=n;i++)
if(F[i]==i) ans++;
cout<<ans<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int a[100000+100];
int b[100000+100];
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
int Max = a[0];
for(int i=1;i<n;i++){
b[i] = Max - a[i];
Max = max(Max,a[i]);
}
int ans=-0x7f7f7f7f;
for(int i=1;i<n;i++)
ans = max(ans,b[i]);
cout<<ans<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int h[1000000*2+10];
int main()
{
int n;
while(~scanf("%d",&n)){
memset(h,0,sizeof(h));
while(n--){
int x;
scanf("%d",&x); x+=1000000;
h[x]++;
}
int f=1;
for(int i=1;i<=1000000*2;i++)
if(h[i]&1) { if(f) { printf("%d",i-1000000); f=!f;} else printf(" %d",i-1000000); }
printf("\n");
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long f[15];
f[1]=1;
for(int i=2;i<12;i++) f[i]=f[i-1]*i;
string s;
while(cin>>s){
long long sum=0;
for(int i=0;i<=11;i++){
int k=0;
for(int j=i+1;j<=11;j++)
if(s[i]>s[j]) k++;
sum+=f[12-i-1]*k;
}
printf("%lld\n",sum+1);
}
return 0;
}
#include <stdio.h>
#define maxn 222222

#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1

int m;
int MAX[maxn<<2];

int max(int a,int b)
{
return a>b? a:b;
}

void PushUP(int rt)
{
MAX[rt]=max(MAX[rt<<1],MAX[rt<<1|1]);
}

void Build(int l,int r,int rt)
{
if(l==r)
{
scanf("%d",&MAX[rt]);
MAX[rt]%=m;
return;
}
int m=(l+r)>>1;
Build(lson);
Build(rson);
PushUP(rt);
}

void Update(int p,int add,int l,int r,int rt)
{
if(l==r)
{
MAX[rt]=add;
return;
}
int m=(l+r)>>1;
if(p<=m)
Update(p,add,lson);
else
Update(p,add,rson);
PushUP(rt);
}

int Query(int L,int R,int l,int r,int rt)
{
if(L<=l&&R>=r)
return MAX[rt];
int m=(l+r)>>1;
int ret=0;
if(L<=m) ret=max(ret,Query(L,R,lson));
if(R>m) ret=max(ret,Query(L,R,rson));
return ret;
}

int main()
{
int N,M;
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&N,&m);
Build(1,N,1);
scanf("%d",&M);
while(M--)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",Query(a,b,1,N,1));

}
}


return 0;
}


举报

相关推荐

0 条评论