以后解决

来源:互联网 发布:中密西根大学 知乎 编辑:程序博客网 时间:2024/04/29 11:10

HDU 1695 GCD

这是错误的,暂时还没做出来先放一下


#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int gcd(int a,int b){    return b==0? a:gcd(b,a%b);}int main(){    int t;    while(~scanf("%d",&t))    {        for(int Case=1; Case<=t; Case++)        {            int a,b,c,d,k;            scanf("%d %d %d %d %d",&a,&b,&c,&d,&k);            if (k == 0)            {                printf("Case %d: 0\n", Case);                continue;            }            b=b/k;            d=d/k;            if(b>d)                swap(b,d);            __int64 ans=0;            for(int i=1; i<=b; i++)                for(int j=i; j<=d; j++)                {                    if(gcd(j,i)==1)                    {                        ans++;                    }                }            printf("Case %d: %I64d\n",Case,ans);        }    }    return 0;}

poj2111

本以为是简单的搜索

竟然是记忆化搜索。。。。给跪了,下面是简单的搜索。。

#include <stdio.h>#include <string.h>int mp[370][370];bool vis[370][370];int pre[160000];int jl[160000];int n;int mxsp;int bhx[] = {-2,-1,1,2,2,1,-1,-2};int bhy[] = {1,2,2,1,-1,-2,-2,-1};void dfs(int x,int y,int step){    pre[step] = mp[x][y];    if(mxsp <= step)    {        if(mxsp == step)        {            if(pre[0] < jl[0])            {                for(int i = 0;i <= step;i++)                    jl[i] = pre[i];            }        }        else        {             for(int i = 0;i <= step;i++)                jl[i] = pre[i];            mxsp = step;        }    }    for(int i = 0;i < 8;i++)    {        int hx = x + bhx[i];        int hy = y + bhy[i];        if(hx > 0 && hx <= n && hy > 0 && hy <= n && !vis[hx][hy] && mp[hx][hy] > mp[x][y])        {            vis[hx][hy] = true;            dfs(hx,hy,step + 1);            vis[hx][hy] = false;        }    }}int main(){    while(scanf("%d",&n)!=EOF)    {        for(int i = 1;i <= n;i++)        {            for(int j = 1;j <= n;j++)            {                scanf("%d",&mp[i][j]);            }        }        mxsp = -1;        for(int i = 1;i <= n;i++)        {            for(int j = 1;j <= n;j++)            {                memset(pre,-1,sizeof(pre));                memset(vis,false,sizeof(vis));                vis[i][j] = true;                dfs(i,j,0);            }        }        printf("%d\n",mxsp + 1);        for(int i = 0;i <= mxsp;i++)            printf("%d\n",jl[i]);    }    return 0;}



0 0
原创粉丝点击