Hdu Moving Tables(未完成)

写代码没有思路真是一件可怕的事情。。有思路,思路一团乱更可怕。。以后继续吧,这种一看起来没什么思路的题写起来就没有什么逻辑,最后总是一团糟。

#include <cstdio>
#include <cstring>
#include <string>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int n,m;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&m);
        int x[2][m];
        for(int i=0; i<m; i++)
        {
            scanf("%d%d",&x[0][i],&x[1][i]);
            if(x[0][i]>x[1][i])
            {
                int t=x[0][i];
                x[0][i]=x[1][i];
                x[1][i]=t;
            }
        }
        sort(x[0],x[0]+m);
        int pre=0,c=0;
        for(int i=0; i<m; i++)
        {
            if(x[0][i]==0) continue;
            for(int j=i+1; j<m; j++)
            {
                if(x[0][j]==0) continue;
                if(x[0][i]%2==1)
                {
                    if(x[0][j]>x[1][pre]+1)
                    {
                        x[0][pre]=0;
                        pre=j;
                        if(j==m-1) x[0][pre]=0;
                    }
                }
                else
                {
                    if(x[0][j]>x[1][pre])
                    {
                        x[0][pre]=0;
                        pre=j;
                        if(j==m-1) x[0][pre]=0;
                    }
                }
            }
            c++;
        }
        printf("%d\n",c*10);
    }
}

 觉得思路很清晰了,可是还是不对。

#include <cstdio>
#include <iostream>
#include <math.h>
#include <map>
#include <cstring>
using namespace std;
int main()
{
    int n,x;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d",&x);
        int w[x][2];
        int c[x];
        for(int i=0; i<x; i++)
        {
            scanf("%d%d",&w[i][0],&w[i][1]);
            if(w[i][0]>w[i][1])
            {
                int t=w[i][0];
                w[i][0]=w[i][1];
                w[i][1]=t;
            }
            if(w[i][0]%2==1) w[i][0]+=1;
            if(w[i][1]%2==1) w[i][1]+=1;
            c[i]=0;
        }
        int m=0;
        for(int i=0; i<x; i++)
        {
            for(int j=i+1; j<x; j++)
            {
                if(!(w[j][0]>w[i][1]||w[j][1]<w[i][0]))
                {
                    c[i]++;
                    c[j]++;
                }
            }
            if(c[i]>m) m=c[i];
        }
        m++;
        printf("%d\n",m*10);
    }
}
// 不一定是先输入小房间号再输入大房间号,没有这个规定

 

posted @ 2016-01-30 14:09  cherry_yue  阅读(69)  评论(0)    收藏  举报