A.Line to Cashier
MLE合适么,数组给开大了。很水。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#define inf 99999999
using namespace std;
struct node
{
int k;
int num[110];
int sum;
} po[110];
int main()
{
int t,n,i,j;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&po[i].k);
}
for(i=0; i<n; i++)
{
for(j=0; j<po[i].k; j++)
{
scanf("%d",&po[i].num[j]);
po[i].sum+=po[i].num[j];
}
}
int minn=inf;
int sum=0;
for(i=0; i<n; i++)
{
sum=0;
sum+=po[i].sum*5;
sum+=po[i].k*15;
if(sum<minn)
minn=sum;
}
printf("%d\n",minn);
return 0;
}
B. Garland
wa一次,特殊情况的测试数据是
asd
asdf
哈希。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#define inf 99999999
using namespace std;
int n1[30],n2[30];
int main()
{
int l1,l2,i,j;
char str1[1100],str2[1100];
scanf("%s%s",str1,str2);
l1=strlen(str1);
l2=strlen(str2);
for(i=0; i<l1; i++)
{
int t=str1[i]-'a';
n1[t]++;
}
for(i=0; i<l2; i++)
{
int tt=str2[i]-'a';
n2[tt]++;
}
int sum=0;
for(i=0; i<26; i++)
{
if(n1[i]!=0&&n2[i]!=0)
{
sum+=min(n1[i],n2[i]);
}
}
for(i=0; i<l2; i++)
{
int tt=str2[i]-'a';
if(!n1[tt])
{
printf("-1\n");
return 0;
}
}
if(sum==0)printf("-1\n");
else
printf("%d\n",sum);
return 0;
}
C. Triangle
给两边a,b,输出符合条件的直角三角形,这个三角形三边不能平行坐标轴。
定一个点为原点,枚举其他两个点,比赛时候ps了,跑大数据错了,错在第三边平行坐标轴。。。错过再涨60分
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
int a,b;
double x1,x2,y1,y2;
int i,j;
scanf("%d%d",&a,&b);
for(i=1; i<=1000; i++)
{
x1=i;
y1=sqrt(a*a-x1*x1);
if((int)y1==y1)
{
for(j=1;j<=1000;j++)
{
x2=j;
y2=-sqrt(b*b-x2*x2);
if((int)y2==y2)
{
if(a*a+b*b==((int)x1-(int)x2)*((int)x1-(int)x2)+((int)y1-(int)y2)*((int)y1-(int)y2))
{
if(x1==x2)
{
printf("YES\n");
printf("0 0\n");
printf("%.lf %.lf\n",x1,y1);
printf("%.lf %.lf",-x2,-y2);
return 0;
}
printf("YES\n");
printf("0 0\n");
printf("%.lf %.lf\n",x1,y1);
printf("%.lf %.lf",x2,y2);
return 0;
}
}
}
}
}
if(i==1001)printf("NO\n");
return 0;
}