Codeforces Round #239 (Div. 2)

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值