青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594

POJ 3699 miniSQL---模擬

Posted on 2010-04-03 20:35 Uriel 閱讀(466) 評論(0)  編輯 收藏 引用 所屬分類: POJ模擬
        這題快一年前就看了,覺得太麻煩就一直沒做,昨天心情不爽于是又拿來做找刺激。。結果完全杯具。。今天晚上才過掉。。
        昨天寫的方法是:先把要輸出的那個表格存進一個char型數組,覺得這樣輸出的時候不那么糾結。。但是這題沒說STR型的數據最多多長,于是不停的提交來試。。結果就是MLE, RE, WA, OLE, TLE...加起來快60次。。以為是哪里沒考慮到,于是-0這樣的惡心數據也考慮了,負數也考慮了,空數據也考慮了。。還是一次次的杯具。。
        最后實在受不了了,于是改方法,不存結果,最后一行一行輸出。。竟然一下就過了。。。但是G++還是TLE,不知原因啊。。也許memset太多了。。
        都不知道這題到底什么trick了。。能考慮的都考慮了。。(知道的只有-0的情況不要考慮),代碼夾雜了一堆調試的語句和第一種方法的部分。。也懶得改了。。貼個代碼。。哪位一樣被這題虐的ACMer可以對拍下數據什么的。。具體代碼就不要看了。。丑陋至極。。10527B。。

/*
  Problem: 3699  User: Uriel 
  Memory: 21832K  Time: 157MS 
  Language: C++  Result: Accepted 
*/

#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<algorithm>
using namespace std; 

#define MAXN 10001

char P[MAXN][11][201];
int n;//col總數
int m;//記錄總數 
int qry;//每個詢問有多少個屬性
int k;//共有幾個詢問 
int q;//0->'='; 1->'<'; 2->'>'
int si;//0->限制條件為int,1->限制條件為string
int nres;//滿足條件的結果數 
int cons;//限制條件是第幾個col
char xd[11][201];//存需要輸出的屬性的名字 
int id[11];//存要輸出的屬性的代號 
int kind[11];//每個col的數據類型,0為string,1為int
char col[11][201];//每個col的名字
int res[MAXN];//存滿足限制條件的結果的序號(輸入序號,非ID)
int width,height;//最后結果的寬和高
//char ans[MAXN+5][3200];//存最后要輸出的結果 
int val;
int maxl;  
char str[301];
char sample[301];
char type[11];//暫存每個col數值類型 
char tmps[10];//去掉select,where 
int maxdis[11];//輸出每一格的最大寬度 

