CodeForces-525C Ilya and Sticks
2015-08-04 10:41
288 查看
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; const int maxn = 1e6; long long l[maxn], lx[maxn]; int n, k; long long s; int main() { while(~scanf("%d", &n)) { k = 0; s = 0; memset(l, 0, sizeof(l)); memset(lx, 0, sizeof(lx)); for(int i = 0; i < n; i ++) scanf("%I64d", &l[i]); if(n < 4) { cout << "0" << endl; continue; } sort(l, l + n); int i = n - 1; while(i - 1 >= 0) { if(l[i] == l[i - 1]) { lx[k] = l[i]; i -= 2; k++; } else if(l[i] - 1 == l[i - 1]) { lx[k] = l[i] - 1; i -= 2; k++; } else i--; } for(int j = 0; j < k; j += 2) s += lx[j] * lx[j + 1]; printf("%I64d\n",s); } return 0; }
题意:输入一个n。之后输入n个数。表示n条长方形的边。之后每四条自由组合成长方形。问怎么样组合长方形总面积最大。(每条边都可以缩短1)
题解:总面积要求最大。自然是大数×大数。当然必须有两条相同的边才能组成长方形。一个数组l[maxn]用来初始存数。另一个数组lx[maxn]用来存放满足大小相同的边(2边存放一次就够)(如果-1 都不能有相同的边长 那条边舍去 不做任何处理)。还有就是n必须大于等于4(之前临时补了这段代码 结果放错位置 wa了一次。)还有就是 一开始两个数组都开了int型。但是最后相乘的时候一定会超过范围。所以最后都开了long long。
相关文章推荐
- curl proxy
- 模式
- CodeForces 405B Playing Dominoes acm 模拟题
- linux下查找的相关命令
- SVN--分支、合并
- Jsoup学习笔记10:Saz2Csv解析器
- scala时间处理-获取今天日期,昨天日期,本周时间,本月时间,时间戳转换日期,时间比较
- 浅谈nodejs中的Crypto模块
- OpenGL: What is MatrixMode?
- 南邮 OJ 1083 ACM竞赛之输入输出
- struts2拦截器interceptor的三种配置方法
- 把ppt转成pdf格式浏览的方法
- bc第七场Little Pony and Dice(dp)
- Dojo框架:误解与现实
- C语言main函数的参数含义及输入
- 弹出窗口居中显示
- ListView总结(多选框ListViiew,动态加载,多线程更新ListView中的进度条)
- servelet 连接mysql
- 科学家证实银河系恒星群迁移
- 南邮 OJ 1081 组织集体活动