马氏距离
https://zhuanlan.zhihu.com/p/46626607
、马氏距离的优劣:
优点:它不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关,由标准化数据和中心化数据(即原始数据与均值之差)计算出的二点之间的马氏距离相同。马氏距离还可以排除变量之间的相关性的干扰。
缺点:它的缺点是夸大了变化微小的变量的作用
SQL
1 统计两个表格clk_log和ordr_detail表中的订单和浏览的最小时间uid,pay_time,clk_time。
select ordr_detial.uid,ordr_detail.ordr_time,clk_log.clk_time right clk_log ordr_detail on clk_log.uid=ordr_detial.uid
对每个pay_time遍历clk_time求最小的差,ordr_detial再插入一列。
这个还在考虑。
2 假设一个奖池有N,各个商家的得分不同,得分最高的商家得N/2,第二得得到N/4以此类推,如果剩余奖金小于500,则不再发放,求各个商家获奖的钱数,uid,score。表格为userlist。
declare @n int;
declare @sn int;
declare @m int;
set @n=1;
set @m=501;
alter table userlist add amt float;
select @m=count(1) from userlist;
select row_num() over (order by score desc) as rownum,uid from userlist
begin
while @m>=500
begin
set @m=sn/2
update userlist set amt=@m where rownum=@n
set @n=@n+1
set @sn=@m
end
end
select uid,amt from userlist
编程题
1 飞行棋游戏,最后离终点K步,投N次骰子,每次骰子的数为Di,如果到达终点,输出paradox,如果没有,输出离终点距离和回退次数。0<=K<=600,0<=N<=100
#include<iostream>
#include <numeric>
using namespace std;
int main(int argc, char const *argv[])
{
int k,n;
cin>>k>>n;
int d[n];
for (int i = 0; i < n; ++i)
{
cin>>d[i];
}
int s=accumulate(d,d+k/6,0);//O(k/6)
int m=0;
int k1=k;
if (s==k)
{
cout<< "paradox";
return 0;
}
else
{
k-=s;
for (int i = k1/6; i < n; ++i)//O(n)
{
if (d[i]==k)
{
cout<<"paradox";
return 0;
}
else
{
if (d[i]>k)
{
m++;
k=d[i]-k;
}
else
{
k-=d[i];
}
}
}
cout<<k<<" "<<m;
}
return 0;
}
最后也就是O(n)的复杂度。
2 一共6*6的36块地,但有一些建筑,现在你手上有6种种子,保证4邻域不同,种植方案多少种。输入的#表示没有建筑,*有建筑。
这个题感觉要从左上角的1x1开始,但是没啥简单的想法。
,
还有一种思路是先填第一种植物,然后填第二种,第三种…
填第二种的时候把第一种填的位置记为*。但这样存储空间似乎会爆炸。
最后是一行一行扫描。
3 骰子的种类,如果经过若干次上下,左右,前后的翻转,两个骰子的六面完全一样,则为同类。
4 美味值大于等于T,求最小的热量。
不算难。