int main()
{
    
int i,j,h; 
    
char c;
    memset(P,
0x00,sizeof(P));
//    freopen("out.txt","w",stdout);
    scanf("%d %d %d",&n,&m,&k);
    
for(i=0;i<n;i++)
    
{
        scanf(
"%s %s",col[i],type);
//        printf("*%s %s*\n",col[i],type);
        if(strcmp(type,"STR")==0)
        
{
            kind[i]
=1;
        }

        
else
        
{
            kind[i]
=0;
        }

    }

    
for(i=0;i<m;i++)
    
{
        
for(j=0;j<n;j++)
        
{
            scanf(
"%s",P[i][j]);
//            printf("* %d *\n",kind[j]);
//            if(kind[j]==0 && P[i][j][0]=='-' && P[i][j][1]=='0')
//            {
//                printf("*");
//                P[i][j][0]='0';
//                P[i][j][1]='\0';
//            }
//            printf("*%s*\n",P[i][j]);
        }

    }

    
while(k--)
    
{
        scanf(
"%s",tmps);
//        printf("*%s*\n",tmps);
        getchar();
        qry
=0;
        memset(xd,
0x00,sizeof(xd));
        
while(1)
        

            
int tmp=0;
            
while(1)
            
{
                c
=getchar();
                
if(c==' ')
                
{
                    qry
++;
                    
goto flag;
                }

                
else if(c==',')break;
                
else
                    xd[qry][tmp
++]=c;
            }

//            printf("* %s *\n",xd[qry]);
            qry++;
        }

//      for(i=0;i<qry;i++)
//        {
//          printf("* %s *\n",xd[i]);
//      }
flag:    for(i=0;i<qry;i++)
        
{
            
for(j=0;j<n;j++)
            
{
                
if(strcmp(xd[i],col[j])==0)
                
{
                    id[i]
=j;
//                    printf("id[%d]=%d\n",i,j);
                    break;
                }

            }

        }

        j
=0;
//        getchar();
        scanf("%s",tmps);
//        printf("* %s *\n",tmps);
        getchar();
        memset(str,
0x00,sizeof(str));
        
while(1)
        
{
            c
=getchar();
            
if(c=='=')
            
{
//                printf("* %s *\n",str);
                q=0;
                
for(i=0;i<n;i++)
                
{
                    
if(strcmp(col[i],str)==0)
                    
{
                        cons
=i;
                        
break;
                    }

                }

//                cons=i;
                if(kind[i]==1)
                
{
                    si
=1;
                    
while(c=getchar()==' ')getchar();
//                    getchar();//去掉第一個"
                    scanf("%s",sample);
//                    printf("%s\n",sample);
                    sample[strlen(sample)-1]='\0';//去掉第二個"
//                    printf("sample=%s\n",sample);
                }

                
else
                
{
                    si
=0;
                    scanf(
"%s",sample);
//                    printf("sample=%s\n",sample);
                    val=atoi(sample);
/*                    if(sample[0]=='-')
                    {          
                        val=(-1)*(sample[1]-'0');          
                        for(i=2;i<strlen(sample);i++)
                        {
                            val=val*10+sample[i]-'0';
                        }
                    }
                    else
                    {
                        for(i=0;i<strlen(sample);i++)
                        {
                            val=val*10+sample[i]-'0';
                        }
                    }               
*/
 
                }

                
break;
            }

            
else if(c=='<')
            
{
//                printf("* %s *\n",str);
                q=1;
                si
=0;
                
for(i=0;i<n;i++)
                
{
                    
if(strcmp(col[i],str)==0)
                    
{
                        cons
=i;
                        
break;
                    }

                }

//                cons=i;
                scanf("%s",sample);
//                printf("sample=%s\n",sample);
                val=atoi(sample);
/*                if(sample[0]=='-')
                {          
                    val=(-1)*(sample[1]-'0');          
                    for(i=2;i<strlen(sample);i++)
                    {
                        val=val*10+sample[i]-'0';
                    }
                }
                else
                {
                    for(i=0;i<strlen(sample);i++)
                    {
                        val=val*10+sample[i]-'0';
                    }
                }               
*/

                
break;
            }

            
else if(c=='>')
            
{
//                printf("* %s *\n",str);
                q=2;
                si
=0;
                
for(i=0;i<n;i++)
                
{
                    
if(strcmp(col[i],str)==0)
                    
{
                        cons
=i;
                        
break;
                    }

                }

//                cons=i;
//                printf("cons=%d\n",cons);
                scanf("%s",sample);
//                printf("sample=%s\n",sample);
                val=atoi(sample);
/*                if(sample[0]=='-')
                {          
                    val=(-1)*(sample[1]-'0');          
                    for(i=2;i<strlen(sample);i++)
                    {
                        val=val*10+sample[i]-'0';
                    }
                }
                else
                {
                    for(i=0;i<strlen(sample);i++)
                    {
                        val=val*10+sample[i]-'0';
                    }
                }               
*/

                
break;
            }

            
else if(c==' ')continue;
            
else
                str[j
++]=c;
        }

//        printf("val=%d\n",val);
//        printf("sample=%s\n",sample);
//        memset(res,0,sizeof(res));
//        memset(ans,0x00,sizeof(ans));
        nres=0;
        
if(!si)//限制條件是數字類型
        {
//            printf("*");
            if(q==0)
            
{
                
for(i=0;i<m;i++)
                
{
                    
if(atoi(P[i][cons])==val)
                    
{
                        res[nres
++]=i;
                    }

                }

            }

            
else if(q==1)
            
{
                
for(i=0;i<m;i++)
                
{
                    
if(atoi(P[i][cons])<val)
                    
{
                        res[nres
++]=i;
                    }

                }

            }

            
else if(q==2)
            
{
                
for(i=0;i<m;i++)
                
{
//                    printf("tmp=%d\n",atoi(P[i][cons]));
                    if(atoi(P[i][cons])>val)
                    
{
                        res[nres
++]=i;
//                        printf("*\n");
                    }

                }

            }

        }

        
else 
        
{
//            printf("dd\n");
            for(i=0;i<m;i++)
            
{
                
if(strcmp(P[i][cons],sample)==0)
                
{
                    res[nres
++]=i;
//                    printf("res=%d\n",i);
                }

            }

        }

//        for(i=0;i<nres;i++)
//        {
//            printf("res=%d\n",res[i]);
//        }
//        memset(ans,0x00,sizeof(ans));
/*------------------------------------------------------------------------        
        ans[0][0]='+';
        width=0;
        height=nres+4;
//        printf("high=%d\n",height);
        for(i=1;i<height-1;i++)
        {
            ans[i][0]='|';
        } 
        ans[i][0]='+';
//        for(i=0;i<height;i++)
//          {
//           for(j=0;j<1;j++)
//            {
//                printf("%c",ans[i][j]);
//            }
//            printf("\n");
//        }          
//        break;   
//        printf("nres=%d\n",nres);
        for(j=0;j<qry;j++)
        {
//            printf("width=%d\n",width);
            maxl=strlen(col[id[j]]);//每格的寬度 
//            printf("maxl=%d\n",maxl);
            for(i=0;i<nres;i++)
            {
                if(strlen(P[res[i]][id[j]])>maxl)maxl=strlen(P[res[i]][id[j]]);
            }
            maxl+=2; 
//            printf("maxl=%d\n",maxl);
//            width+=maxl;
            for(i=width+1;i<=width+maxl;i++)
            {
                ans[2][i]='-';
            }
            for(i=1;i<height-1;i++)
            {
                ans[i][width+maxl+1]='|';
            }
            for(i=width+1;i<=width+maxl;i++)
            {
                ans[1][i]=' ';
            }
//            printf("maxl=%d\nwidth=%d\n",maxl,width);
            strcpy(&ans[1][width+(maxl-strlen(col[id[j]]))/2+1],col[id[j]]);
            for(i=0;i<nres;i++)
            {
                for(h=width+1;h<width+maxl+1;h++)
                {
                    ans[i+3][h]=' ';
                }
                strcpy(&ans[i+3][width+(maxl-strlen(P[res[i]][id[j]]))/2+1],P[res[i]][id[j]]);
            }               
            width=width+maxl+1;
        }    
        for(i=0;i<height;i++)
        {
            for(j=0;j<width;j++)
            {
                ans[i][j]=' ';
            }
        }               
//        printf("width=%d\n",width);
//        printf("height=%d\n",height);
        for(i=1;i<width;i++)
        {
            ans[0][i]='-';
            ans[height-1][i]='-';
        }
        ans[0][width]='+';
        ans[height-1][width]='+'; 
//        for(i=0;i<m;i++)
//        {
//            for(j=0;j<n;j++)
//            {
//                printf("%s ",P[i][j]);
//            }
//            printf("\n");
//        }                           
        for(i=0;i<height;i++)
          {
            for(j=0;j<=width;j++)
            {
                printf("%c",ans[i][j]);
            }
            printf("\n");   
        }            
------------------------------------------------------------------------
*/
   
        width
=1;
//        printf("qry=%d\n",qry);
        for(i=0;i<qry;i++)
        
{
            maxdis[i]
=strlen(col[id[i]]);
            
for(j=0;j<nres;j++)    
            
{
                
if(maxdis[i]<strlen(P[res[j]][id[i]]))
                
{
                    maxdis[i]
=strlen(P[res[j]][id[i]]);
                }

            }

            maxdis[i]
+=2;
//            printf("dis=%d\n",maxdis[i]);
            width+=maxdis[i]+1;
        }

        printf(
"+");
        
for(i=1;i<width-1;i++)
        
{
            printf(
"-");
        }

        printf(
"+\n");
        printf(
"|");
        
for(i=0;i<qry;i++)
        
{
            
for(j=0;j<(maxdis[i]-strlen(col[id[i]]))/2;j++)
            
{
                printf(
" ");
            }

            printf(
"%s",col[id[i]]);
            
for(j=0;j<(maxdis[i]-strlen(col[id[i]])+1)/2;j++)
            
{
                printf(
" ");
            }

            printf(
"|");
        }

        printf(
"\n");
        printf(
"|");
        
for(i=0;i<qry;i++)
        
{
            
for(j=0;j<maxdis[i];j++)
            
{
                printf(
"-");
            }

            printf(
"|");
        }

        printf(
"\n");
        
for(i=0;i<nres;i++)
        
{
            printf(
"|");
            
for(j=0;j<qry;j++)
            
{              
                
for(h=0;h<(maxdis[j]-strlen(P[res[i]][id[j]]))/2;h++)
                
{
                    printf(
" ");
                }

                printf(
"%s",P[res[i]][id[j]]);
                
for(h=0;h<(maxdis[j]-strlen(P[res[i]][id[j]]+1))/2;h++)
                
{
                    printf(
" ");
                }

                printf(
"|");
            }

            printf(
"\n");
        }

        printf(
"+");
        
for(i=1;i<width-1;i++)
        
{
            printf(
"-");
        }

        printf(
"+\n");    
        printf(
"\n");
    }

