题目大意:两个正整数数列 {a_i} , {b_i} ,长度分别为 n , m ,其中每个数都小于 10。定义一个正整数是“美丽的正整数”,当且仅当:这个数的十进制表示中,至少有一个数位上的数在数列 a_i 出现过,至少有一个数位上的数在数列 b_i 出现过。现在PB希望求出最小的“美丽的正整数”。
这题很简单,有一些细节要注意
比如
3 3
9 9 1
9 9 2
答案是9,不是12。
#include<cstdio>
#include<iostream>
usingnamespace std;
int a[100],b[100];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int x=2147483647,y=2147483647,ans=2147483647;
for (int i=1;i<=n;i++)
scanf("%d",&a[i]),x=min(a[i],x);
for (int i=1;i<=m;i++)
scanf("%d",&b[i]),y=min(b[i],y);
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
if (a[i]==b[j]) ans=min(ans,a[i]);
if (ans!=2147483647) printf("%d\n",ans);
elseif (x>y) printf("%d%d\n",y,x);
else printf("%d%d\n",x,y);
}
Problem 2: 逃亡(100分)
题目大意:
从前有个平面直角坐标系,坐标系里有座学校。这是一个矩形,左下角是 (0,0),右上角是 (n,m)。有 k 个蒟蒻在校园中。第 i 个蒟蒻在 (xi,yi) 的位置。由于一些不可抗因素,所有 xi 互不相同,所有 yi 互不相同。这时 PB 要来抓蒟蒻们做实验了!
#include<cstdio>
#include<iostream>
#include<cstring>
usingnamespace std;
int a[1000005],p[1000005];
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int n,x=0,y=2147483647;
scanf("%d",&n);
memset(p,false,sizeof(p));
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
x=max(x,a[i]);
y=min(y,a[i]);
}
if (x-y>=2)
{
printf("no\n");
continue;
}
if (x==y)
{
if (x+1==n)
{
printf("yes\n");
continue;
}
if (x*2<=n)
{
printf("yes\n");
continue;
}
printf("no\n");
continue;
}
if (x==y+1)
{
int t1=0;
for (int i=1;i<=n;i++)
if (a[i]==y) t1++;
if (t1+1<=x&&x<=t1+(n-t1)/2)
{
printf("yes\n");
continue;
}
printf("no\n");
continue;
}
}
}