Acperience
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 220 Accepted Submission(s): 119
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|| = √ x12+...+xn2, 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 re integers, q>0.
Sample Input
3
4
1 2 3 4
4
2 2 2 2
5
5 6 2 3 4
Sample Output
Author
zimpha
Source
解析:
aaarticlea/png;base64,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" alt="" />i=1nwi2−n1(i=1∑n∣wi∣)2
#include <bits/stdc++.h>
typedef long long ll;
ll gcd(ll a, ll b)
{
return b == 0 ? a : gcd(b, a%b);
}
int main()
{
int T, n;
scanf("%d", &T);
while(T--){
scanf("%d", &n);
ll w1 = 0, w2 = 0;
for(int i = 0, wi; i < n; ++i){
scanf("%d", &wi);
w1 += wi*wi;
w2 += abs(wi);
}
ll a = w1*n-w2*w2, b = n;
ll g = gcd(a, b);
printf("%I64d/%I64d\n", a/g, b/g);
}
return 0;
}