//    system("PAUSE");
    return 0;
}



青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久亚洲综合影院红桃| 欧美性色综合| 亚洲精品小视频在线观看| 蜜臀av性久久久久蜜臀aⅴ| 久久久久9999亚洲精品| 亚洲欧美在线一区二区| 西西裸体人体做爰大胆久久久| 亚洲欧美在线aaa| 欧美一区二区三区精品| 欧美一区二区三区日韩视频| 久久久www成人免费毛片麻豆| 欧美在线一级va免费观看| 久久久xxx| 欧美国产乱视频| 亚洲精品黄色| 亚洲美女91| 欧美日韩在线三区| 欧美国产一区二区在线观看| 亚洲午夜在线| 国产亚洲va综合人人澡精品| 亚洲欧美制服中文字幕| 欧美国产日韩免费| 麻豆成人91精品二区三区| 久久av红桃一区二区小说| 欧美亚洲尤物久久| 欧美另类videos死尸| 欧美另类人妖| 国产精品毛片| 激情文学综合丁香| 一区二区电影免费观看| 欧美亚洲在线视频| 亚洲成色最大综合在线| 欧美国产综合视频| 欧美日韩另类丝袜其他| 国产精品夜色7777狼人| 亚洲精品日产精品乱码不卡| 午夜精品久久久久久久久久久| 另类欧美日韩国产在线| 宅男噜噜噜66一区二区66| 麻豆成人在线观看| 国产精品夜色7777狼人| 日韩视频免费在线| 久久精品国产在热久久| 日韩视频在线观看| 媚黑女一区二区| 国产视频一区免费看| 艳妇臀荡乳欲伦亚洲一区| 另类专区欧美制服同性| 午夜精品www| 欧美视频三区在线播放| 亚洲三级电影全部在线观看高清| 久久国产一区二区| 正在播放欧美一区| 欧美日韩成人在线视频| 亚洲国产小视频在线观看| 久久久99精品免费观看不卡| 在线视频亚洲一区| 欧美人在线观看| 日韩视频一区二区三区在线播放免费观看| 久久久久国产一区二区三区四区| 夜夜爽夜夜爽精品视频| 欧美日韩视频在线| 亚洲欧美日韩在线综合| 国产一区二区三区成人欧美日韩在线观看 | 久久精品亚洲热| 中文欧美字幕免费| 在线观看视频免费一区二区三区| 亚洲图片在区色| 亚洲精品久久久久中文字幕欢迎你| 欧美亚洲视频在线看网址| 国产精品久久久久久久久借妻| aa级大片欧美三级| 亚洲精品美女在线观看| 欧美激情片在线观看| 日韩一级在线| 日韩视频一区二区在线观看 | 亚洲欧美中文日韩在线| 国产精品女主播在线观看 | 一区国产精品| 蜜桃久久av一区| 麻豆成人在线观看| 中文久久乱码一区二区| 亚洲一区日韩在线| 国产午夜精品全部视频在线播放| 久久激情网站| 久久在线免费观看| 亚洲乱码国产乱码精品精天堂| 亚洲国产精品t66y| 欧美日韩美女一区二区| 午夜视黄欧洲亚洲| 久久精品国产清自在天天线| 亚洲国产一区二区三区高清 | 亚洲欧洲在线看| 欧美婷婷六月丁香综合色| 欧美一级专区| 老鸭窝91久久精品色噜噜导演| 亚洲免费成人av| 午夜一区在线| 欧美一级专区| 午夜欧美精品| 亚洲精选中文字幕| 香蕉久久夜色精品| 久久国产天堂福利天堂| 国产精品久久久久av| 99亚洲一区二区| 在线一区二区三区做爰视频网站 | 9色精品在线| 午夜精品久久久久久久久久久久 | 久久久精品国产免费观看同学| 一区二区三区在线视频免费观看| 欧美成人激情视频免费观看| 欧美日韩免费观看一区=区三区| 西西人体一区二区| 欧美激情自拍| 老色批av在线精品| 国产精品国产三级国产普通话蜜臀| 久久久中精品2020中文| 欧美午夜在线视频| 欧美成人午夜77777| 国产精品腿扒开做爽爽爽挤奶网站| 欧美bbbxxxxx| 国产欧美一区二区三区另类精品| 亚洲精品国产系列| 最新69国产成人精品视频免费| 亚洲午夜精品一区二区| 99re6热在线精品视频播放速度| 欧美在线综合视频| 性一交一乱一区二区洋洋av| 欧美日韩国产一区精品一区| 欧美激情精品久久久久| 黑人一区二区三区四区五区| 亚洲欧美日韩视频一区| 亚洲一区精品电影| 欧美日韩综合一区| 99精品国产在热久久下载| 亚洲区第一页| 六月婷婷久久| 免费中文日韩| 亚洲国产成人久久综合一区| 欧美在线高清| 久久一区二区三区超碰国产精品| 国产视频自拍一区| 欧美一二三区精品| 久久美女性网| 亚洲电影视频在线| 99热在线精品观看| 亚洲人成网站777色婷婷| 美女图片一区二区| 午夜精品视频在线| 亚洲在线观看视频网站| 欧美大片一区| 欧美成人精品在线| 国产精品乱码久久久久久| 亚洲精品一品区二品区三品区| 午夜精品视频在线观看| 亚洲一级在线观看| 欧美不卡在线| 欧美三日本三级少妇三2023| 美女免费视频一区| 欧美欧美午夜aⅴ在线观看| 亚洲欧洲日本国产| 亚洲毛片av| 欧美不卡一区| 欧美午夜片在线观看| 欧美日韩精品一区二区在线播放 | 国产精品亚洲а∨天堂免在线| 蜜臀av国产精品久久久久| 一区二区三区四区五区精品视频 | 欧美日韩综合久久| 国产欧美综合在线| 亚洲国产成人精品女人久久久| 亚洲天天影视| 亚洲午夜免费视频| 国产老肥熟一区二区三区| 亚洲美女啪啪| 亚洲人体一区| 国产精品网站在线播放| 久久综合久久综合久久| 国产精品视频yy9099| 亚洲国产精品久久久久| 国产精品久久亚洲7777| 你懂的视频欧美| 久久久另类综合| 国产精品免费小视频| 欧美在线视频观看| 亚洲精品之草原avav久久| 欧美日韩国产免费观看| 久久亚洲美女| 牛牛国产精品| 欧美激情第一页xxx| 国产在线国偷精品产拍免费yy| 久久久久亚洲综合| 欧美刺激午夜性久久久久久久| 国产视频久久| 99国产精品99久久久久久| 久久久精品国产免费观看同学| 国产老肥熟一区二区三区| 亚洲欧美国产精品va在线观看| 亚洲欧美日韩视频二区| 久久久久久有精品国产|