【信息奥赛真题训练-普及组】2003年&&佐助题库

//题目 A: 分糖果(CSP-J 2021 T1)
#include<bits/stdc++.h>
using namespace std;
long long n,l,r,ans;
int main() {
	scanf("%lld%lld%lld",&n,&l,&r);
	ans=l/n*n;
	ans=r-ans;
	if(ans>=n) {
		printf("%lld",n-1);
	} else {
		printf("%lld",ans);
	}
	return 0;
}




















//题目 B: 插入排序(CSP-J 2021 T2)
#include <bits/stdc++.h>
using namespace std;  
#define LL long long
struct ss
{
	int index;
	int num;
}A[8010],B[8010];
int n,Q,f,x,y,a[8010];
void sort_bub()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j>=2;j--)
		{
			if(B[j].num<B[j-1].num)swap(B[j],B[j-1]);
		}
	} 
	for(int i=1;i<=n;i++)A[B[i].index].index=i;
}
int main()
{
	scanf("%d%d",&n,&Q);
	for(int i=1;i<=n;i++)scanf("%d",&A[i].num),B[i].num=A[i].num,B[i].index=i;
	sort_bub();  
	while(Q--)
	{
		scanf("%d",&f);
		if(f==1)  
		{
			scanf("%d%d",&x,&y);
			A[x].num=y;  
			int p=A[x].index,btmp=B[p].num;
			B[p].num=y;   
			 
			if(btmp<y) 
			{
				int i=p+1;
				while(i<=n&&B[i].num<y)
				{
					A[B[i].index].index--;
					swap(B[i-1],B[i]);
					i++;
				}
				while(i<=n&&B[i].num==y&&x>B[i].index)
				{
					A[B[i].index].index--;
					swap(B[i-1],B[i]);
					i++;
				}
				A[B[i-1].index].index=i-1;
			}
			else if(btmp>y)
			{
				int i=p-1;
				while(i>=1&&B[i].num>y)
				{
					A[B[i].index].index++;
					swap(B[i],B[i+1]);
					i--;
				}
				while(i>=1&&B[i].num==y&&x<B[i].index)
				{
					A[B[i].index].index++;
					swap(B[i],B[i+1]);
					i--;
				}
				A[B[i+1].index].index=i+1;
			}
		}
		else   
		{
			scanf("%d",&x);
			printf("%d\n",A[x].index); 
		}
	}
	return 0;
}















//题目 C: 网络连接(CSP-J 2021 T3)

#include <bits/stdc++.h>
using namespace std;  
#define LL long long
#define P pair<string,int>
string f,s;
P t[1010]; 
int n;
bool judge() 
{
	int l=s.length(),n2=-1,ff=0,h1=0,h2=0;
	for(int i=0;i<l;i++)
	{
		if(s[i]>='0'&&s[i]<='9')
		{
			if(ff)return false;
			if(s[i]=='0')
			{
				if(n2==-1)ff=1;
			}
			if(n2==-1)n2=0;
			n2=n2*10+s[i]-'0';
			if(h2==0&&n2>255)return false;
			if(h2&&n2>65535)return false;
		}
		else if(s[i]=='.'||s[i]==':')
		{
			ff=0;
			if(s[i]=='.')h1++;		
			else 
			{
				if(h1!=3)return false;
				h2++;
			}
			if(n2<0||n2>255)return false;
			n2=-1;
		}
		else return false;
	}
	if(h1!=3||h2!=1)return false;
	if(n2<0||n2>65535)return false;
	return true;
}
int main()
{
	scanf("%d",&n);
	char ss[100];
	int ll=1;
	for(int y=1;y<=n;y++)
	{
		scanf("%s",ss);f=ss;
		scanf("%s",ss);s=ss;
		if(!judge())printf("ERR\n");
		else
		{
			if(f[0]=='C') 
			{
				int flag=0,i=1;
				for(;i<ll;i++)
				{
					if(t[i].first==s)
					{
						flag=1;
						break;
					}
				}
				if(flag)printf("%d\n",t[i].second);
				else printf("FAIL\n");
			}
			else 
			{
				int flag=1;
				for(int i=1;i<ll;i++)
				{
					if(t[i].first==s)
					{
						flag=0;
						break;
					}
				}
				if(flag)
				{
					t[ll].first=s;
					t[ll].second=y;
					ll++;
					printf("OK\n");
				}
				else printf("FAIL\n");
			}
		}
	}
	return 0;
}

上一篇:Linux 命令行界面下,好玩的东西


下一篇:腾讯云DNSPod全面升级,构建优质云基础资源支撑产业互联网发展