hdu5258简单枚举

百度之星复赛第一题。不明白这么水的题为何一堆人没过。。。这些人是咋晋级复赛的呢。。。

/*
 * Author    : ben
 */
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <functional>
#include <numeric>
#include <cctype>
using namespace std;
typedef struct Bang {
    int x1, x2;
    int y1, y2;
    Bang(int xx1 = 0, int yy1 = 0, int xx2 = 0, int yy2 = 0) {
        x1 = xx1;
        x2 = xx2;
        y1 = yy1;
        y2 = yy2;
    }
} Bang;
Bang heng[30], shu[30];
int N, M, ans;
bool isCross(const Bang &b1, const Bang &b2) {
    if (b2.x1 >= b1.x1 && b2.x1 <= b1.x2) {
        if (b1.y1 >= b2.y1 && b1.y1 <= b2.y2) {
            return true;
        }
    }
    return false;
}
void work() {
    for (int i = 0; i < N; i++) {
        for (int j = i + 1; j < N; j++) {
            for (int a = 0; a < M; a++) {
                if (!isCross(heng[i], shu[a]) || !isCross(heng[j], shu[a])) {
                    continue;
                }
                for (int b = a + 1; b < M; b++) {
                    if (isCross(heng[i], shu[b]) && isCross(heng[j], shu[b])) {
                        ans++;
                    }
                }
            }
        }
    }
}

int main() {
    int T, n;
    int x1, x2, y1, y2;
    scanf("%d", &T);
    for (int t = 1; t <= T; t++) {
        N = 0;
        M = 0;
        ans = 0;
        scanf("%d", &n);
        for (int i = 0; i < n; i++) {
            scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
            if (x1 == x2) {
                shu[M++] = Bang(x1, min(y1, y2), x2, max(y1, y2));
            } else {
                heng[N++] = Bang(min(x1, x2), y1, max(x1, x2), y2);
            }
        }
        work();
        printf("Case #%d:\n%d\n", t, ans);
    }
    return 0;
}
时间: 2024-10-06 00:10:49

hdu5258简单枚举的相关文章

简单除法(简单枚举优化)

#include<iostream> #include<algorithm> using namespace std; void panduan(int s,int k) { int n,m;bool l=1; n=s;m=k; int i,sn=0,a[20],j; for(i=0;n!=0;i++) { a[i]=n%10; n=n/10; } for(;m!=0;i++) { a[i]=m%10; m=m/10; } i--; sort(a,a+i); if(i==8) {a

UVa 725 Division --- 简单枚举

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=666 /* UVa 725 Division --- 简单枚举 */ #include <cstdio> #include <cstring> bool used[10]; /* 判断传进来的两个数是否满足条件 */ bool judge(int a, i

UVA - 10167 - Birthday Cake (简单枚举)

思路:简单枚举 AC代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath> using namespace std; int x[105], y[105]; int main() { int A, B, N; while(scanf("%d", &N), N) { for(int

Java练习 SDUT-1959_简单枚举类型——植物与颜色

简单枚举类型--植物与颜色 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 请定义具有red, orange, yellow, green, blue, violet六种颜色的枚举类型color,根据输入的颜色名称,输出以下六种植物花朵的颜色: Rose(red), Poppies(orange), Sunflower(yellow), Grass(green), Bluebells(blue), Violets(v

hdu5073 简单枚举+精度处理

其实这题还是挺简单的,因为移动k个星球后,这k个星球的权值就可以变为0,所以只有剩下的本来就是连着的才是最优解,也就是说要动也是动两端的,那么就O(N)枚举一遍动哪些就好了. 我是在杭电oj题目重现的比赛上做这题,因为之前听人说现场赛时有人用n^2的算法蹭过了,所以我不断蹭,蹭了一个小时都没蹭过...~!@#¥%…… 先贴一份乱七八糟想蹭过的代码 /* * Author : ben */ #include <cstdio> #include <cstdlib> #include &

POJ1449 &amp; ZOJ1036 Enigma(简单枚举)

本文纯属原创,转载请注明出处.谢谢. 题目传送门:http://poj.org/problem?id=1449 Time Limit: 1000MS   Memory Limit: 10000K       Description During the Second World War, the German military forces mainly used one special machine to secure their communication: the Enigma (see

UVA 725 UVA 10976 简单枚举

UVA 725 题意:0~9十个数组成两个5位数(或0开头的四位数),要求两数之商等于输入的数据n.abcde/fghij=n. 思路:暴力枚举,枚举fghij的情况算出abcde判断是否符合题目条件.(注意前导零的判断) 枚举的方法为 for(int i=1234;i<=100000/n;i++){} #include<cstdio> #include<cstring> int num[10]; bool check(int a,int b) { memset(num,0,

简单枚举---从一数组中任取n个元素

这个问题很明显的需要用枚举的思想来一一遍历数组元素并进行无重复组合 给出一个数组a[14]={1,2,3,4,5,6,7,8,9,10,11,12,13,14},求从中任取n个元素的所有组合 如果任取1个元素+取所有元素:15种可能 如果任取2个元素:C^2 14=91  递归组合 1 2    1 3    1 4  1 5   1 6 1 7 1 8 1 9 1 10 1 11 1 12   1 13   1 14   14种 2 3   2 4  2 5  2  6   ... 13种 1

UVA 10976 Fractions Again?! 简单枚举题

#include<stdio.h> struct pairs{ int x,y; }; struct pairs pairs[10000]; int judge(int k,int i){ if((k*i)%(i-k)==0) return 1; else return 0; } int main(){ int k,count; while(scanf("%d",&k)!=EOF){ count=0; for(int i=k+1;i<=2*k;i++){ if