STD 第四场 1001 1002 1009

来源:互联网 发布:淘宝联盟高佣链接 编辑:程序博客网 时间:2024/06/05 19:49

HDU 5327 5328 5335

#include <stdio.h>#include <iostream>#include <string.h>#include <stack>#include <algorithm>#include <queue>#include <map>#include <cmath>#define eps 0.00000001#define pi acos(-1,0)//#define pr 999983using namespace std;int a[100100]={0},b[20]={0};void init(){    for (int i=1; i<100000; i++)    {        int z=0,k=i;        while (k>0)        {            b[z]=k%10;            k=k/10;            z++;        }        sort(b,b+z);        int f=1;        for (int j=1; j<z; j++)            if (b[j]==b[j-1]) f=0;        a[i]=a[i-1]+f;//        printf("a[%d]=%d\n",i,a[i]);    }    return ;}int main(){    int T;    init();    scanf("%d",&T);    while (T--)    {        int l,r;        scanf("%d%d",&l,&r);        printf("%d\n",a[r]-a[l-1]);    }    return 0;}
 
#include <stdio.h>#include <iostream>#include <string.h>#include <stack>#include <algorithm>#include <queue>#include <map>#include <cmath>#define eps 0.00000001#define DBL_MIN   2.2250738585072014e-308 /* min positive value */#define pi acos(-1,0)//#define pr 999983using namespace std;int a[1000100]= {0};double b[1000100]= {0};int n,_max;int main(){    int T;    scanf("%d",&T);    a[0]= 0x80000000;    b[0]=DBL_MIN ;    while (T--)    {        double x,y;        int sc,sj;        scanf("%d",&n);        scanf("%lf",&x);        sc=1;        sj=1;        _max=0x80000000;        for (int i=1; i<n; i++)        {            scanf("%lf",&y);            a[i]=y-x;            b[i]=y/x*1.0;            x=y;            if (a[i]==a[i-1])            {                sc++;            }            else            {                if (sc>_max) _max=sc;                sc=1;            }            if (b[i]-b[i-1]<0.0000001 && b[i-1]-b[i]<0.0000001) sj++;            else            {                if (sj>_max) _max=sj;                sj=1;            }        }        if (n==1)        {            printf("1\n");            continue;        }//        for (int i=1;i<n;i++)//            printf("i=%d a[i]=%d b[i]=%f\n",i,a[i],b[i]);        if (sc>_max) _max=sc;        if (sj>_max) _max=sj;        printf("%d\n",_max+1);    }    return 0;}

#pragma comment(linker, "/STACK:1024000000,1024000000")#include <stdio.h>#include <iostream>#include <string.h>#include <stack>#include <algorithm>#include <queue>#include <map>#include <cmath>#define eps 0.00000001#define pi acos(-1,0)//#define pr 999983using namespace std;int a[1010][1010]= {0};     ///int b[1010][1010]= {0};     ///bool c[1010][1010]= {0};     ///int n,m,_min,zkc;char s[1010];int init(int x,int y,int k){    if (x+y > _min) _min=x+y;//    printf("_min=%d\n",_min);    if (y<m && b[x][y+1]==0 && a[x][y+1]==-1)    {        c[x][y+1]=1;        a[x][y+1]=1;        init(x,y+1,k+1);    }    if (x>1 && b[x-1][y]==0 && a[x-1][y]==-1)    {        c[x-1][y]=1;        a[x-1][y]=1;        init(x-1,y,k+1);    }    if (y>1 && b[x][y-1]==0 && a[x][y-1]==-1)    {        c[x][y-1]=1;        a[x][y-1]=1;        init(x,y-1,k+1);    }    if (x<n && b[x+1][y]==0 && a[x+1][y]==-1)    {        c[x+1][y]=1;        a[x+1][y]=1;        init(x+1,y,k+1);    }    return 0;}int fun(int z){    int jj=min(z,m),ii=z-jj+1;    bool f=1;//    printf("z=%d ii=%d jj=%d\n",z,ii,jj);    while (ii<=n && jj>0)    {        if (c[ii-1][jj]==1 || c[ii][jj-1]==1)        {            c[ii][jj]=1;            if (b[ii][jj]==0) f=0;        }        ii++;        jj--;    }//                                for (int i=1; i<=n; i++)//                                {//                                    for (int j=1; j<=m; j++)//                                    {//                                        printf("%d",c[i][j]);//                                    }//                                    printf("\n");//                                }    if (f==0)    {        jj=min(z,m);        ii=z-jj+1;        while (ii<=n && jj>0)        {            if (b[ii][jj]==1) c[ii][jj]=0;            ii++;            jj--;        }    }    if (z+1<m+n) fun(z+1);    return 0;}int print(int ik,int jk){    if (ik+jk>zkc)    {        if (c[ik-1][jk]==1)        {            print(ik-1,jk);        }        else if (c[ik][jk-1]==1)        {            print(ik,jk-1);        }        printf("%d",b[ik][jk]);    }    if (ik+jk==zkc)    {        if (b[ik][jk]==1) printf("1");    }    return 0;}int main(){//    freopen("in.txt","r",stdin);    int T;    scanf("%d",&T);    while(T--)    {        _min=-0x7f7f7f;        memset(a,-1,sizeof(a));        memset(c,0,sizeof(c));        scanf("%d%d",&n,&m);        for(int i=1; i<=n; i++)        {            scanf("%s",s+1);            for(int j=1; j<=m; j++)            {                b[i][j] = s[j] - '0';            }        }        c[1][1]=1;        if (b[1][1]==0)        {//        printf("OK\n");            init(1,1,0);                        for (int i=1; i<=n; i++)                for (int j=1; j<=m; j++)                    if (c[i][j]==1) init(i,j,0);            zkc=_min;//            printf("zkc=%d\n",zkc);        }        else        {            zkc=2;        }//        printf("zkc%d\n",zkc);        if (m==1 && n==1)        {            printf("%d\n",b[1][1]);            continue;        }        if (zkc!=m+n)        {            fun(zkc);            print(n,m);        }        else            printf("0");        printf("\n");//        printf("zkc=%d\n",zkc);//        for (int i=1; i<=n; i++)//        {//            for (int j=1; j<=m; j++)//            {//                printf("%d",c[i][j]);//            }//            printf("\n");//        }    }    return 0;}

最近几场比赛的题目都比较简单 但是他们的判题系统比较坑 搜容易破栈(比赛完了再交就不会破栈)

而且 最小值那点真是坑死了无数人 我就不同吐槽了 

比了四场比赛 感觉每次都只能签到 偶尔还签不到 看着大牛们aaaa 我们wawawa 心情什么都是次要的了 每次刀到脖子边上

 想了想都还是放下了 人还是要有点希望的 说不定下一场还能签到呢 

嗯嗯 继续水下去吧。。。

0 0
原创粉丝点击