codeforces 733D (水题)
2016-11-03 21:13
309 查看
题目链接:点击这里
题意:给出n个长方体,两个长方体如果有一个面完全一样就能拼起来,或者只选择一个。求一个最佳的方案使得内接球直径最大。直接暴力把所有的面扔进一个数组,排序之后找到第三条边最大的,维护一下最大值就好了。
#include <cmath> #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <cstdio> using namespace std; #define maxn 600005 struct node { long long x, y, z; int id; bool operator < (const node &a) const { if (x != a.x) return x < a.x; if (y != a.y) return y < a.y; if (z != a.z) return z < a.z; return id < a.id; } }a[maxn]; int gg[maxn][3]; int dp[maxn][22], n; void rmq_init () { for (int i = 0; i < n; i++) dp[i][0] = a[i].z; for (int j = 1; (1<<j) <= n; j++) { for (int i = 0; i+(1<<j)-1 < n; i++) { dp[i][j] = max (dp[i][j-1], dp[i+(1<<(j-1))][j-1]); } } } int rmq (int l, int r) { int k = 0; while ((1<<(k+1)) <= r-l+1) k++; return max (dp[l][k], dp[r-(1<<k)+1][k]); } int main () { scanf ("%d", &n); int tmp = 0, pos = 0; int cnt = 0; for (int i = 1; i <= n; i++) { int x, y, z; scanf ("%d%d%d", &x, &y, &z); if (min (x, min (y, z)) > tmp) { tmp = min (x, min (y, z)); pos = i; } gg[i][0] = x, gg[i][1] = y, gg[i][2] = z; a[cnt++] = ((node) {x, y, z, i}); a[cnt++] = ((node) {x, z, y, i}); a[cnt++] = ((node) {y, x, z, i}); a[cnt++] = ((node) {y, z, x, i}); a[cnt++] = ((node) {z, x, y, i}); a[cnt++] = ((node) {z, y, x, i}); } n *= 6; sort (a, a+n); int ans = 0, p1 = 0, p2 = 0; for (int i = 0; i < n; i++) { node now = a[i]; now.y = a[i].y+1; now.id = now.z = 0; int pos = lower_bound (a+i+1, a+n, now)-a-1; if (a[pos].id == a[i].id || pos <= i) continue; int tmp = min (min (a[i].x, a[i].y), a[i].z+a[pos].z); if (tmp > ans) { ans = tmp; p1 = a[i].id; p2 = a[pos].id; } } if (tmp > ans) { printf ("1\n%d\n", pos); } else { printf ("2\n%d %d\n", min (p1, p2), max (p1, p2)); } return 0; } /* 2 6 10 10 10 10 6 */
相关文章推荐
- CodeForces 604C 【思维水题】`
- codeforces 680A A. Bear and Five Cards(水题)
- codeforces 112APetya and Strings(字符串水题)
- Codeforces 615A Bulbs 【水题】
- Codeforces 149A Business trip【水题】
- CodeForces--609C --Load Balancing(水题)
- CodeForces 690C1 Brain Network (easy) (水题,判断树)
- codeforces 798a Mike and palindrome 水题
- Codeforces 417B Crash(水题)
- CodeForces 589A Email Aliases STL水题
- codeforces水题100道 第二题 Codeforces Beta Round #4 (Div. 2 Only) A. Watermelon (math)
- codeforces水题100道 第二十四题 Codeforces Beta Round #85 (Div. 2 Only) A. Petya and Strings (strings)
- Codeforces 628A Tennis Tournament 【水题】
- Codeforces 615A Bulbs 【水题】
- CodeForces-732A-Buy a Shovel(水题)
- CodeForces 22D Segments 排序水题
- Literature Lesson - CodeForces 139C 水题
- Codeforces 631A Interview 【水题】
- codeforces 746 A.Compote【水题】
- Codeforces 631A Interview【模拟水题】