SQL
博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅 订阅 | 管理

2007年10月2日

PKU3327
WA了N次...
#include<string.h>
#include 
<stdio.h>

struct Rect
{
    
int w, d;
}
;

int c, w, d, cnt, p, s;
Rect rect[
110];
int area[110];

void cut()
{
    
int hw=rect[p].w, hd=rect[p].d ;
    s
%=(2*(hw+hd));
    rect[cnt]
=rect[p];
    
if(s>0 && s<hw)
    
{
        rect[p].w
=s,rect[p].d=hd;
        rect[cnt].w
=hw-rect[p].w;
    }

    
if(s>hw && s<hw+hd)
    
{
        rect[p].w
=hw,rect[p].d=s-hw;
        rect[cnt].d
=hd-rect[p].d;
    }

    
if(s>hw+hd && s<2*hw+hd)
    
{
        rect[p].w
=s-hw-hd,rect[p].d=hd;
        rect[cnt].w
=hw-rect[p].w;
    }

    
if(s>2*hw+hd && s<2*hw+2*hd)
    
{
        rect[p].w
=hw,rect[p].d=s-2*hw-hd;
        rect[cnt].d
=hd-rect[p].d;
    }

    
//
    if(rect[p].w * rect[p].d > rect[cnt].d * rect[cnt].w)
    
{
        Rect hr
=rect[p];
        rect[p]
=rect[cnt];
        rect[cnt]
=hr;
    }
      Rect hr1=rect[p];
      int i;
      for(i=p;i<cnt-1;i++)
          rect[i]=rect[i+1];
      rect[cnt-1]=hr1;

}


int main()
{
    
while(scanf("%d%d%d", &c, &w, &d)==3)
    
{
        
        
        
if(c==0 && w==0 && d==0)break;
        cnt
=1;
        
int i, j; 
        
for(i=0;i<110;i++)
            rect[i].d
=rect[i].w=area[i]=0;

        rect[
1].w=w,rect[1].d=d;

        
for(i=1;i<=c;i++)
        
{
            scanf(
"%d%d",&p,&s);
            cnt
++;
            cut();
        }

        
for(i=1;i<=c+1;i++)
        
{
        
//    printf("%d :  %d , %d  \n",i,rect[i].w,rect[i].d);
            int harea=rect[i].w * rect[i].d;
            
for(j=i;j>=1;j--)
            
{
                area[j]
=area[j-1];
                
if(harea>area[j])
                
{
                    area[j]
=harea;
                    
break;
                }

            }

        }


        
for(i=1;i<=c+1;i++)
        
{
            
if(i!=1)printf(" ");
            printf(
"%d",area[i]);
        }

        printf(
"\n");
    }

    
return 0;
}

posted @ 2007-10-02 18:43 sql172 阅读(35) | 评论 (0) | 编辑
 
PKU2411
#include<string.h>
#include 
<stdio.h>

int m, n;
__int64 f[
12][2048];
__int64 g[
12][12];

void DFS(int i, int j, int j2, int m2)
{
    
if(m2 == m)
        f[i
+1][j2]+=f[i][j];
    
else if((j2&(1<<m2))==0)
    
{ 
        DFS(i,j,j2 
| (1<<m2),m2+1);
        
if(m2<m-1 && (j2&(1<<(m2+1)))==0)DFS(i,j,j2,m2+2);
    }

    
else
    
{
        DFS(i,j,j2
&~(1<<m2),m2+1);
    }

}



int main()
{    

    
{
        
for(m=1;m<=11;m++)
        
{

        
int i, j;
        memset(f,
0,sizeof(f));
        f[
0][0]=1;
        
for (i=0; i<11; i++)
        
{
            
for (j=0; j<(1<<m); j++)
                
if(f[i][j])
                    DFS(i,j,j,
0);

            g[i
+1][m]=f[i+1][0];
        }

    
//    printf("(%d,%d)=%I64d   \n",n,m,g[n][m]);
        }

    
//    printf("\n");
    }

    
while(scanf("%d%d",&n,&m)==2)
    
{
        
if(m==0 && n==0)break;
        printf(
"%I64d\n",g[n][m]);
    }

    
return 0;
}
    
posted @ 2007-10-02 18:42 sql172 阅读(108) | 评论 (0) | 编辑
 
随笔:47 文章:0 评论:17 引用:0
<2007年10月>
日一二三四五六
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

与我联系

  • 发短消息

搜索

 

常用链接

  • 我的随笔
  • 我的空间
  • 我的短信
  • 我的评论
  • 更多链接
  • 我的参与
  • 我的新闻
  • 最新评论
  • 我的标签

留言簿(1)

  • 给我留言
  • 查看留言

随笔档案

  • 2007年10月 (27)
  • 2007年9月 (20)

My ACteam ->SEU_COSE_ACM_FT2

  • Bear
  • NIC~ (rss)
  • 农夫
  • 钱丁

积分与排名

  • 积分 - 3896
  • 排名 - 6221

最新评论

  • 1. re: PKU3277离散化+线段树
  • 我用STL 的 map 做的离散化,不过在poj上耗时1000MS+
  • --JooPoo

阅读排行榜

  • 1. zju1484(328)
  • 2. ACM/ICPC要求的知识点(转)(328)
  • 3. PKU1151线段树解法(292)
  • 4. PKU2486所谓树型DP(232)
  • 5. PKU3277离散化+线段树(204)

评论排行榜

  • 1. 今天农夫布置的DP题(5)
  • 2. PKU2486所谓树型DP(3)
  • 3. PKU3277离散化+线段树(2)
  • 4. 不更新要遭人鄙视了。。。。(2)
  • 5. PKU3321(1)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2008 sql172