Acperience

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 484    Accepted Submission(s):
258

 
Problem Description
Deep neural networks (DNN) have shown significant improvements in several application domains including computer vision and speech recognition. In computer vision, a particular type of DNN, known as Convolutional Neural Networks (CNN), have demonstrated state-of-the-art results in object recognition and detection.

Convolutional neural networks show
reliable results on object recognition and detection that are useful in real
world applications. Concurrent to the recent progress in recognition,
interesting advancements have been happening in virtual reality (VR by Oculus),
augmented reality (AR by HoloLens), and smart wearable devices. Putting these
two pieces together, we argue that it is the right time to equip smart portable
devices with the power of state-of-the-art recognition systems. However,
CNN-based recognition systems need large amounts of memory and computational
power. While they perform well on expensive, GPU-based machines, they are often
unsuitable for smaller devices like cell phones and embedded
electronics.

In order to simplify the networks, Professor Zhang tries to
introduce simple, efficient, and accurate approximations to CNNs by binarizing
the weights. Professor Zhang needs your help.

More specifically, you are
given a weighted vector W=(w1,w2,...,wn).
Professor Zhang would like to find a binary vector B=(b1,b2,...,bn) (bi∈{+1,−1})and
a scaling factor α≥0 in
such a manner that ∥W−αB∥2 is
minimum.

Note that ∥⋅∥ denotes
the Euclidean norm (i.e. ∥X∥=x21+⋯+x2n−−−−−−−−−−−√,
where X=(x1,x2,...,xn)).

 
Input
There are multiple test cases. The first line of input
contains an integer T,
indicating the number of test cases. For each test case:

The first line
contains an integers n (1≤n≤100000) --
the length of the vector. The next line contains n integers: w1,w2,...,wn (−10000≤wi≤10000).

 
Output
For each test case, output the minimum value of ∥W−αB∥2 as
an irreducible fraction "p/q"
where p, q are
integers, q>0.
 
Sample Input
3
4
1 2 3 4
4
2 2 2 2
5
5 6 2 3 4
 
Sample Output
5/1
0/1
10/1
 
Author
zimpha
 
 
题意:给定w1-wn的值,α>=0,B可以等于1或者-1,求这个的最小值。定义运算:
 

数学推论题,可以推出数学计算公式。

(w1-aB1)^2+(w2-aB2)^2+...(wn-aBn)^2

w1的取值范围是−10000≤wi≤10000,由于B1既可以取1也可以取-1,因此可以将所有的负数变为正数考虑。

因此:(|w1|-a)^2+(|w2|-a)^2+...(|wn|-a)^2(以后的w 全部为|w|,麻烦不想写)

又因为 要取最小值,显然 a=(w1+w2+...+wn)/n

展开式子 : w1^2+a^2-2aw1

       w2^2+a^2-2aw2

......

wn^2+a^2-2awn

得:(w1^2+w2^2+...+wn^2)+na^2-2a(w1+w2+...+wn)

将w1^2+w2^2+...+wn^2看作s1,w1+w2+...+wn看作s2,则:s1+na^2-2as2

且a=(w1+w2+...+wn)/n=s2/n

得 : s1+n(s2/n)^2-2(s2/n)*s2=s1+s2^2/n-2(s2^2)/n=(ns1-s2^2)/n

附上代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#define ll long long
using namespace std; ll _gcd(ll x,ll y)
{
ll z;
if(x<y) z=x,x=y,y=z;
while(y)
{
z=x%y;
x=y;
y=z;
}
return x;
} int xabs(int x)
{
return x>?x:-x;
}
int main()
{
int T,i,j,n,m;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
ll aa,bb,t;
ll s1=,s2=;
for(i=;i<n;i++)
{
scanf("%d",&m);
m=xabs(m);
s1+=m*m;
s2+=m;
}
aa=n*s1-s2*s2;
bb=n;
t=_gcd(aa,bb);
printf("%lld/%lld\n",aa/t,bb/t);
}
return ;
}

hdu 5734 Acperience(2016多校第二场)的更多相关文章

  1. hdu 5745 La Vie en rose(2016多校第二场)

    La Vie en rose Time Limit: 14000/7000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  2. hdu 5742 It's All In The Mind(2016多校第二场)

    It's All In The Mind Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  3. hdu 5744 Keep On Movin (2016多校第二场)

    Keep On Movin Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  4. hdu 5308 (2015多校第二场第9题)脑洞模拟题,无语

    题目链接:http://acm.hdu.edu.cn/listproblem.php?vol=44 题意:给你n个n,如果能在n-1次运算之后(加减乘除)结果为24的输出n-1次运算的过程,如果不能输 ...

  5. hdu 5301 Buildings (2015多校第二场第2题) 简单模拟

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5301 题意:给你一个n*m的矩形,可以分成n*m个1*1的小矩形,再给你一个坐标(x,y),表示黑格子 ...

  6. 【HDU 5305】Friends 多校第二场(双向DFS)

    依据题意的话最多32条边,直接暴力的话 2 ^ 32肯定超时了.我们能够分两次搜索时间复杂度降低为 2 * 2  ^ 16 唯一须要注意的就是对眼下状态的哈希处理. 我採用的是 十进制表示法 跑的还是 ...

  7. hdu 6053: TrickGCD (2017 多校第二场 1009) 【莫比乌斯 容斥原理】

    题目链接 定义f[n]表示n是最大公约数情况下的计数,F[n]为n是公约数情况下的计数 (可以和 http://www.cnblogs.com/Just--Do--It/p/7197788.html  ...

  8. HDU 5734 Acperience(返虚入浑)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  9. 2019牛客多校第二场 A Eddy Walker(概率推公式)

    2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...

随机推荐

  1. H5C3--语义标签以及语义标签IE8兼容,表单元素新属性,度量器,自定义属性,dataList,网络监听,文件读取

    HTML5新增标签以及HTML5新增的api     1.H5并不是新的语言,而是html语言的第五次重大修改--版本     2.支持:所有的主流浏览器都支持h5.(chrome,firefox,s ...

  2. Ubuntu 安装 setuptools

    Setuptools的官方页面 Easily download, build, install, upgrade, and uninstall Python packages 它是一个对python的 ...

  3. go struct 工厂

  4. 学习JDK1.8集合源码之--Stack

    1. Stack简介 Stack是集合中对数据结构栈的一种实现,栈的原则是先进先后出,与队列相反(先进先出).Stack是继承自Vector的,意味着它也是由数组实现的线程安全的,不考虑线程安全的情况 ...

  5. Java.控制层.响应工具类.

    Java.控制层.响应工具类. package cn.com.spdbccc.cds.index.web.base; public class ApiResponse { private int co ...

  6. Linux常用命令4 帮助命令

    1.帮助命令:man 命令英文原意:manual 命令所在路径:/usr/bin/man    执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得命令或者配置文件的帮助信息 例如:m ...

  7. 跨域知识(二)——JSONP

    JSONP是服务器与客户端跨源通信的常用方法.最大特点就是简单适用,老式浏览器全部支持,服务器改造非常小. 它的基本思想是,网页通过添加一个<script>元素,向服务器请求JSON数据, ...

  8. Core Data Migration 之拆分Entity

    参考文章:http://blog.slalom.com/2010/01/08/splitting-an-entity-in-a-coredata-migration/ 最近自己做的背单词软件,在之前的 ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 全书总结 本系列文章中可能有很多翻译有问题或者错误的地方:并且有些章节 ...

  10. poj1459 最大流Dinic

    比较简单. #include<stdio.h> #include<string.h> #include<queue> #define maxn 110 #defin ...