HDU 4712Hamming Distance(隨機函式運用)
Hamming Distance
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 1043 Accepted Submission(s): 394
Problem Description
(From wikipedia) For binary strings a and b the Hamming distance is equal to the number of ones in a XOR b. For calculating Hamming distance between two strings a and b, they must have equal length.
Now given N different binary strings, please calculate the minimum Hamming distance between every pair of strings.
Now given N different binary strings, please calculate the minimum Hamming distance between every pair of strings.
Input
The first line of the input is an integer T, the number of test cases.(0<T<=20) Then T test case followed. The first line of each test case is an integer N (2<=N<=100000), the number of different binary strings. Then N lines followed, each of the next N line
is a string consist of five characters. Each character is '0'-'9' or 'A'-'F', it represents the hexadecimal code of the binary string. For example, the hexadecimal code "12345" represents binary string "00010010001101000101".
Output
For each test case, output the minimum Hamming distance between every pair of strings.
Sample Input
2
2
12345
54321
4
12345
6789A
BCDEF
0137F
Sample Output
6
7
Source
題目大意:給你很多串,最多10^5個串,每個串長度是5,16進位制轉化為2進位制,問你任意兩個串抑或得到1的最小的個數。
解題思路:做題的時候只顧著如何降低複雜度,簡單的O(n^2)肯定會超時,最後才得知是隨機函式寫。結果只可能是0~20.自己寫的時候10W次還是WA了,人品不行啊,果斷隨機100W次A了。
不過聽說可以更暴力地直接列舉最前面的10000個也可以A。網路賽要敢於嘗試。
題目地址:Hamming Distance
AC程式碼:
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[100005];
int main()
{
int tes,i,j,k,res,ans;
scanf("%d",&tes);
while(tes--)
{
int n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%X",&a[i]); //16進位制讀取
res=20; //結果初始為最大20
for(i=1;i<=1000000;i++)
{
j=rand()%n; //隨機函式
k=rand()%n;
if(j==k)
continue;
ans=0;
int tmp=a[j]^a[k]; //抑或
while(tmp) //抑或算1的個數,儲存到ans中
{
if(tmp&1)
ans++;
tmp>>=1;
}
if(ans<res)
res=ans;
}
cout<<res<<endl;
}
return 0;
}
//2453MS 676K
相關文章
- Oracle 隨機函式Oracle隨機函式
- HDU 1709 The Balance(母函式)函式
- openresty及lua的隨機函式REST隨機函式
- 運用JS 實現隨機點名 (隨機點名)JS隨機
- 隨機變數函式的分佈隨機變數函式
- Python隨機函式random使用詳解Python隨機函式random
- HDU 1848 Fibonacci again and again(SG函式)AI函式
- Matlab產生隨機數函式小結Matlab隨機函式
- 運用inlinehook主動呼叫函式inlineHook函式
- matlab中的產生隨機數的rand函式Matlab隨機函式
- MySQL建立隨機生成電話的儲存函式MySql隨機儲存函式
- php 隨機顯示圖片的函式程式碼PHP隨機函式
- Java學習隨筆(函式式介面)Java函式
- (譯)函式式元件在Vue.js中的運用函式元件Vue.js
- HDU 1848 Fibonacci again and again (尼姆博弈+sg函式)AI函式
- Random 函式在批次造資料中的運用random函式
- HDU 5795 A Simple Nim (SG函式+打表找規律)函式
- MATLAB生成服從各種分佈的隨機數函式Matlab隨機函式
- mysql迴圈插入資料、生成隨機數及CONCAT函式MySql隨機函式
- JS函式之不要隨便bindJS函式
- 教你如何運用golang 實現陣列的隨機排序Golang陣列隨機排序
- canvas小球碰壁隨機運動Canvas隨機
- js中windows的函式(隨機數,計時器的實現)JSWindows函式隨機
- C++學習隨筆——C++仿函式的應用方法C++函式
- 教你如何運用python 6.7 編寫printTable()函式表格列印Python函式
- 蒙特卡洛——使用CDF反函式生成非均勻隨機數函式隨機
- 1:賦值運算子函式賦值函式
- 函式柯里化和偏函式應用函式
- 常用啟用函式函式
- NumPy常用的位運算函式函式
- 過載運算子、解構函式函式
- 我的 golang 學習筆記系列二:golang的函式運用Golang筆記函式
- 教你如何運用python實現簡單檔案讀寫函式Python函式
- Java 函式式介面 lamada 應用Java函式
- Vue函式式元件的應用Vue函式元件
- 人工智慧---神經網路啟用函式恆等函式、sigmoid函式、softmax函式詳解人工智慧神經網路函式Sigmoid
- Matrix Distance
- A - Distance in Tree
- 如何用Serverless雲函式做免費私域運營機器人Server函式機器人