130712做题报告

来源:互联网 发布:multsim mac 编辑:程序博客网 时间:2024/05/17 05:07
做的略伤心。。第一题虽说用的暴搜但是思路并没有错误,但是却莫名的W了n次。回头改成按时间段来开数组。。
A:Free Cash
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <string>#include <algorithm>using namespace std;int s[100005];int main(){    int n,a,b,sum,q;    scanf("%d",&n);    for(int i=0;i<n;i++)    {        scanf("%d%d",&a,&b);        s[i] = a * 60 + b;    }    sort(s,s+n);    sum = 1;    q = 1;    for(int i=1;i<n;i++)    {        if(s[i] == s[i-1])        {            sum++;            i++;            while(s[i] == s[i-1]&&i != n)            {                sum++;                i++;            }            if(sum > q)            {                q = sum;            }            sum = 1;            i--;        }    }    printf("%d\n",q);    return 0;}

C. Primes on Interval

想不通错哪了。。求指教。。
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <string>#include <algorithm>using namespace std;bool s[1000005];int su[500005];int shu;int aa,a,b,k,aim,lia;void get(int x){    memset(s,0,sizeof(s));    shu = 0;    s[0] = s[1] = 1;    for(int i=2;i<=x;i++)        if(s[i] == 0)            for(int j=i*2;j<=x;j+=i)                s[j] = 1;    for(int i=2;i<=x;i++)    {        if(s[i] == 0)        {            su[shu] = i;            shu++;        }    }}int fen(int y){    int high,low,mi;    high = shu;    low = -1;    mi = (high + low) / 2;    while(high - low > 1)    {        if(su[mi] != y)        {            if(su[mi] > y)            {                high = mi;                mi = (low + high) / 2;            }            else            {                low = mi;                mi = (low + high) / 2;            }        }        else            return mi;    }    if(su[mi] < y)        return mi + 1;    return mi;}int main(){    scanf("%d%d%d",&a,&b,&k);    get(b);    aa = fen(a);    if(shu - aa < k)    {        printf("-1\n");    }    else    {        aim = su[aa + k - 1] - a + 2;        for(int i = aa + 1;i < shu - k - 1;i++)        {            lia = su[i + k - 1] - su[i - 2] + 2;            if(lia > aim)                aim = lia;        }        lia = su[shu-1] - su[shu - k - 1] + 2;        if(lia > aim)            aim = lia;        printf("%d\n",aim);    }    return 0;}



原创粉丝点击