zoukankan      html  css  js  c++  java
  • 【USACO题库】3.1.4 Shaping Regions形成的区域

    打暴力90.9分!!!

    吓得我哈哈大笑

    正解dfs即可。

    #include<cstdio>
    using namespace std;
    int a[1010][5],area[1010],n;
    
    void dfs(int x1,int y1,int x2,int y2,int color,int deep)
    {
    	while (deep<=n && (x1>=a[deep][2] || y1>=a[deep][3] || x2<=a[deep][0] || y2<=a[deep][1])) deep++;
    	if (deep>n) {area[color]+=(x2-x1)*(y2-y1);return;}
    	if (x1<a[deep][0]) dfs(x1,y1,a[deep][0],y2,color,deep+1),x1=a[deep][0];
    	if (y1<a[deep][1]) dfs(x1,y1,x2,a[deep][1],color,deep+1),y1=a[deep][1];
    	if (x2>a[deep][2]) dfs(a[deep][2],y1,x2,y2,color,deep+1),x2=a[deep][2];
    	if (y2>a[deep][3]) dfs(x1,a[deep][3],x2,y2,color,deep+1),y2=a[deep][3];
    }
    
    int main()
    {
    	//freopen("USACO.in","r",stdin);
    	int A,B,i,j,k;
    	scanf("%d%d%d",&A,&B,&n);
    	for (i=1;i<=n;i++) scanf("%d%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
    	dfs(0,0,A,B,1,1);
    	for (i=1;i<=n;i++) dfs(a[i][0],a[i][1],a[i][2],a[i][3],a[i][4],i+1);
    	for (i=1;i<=1000;i++)
    		if (area[i]) printf("%d %d
    ",i,area[i]);
    	return 0;
    }
    
    转载需注明出处。
  • 相关阅读:
    俩人搞对象,山上骑马
    历史不会偏袒任何一个缺乏正义、良知的人。
    力量和对力量的控制
    超级管理员
    电信F412
    prim算法
    Maven pom.xml配置详解
    PorterDuffXfermode的用法
    使用MaskFilter
    Android drawText获取text宽度的三种方式
  • 原文地址:https://www.cnblogs.com/jz929/p/11817705.html
Copyright © 2011-2022 走看看