题意:给你n 个木头的长度 , 问你组成矩形的最大总面积为多少, 且木头长度L 可以当作L-1 来使用。
题解:很显然 组成矩形要保证总面积最大 只有大的和大的边组成才能保证面积最大,并且如果当前大的为偶数条那么不需要变成-1 否则变成减1 从头到尾扫一遍 没了
代码:
#include<stdio.h> #include<iostream> #include<algorithm> using namespace std; __int64 value[1000005]; int main() { int n; while(scanf("%d", &n) != EOF) { for(int i = 0; i < n; i++) scanf("%I64d", &value[i]); sort(value, value + n); __int64 w = 0, sum = 0; int i = n-1; while(i >= 0) { //printf("%d\n", i); if(value[i] == value[i-1]+1 || value[i] == value[i-1]) { if(w == 0) { w = value[i-1]; } else { // printf("%I64d %I64d\n", w, value[i-1]); sum += (w * value[i-1]); w = 0; } i -= 2; // printf("%I64d\n", w); } else i -= 1; } printf("%I64d\n", sum); } }
时间: 2024-09-28 20:07:45