[Violet 2]After 17 题解
来源:互联网 发布:圆弧插补算法 螺旋线 编辑:程序博客网 时间:2024/06/07 00:53
题目大意为给出n个矩形,求出一个向量,每个向量都不超越各自的矩形。求最小化sigma(xi * xj+yi*yj) i<j 点积
x和y坐标可以分开来考虑
首先sigma(xi* xj) (i<j) = ((x1+....+xn)^2- (x1*x1+...+xn*xn))/2 向量的值一定取在各自的边界上,所以x1*x1+...........+xn*xn 是定值。
目前就是最小化 x1+....+xn的绝对值,经典的背包问题。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;const int MAXM = 40000;int f[200+10][MAXM*2+10];int n,x[200+10],y[200+10],a[200+10];int ans;void work(){ for (int i = 0; i <= n; ++i) for (int j = -MAXM; j <= MAXM; ++j) f[i][j+MAXM] = false; f[0][0+MAXM]=true; for (int i = 1; i <= n;++i) for (int j = -MAXM; j <= MAXM; ++j) if (f[i-1][j+MAXM]) f[i][j-a[i]+MAXM]=f[i][j+a[i]+MAXM]=true; for (int i = 0; i <= MAXM; ++i) if (f[n][i+MAXM]) { ans+=i*i ; return ;}}int main(){ cin>>n; ans = 0; for (int i = 1; i <= n ; ++i) { scanf("%d %d", &x[i], &y[i]); ans -= (x[i]*x[i]+y[i]*y[i]); a[i] = x[i]; } work(); for (int i = 1; i <= n ; ++i) a[i] = y[i]; work(); cout << ans/2<<".00"<< endl; return 0;}
- [Violet 2]After 17 题解
- [Violet 2]After 17 dp 背包
- BZOJ 2711: [Violet 2]After 17
- 【BZOJ】【P2724】【Violet 6】【蒲公英】【题解】【分块】
- VIOLET
- BZOJ 2724 [Violet 6]蒲公英分块做法题解
- [BZOJ2712][Violet 2][类欧几里得算法]棒球
- [BZOJ2712][[Violet 2]棒球][类欧几里得算法]
- [类欧几里得算法] BZOJ 2712 [Violet 2]棒球
- BZOJ2713 [Violet 2]愚蠢的副官&BZOJ1183 [Croatian2008]Umnozak
- Title 2: after
- after
- :after??
- :after
- [Violet 2]棒球 (求两分数间分母最小的分数)
- 【BZOJ2713】[Violet 2]愚蠢的副官【数位DP】【质因数分解】【枚举】【记忆化搜索】
- [数位DP] BZOJ 2713 [Violet 2]愚蠢的副官 & BZOJ 1183 [Croatian2008]Umnozak
- Violet用户指南(翻译)
- 退避算法在android开发中的应用
- Objective-C中的@property和@synthesize用法
- objective-C 中使用@Class和 #import区别
- wow,my csdn blog
- Objective-C的self.用法的一些总结
- [Violet 2]After 17 题解
- GeoServer源码解析和扩展 (一)基础篇
- GeoServer源码解析和扩展 (二)注册服务
- 使用Tab Bar切换视图
- GeoServer源码解析和扩展 (三)结构篇
- GeoServer源码解析和扩展 (四)文件系统
- WebGIS最佳实践-1 为GeoServer增加GP(Geometry Processing)服务
- 使用Tool Bar切换视图
- WebGIS最佳实践-2 在WebGIS程序中实现路径分析