CodeForces 474B(Worms)

来源:互联网 发布:淘宝买家号权重是什么 编辑:程序博客网 时间:2024/05/21 06:22

此题链接单击这里

=================

这题重写了好几次都是超时,最后用二分法AC。

把超时代码附上

#include <iostream>#include <cstring>#include <cstdio>#include <vector>using namespace std;int main(){    int n, k = 0, i;    int sum = 1;    scanf("%d", &n);    int a[100001];    while (n--)    {        int m;        scanf("%d", &m);        for (i = k + 1; i <= k + m; i++)            a[i] = sum;        sum++;        k += m;    }    int m;    scanf("%d", &m);    for (int i = 0; i <m; i++)    {        scanf("%d", &n);        cout << a[n] << endl;    }    return 0;}

AC代码

#include <iostream>#include <cstring>#include <cstdio>#include <vector>using namespace std;int find(int a[],int m,int k){    int i=1;    int j=k;    while(i<=j)    {        int mid=(i+j)/2;        if(a[mid]==m)            return mid;        else if(a[mid]>m)            j=mid-1;        else            i=mid+1;    }    return i;}int main(){    int n,a[100001];    int k=1,sum=0;    scanf("%d",&n);    while(n--)    {        int m;       scanf("%d",&m);        a[k++]=sum+m;        sum+=m;    }    scanf("%d",&n);    while(n--)    {        int q,m;        scanf("%d",&m);        q=find(a,m,k-1);       printf("%d\n",q);    }}

有问题联系企鹅791267032
邮箱地址….wutanrong@Hotmail.com

0 0
原创粉丝点击