来源:Violet_II T1

好神的一题,我竟然没做出来QAQ

首先我们发现,答案是sigma(x[i]*x[j], i>j)+sigma(y[i]*y[j], i>j)。显然只需要讨论左边的就行了,右边就可以同理了。

我们发现sigma(x[i]*x[j], i>j)=(sigma(x[i])^2-sigma(x[i]^2))/2,减号后边和除以2显然是常数也就是说确定了x[i]也就确定了值。但是x[i]的值有哪些可以取呢?我们发现在sigma(x[i]*x[j], i>j)中,因为x[j]的取值与x[i]无关,所以对于x[i],假定所有i>j都确定了,那么也就是x[i]*sigma(x[j]),所以这是一个一次函数,我们对他取极值就行了。那么x[i]的值我们确定了,就是给定数据的x[i]或-x[i]。

那么问题转化为求最小的|sigma(x[i])|,注意这是绝对值。

我们考虑像背包那样,d[i][j]表示前i个物体,体积为j是否能被取到,那么

d[i][j+a[i]]=1 当 d[i-1][j]=1

d[i][j-a[i]]=1 当 d[i-1][j]=1

初始化 d[0][0]=1

那么就行了。。。。

好神。。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <cstring>
#include <map>
typedef long long ll;
#define read(x) x=getint()
#define dbg(x) cout << (#x) << " = " << x << endl
#define rep(i, n) for(int i=0; i<(n); ++i)
#define for1(i, a, n) for(int i=(a); i<=(n); ++i)
#define for2(i, a, n) for(int i=(a); i<(n); ++i)
#define for3(i, a, n) for(int i=(a); i>=(n); --i)
#define for4(i, a, n) for(int i=(a); i>(n); --i)
#define CC(a, n) memset(a, n, sizeof(a))
using namespace std;
inline const ll getint() { ll r=0, k=1; char ch=getchar(); for(; ch<'0'||ch>'9'; ch=getchar()) if(ch=='-') k=-1; for(; ch>='0'&&ch<='9'; ch=getchar()) r=r*10+ch-'0'; return r*k; }
inline const int max(const int &a, const int &b) { return a>b?a:b; }
inline const int min(const int &a, const int &b) { return a<b?a:b; } const int N=400;
int x[N], y[N], n, ans;
bool d[2][N*N*2]; int dp(int *a) {
int sum=0, S=N*N, pos=0;
CC(d, 0);
d[pos^1][S]=1;
for1(i, 1, n) {
for1(j, S-sum-a[i], S+sum+a[i]) d[pos][j]=0;
for1(j, S-sum-a[i], S+sum+a[i]) if(d[pos^1][j]) d[pos][j+a[i]]=1, d[pos][j-a[i]]=1;
sum+=a[i];
pos^=1;
}
pos^=1;
int mn=~0u>>1;
for1(i, S, S+sum) if(d[pos][i]) { mn=min(mn, i-S); break; }
for3(i, S, S-sum) if(d[pos][i]) { mn=min(mn, S-i); break; }
return mn*mn;
} int main() {
read(n);
for1(i, 1, n) read(x[i]), read(y[i]);
for1(i, 1, n) ans-=x[i]*x[i];
for1(i, 1, n) ans-=y[i]*y[i];
ans+=dp(x);
ans+=dp(y);
printf("%.2lf\n", (double)ans/(double)2);
return 0;
}

  


noip 模拟赛 After 17(递推+特殊的技巧)的更多相关文章

  1. 2018.06.29 NOIP模拟 1807(简单递推)

    1807 题目背景 SOURCE:NOIP2015-SHY-2 题目描述 给出一个由数字('0'-'9')构成的字符串.我们说一个子序列是好的,如果他的每一位都是 1.8.0.7 ,并且这四个数字按照 ...

  2. noip模拟赛Bywzj52501 17.10.18

    T1 rob 环形消灭虫子 先想出了一个n^2暴力 然后我们想到 如果从两个连续的点求解 则会出现仅有的两种结果 (因为这两种情况的交是全集) 当时因为Naive求了50次 #include<i ...

  3. 10.17 NOIP模拟赛

    目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...

  4. 2017-9-22 NOIP模拟赛[xxy][数论]

    XXY 的 的 NOIP 模拟赛 4 4 —— 数学专场 A Description定义 f(x)表示 x 的约数和,例:f(12)=1+2+3+4+6+12=28给出 x,y,求Σf(i),i∈[x ...

  5. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  6. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

  7. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

  8. NOI.AC NOIP模拟赛 第五场 游记

    NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...

  9. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

随机推荐

  1. C#中使用正则

      using System.Text.RegularExpressions;           private void button1_Click(object sender, EventArg ...

  2. 二维纹理 Texture 2D

    Textures bring your Meshes, Particles, and interfaces to life! They are image or movie files that yo ...

  3. LoadRunner访问 Mysql数据库

    这是很久以前编写的一个测试案例,那时是为了检查大量往Mysql数据库里插入数据,看一下数据库的性能如何?服务器是否会很快就被写满了. 前期的准备工作:Mysql 数据库搭建,LoadRunner,li ...

  4. PHPStorm Xdebug 反应很慢怎么办?

    PHPStorm解决Xdebug Slow问题 PHPStorm Xdebug 反应很慢怎么办? 今天白天才架起PHPStorm+xdebug的调试环境,就遇到了各式各样的问题:访问超慢响应.访问超快 ...

  5. js实现全选,全不选,反选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. js 创建数组方法以及区别

    示例代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...

  7. 最小公倍数 【杭电-HDOJ-1108】 附题+具体解释

    /* 最小公倍数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  8. hibernate EJBQL QBC QBE

    在功能方面是本地SQL>HQL>EJBQL>QBC>QBE   假想一个BBS.   板块: package com.bjsxt.hibernate; import javax ...

  9. top命令的Load average 含义及性能参考基值

    $ uptime11:12:26 up 3:44, 4 users, load average: 0.38, 0.31, 0.19 系统平均负载被定义为在特定时间间隔内运行队列中的平均进程树.如果一个 ...

  10. iOS AVPlayer视频播放器

    代码地址如下:http://www.demodashi.com/demo/11168.html 一.运行效果 二.实现过程 ①.创建播放器avPlayer //创建播放器 url = [url str ...