海亮周赛祭记——总结

【VSCode Python无法格式化代码】 提示:需要Install Formatter…安装插件autopep8,点击install。出现Format Document。 阅读详情

前言

HL第一次考试

寄了,记一下(doge

题目如下

题目

T1:挂

绩点是衡量大学生学业成绩的一个指标,在某所大学里,绩点是这么计算的:

设一门课的成绩转化为百分制之后为x,定义这门课的绩点g如下:

1、当x<60时,定义g=0.00

2、否则定义g=4-3*(100-x)^2/1600,然后四舍五入到两位小数。

在此计算方式下,可以知道60分对应的绩点就是1.00,90分对应的绩点是3.81,99和100分对应的绩点都是4.00。

同时,每门课还有一个学分s,定义若干门课的平均绩点为这些课的绩点以学分为权重进行加权平均,再四舍五入到两位小数所得的结果。

现在你的任务就是计算若干位同学在一学期内所有课程的平均绩点。

输入格式 第一行为一个正整数T,表示数据组数

接下来T组数据,每组数据第一行为一个正整数n,表示某位同学某学期所报的课程数,接下来n行,每行两个整数s,x,表示这位同学这学期学习了一门学分为s的课程,取得的成绩在百分制下为x。

输出格式 对每组数据输出一行一个两位小数,表示这组数据对应的课程的平均绩点。

样例 input

2

3

11 60

1 100

12 100

6

4 81

5 85

2 88

2 88

2 76

5 87

样例 output

2.63

3.52

对于50%的数据,输入中所有百分制的分数为60或100。

对于100%的数据,1<=T<=1000,1<=n<=50,1<=s<=12,0<=x<=100

样例解释

第一组数据加权平均绩点为(11+13*4)/24=2.625,四舍五入输出2.63。

T2:AC

题目 给定 m 个不同的正整数 a1, a2, …, am,请对 0 到 m 每一个 k 计算,在区间 [1, n] 里有多少正整数是 a 中恰好 k 个数的约数。

对于 100 100%100 的数据,m ≤ 200 , n , a i ≤ 1 0 9 m ≤ 200, n,ai ≤ 10^9m≤200,n,ai≤10 9 。

分析 30pts暴力随便写,时间复杂度O ( n m ) O(nm)O(nm)

100pts正解

把m个数约数求出来,然后排序去重操作,只有这些约数才会对答案产生贡献,将这些约数求出答案

当k = 0 k=0k=0时,a n s [ k ] = n − ∑ i = 1 m a n s [ i ] ans[k]=n-\sum_{i=1}^m ans[i]ans[k]=n−∑ i=1 m​ans[i]

样例

就挺水的……

T3:AC

⼩ Y 同学有⼀块超级 CPU,它有两个超级核⼼ A 和 B。 A 核⼼可以同时处理多项任务,每项任务处理时间为 x,B 核⼼只能同时 处理⼀项任务,每项任务处理时间为 y。 这⼀天,⼩ Y 同学接到了 n 项紧急任务,第 i 项紧急任务在 ti 时刻发出, 且必须在任务发出时进⾏处理。 由于⼩ Y 可以调节 CPU 的 B 核⼼,你想知道对于 y ∈ [1, x](即 y 从 1 到 x 依次取值),处理完毕所有任务的最早时间是多少?

样例:同前一样的水

T4:AC

给定 n 个正整数,每个正整数的大小不超过 40 40。

可以执行任意次操作,每次操作可以选取两个相邻且相同的数字,并将他们合并,合并后的数字为合并前的数字 +1。

求最后这些数字的最大值最多可以是多少。

样例:我***

T5:挂 给定

n 个点

m 条边的有向图,问从 1 1 号点出发并回到 1 1 号点,最多能访问到多少个不同的点。过程中可以重复经过任意点。

这题实在太简单了,于是我们允许在行走过程中可以有一次行走是沿一条边逆向而行的,问在这种情况下最多能访问到多少个不同的点。

这个题名是足够逆天的,可以。

可以骗1分,但我不说(bushi

T6:挂

你现在处于一个二维平面中,在 0 0 时刻你位于起始点 ( 0 , 0 ) (0,0)。若某一时刻你处于位置 (x,y),那么你可以选择在下一时刻出现在

(x,y),

(x+1,y),

(x−1,y),

(x,y+1)

四个位置中的任意一个。

系统发布了若干个任务:若在第 T 时刻你位于点 (X,Y),你将获得 W 的奖励。

求最大收益。

OI高中后第一次考试吧,301分,刚拿一半分,挺难评的。让小学的王者们按在地上摩擦。

代码

解析给的解释真好,一下就透了

下午订正了,算是AK?

但是T6成功被雪猫唤醒了我的惰性,这是能说的吗??

T1

 注意仔细阅读题面以及四舍五入时的误差

没出来也是够@!*@的……

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int T;
    cin >> T;
    for(int d = 1;d <= T;d ++)
    {
        int n,s[52] = {},x[52] = {};
        cin >> n;
        int ssum = 0;
        double gsum = 0;
        for(int i = 1;i <= n;i ++)
        {
            cin >> s[i] >> x[i];
            ssum += s[i]; 
        }
        for(int i = 1;i <= n;i ++)
        {
            if(x[i] < 60)
            {
                continue;
            }
            else
            {
                double g = (4.0 - 3.0 * (100.0 - double(x[i])) * (100.0 - double(x[i])) / 1600.0);
                gsum += round(g *100) * s[i];
            }
        }
    printf("%.2lf\n",0.01 * round(gsum / ssum));
    }
    return 0;
}

T2

基础数论?一如既往的好玩,这是实话(请不要让我出去

对于前 30 的分数,直接 O(nm) 判断并计数即可。 对于中间的 30 分,只需求出 a1 有多少个约数。

对于满分做法,注意到可以求出所有 k>0 的答案,用 n 减去这些值就能算出 k=0 的结果。于是对每个输入的 ai 根号求出所有约数,借助 map 即可实现快速计数。

如果不使用 STL 也可以将所有约数求出来,sort 一下之后对每个不同的约数重新 O(m) 判断也是可以的。

#include<bits/stdc++.h> 
using namespace std;
int n,m,Merlin;
int a[100010],tot = 0;
int ans[100010];
int max(int x,int y)
{
    if(x > y) 
    return x;
    else 
    return y;
}
inline void check(int x)
{
    int i;
    Merlin = 0;
    for(i = 1;x / i >= i;i ++)
        if(x % i == 0)
        {
            a[++tot] = i;
            a[++tot] = x / i;
            if(i == x / i) 
            tot --;
        }
    return;
}
int main()
{
    cin >> n >> m;
    for(int i = 1;i <= m;i ++)
    {
        int u;
        cin >> u;
        check(u);
    }
    sort(a + 1,a + tot + 1);
    int j = a[1],time = 0,t = 0,i = 1;
    while(i <= tot && j <= n)
    {
        time = 0;
        while(a[i] == j && j <= n) 
        time ++,i ++;
        ans[time] ++;
        t ++; 
        j = a[i];
    }
    cout << n - t << endl;
    for(int i = 1;i <= m;i ++)
    {
        cout << ans[i] << endl;
    }
    return 0;
}

 T3

#include<bits/stdc++.h>
using namespace std;
const int Maxn = 1e6;
int n,x,t[Maxn + 5],line[Maxn + 5];
int check(int Merlin) 
{
    return max(t[line[Merlin]] + x,t[n] + Merlin);
}
int main()
{
    cin >> n >> x;
    for(int i = 1;i <= n;i ++)  
    {
        cin >> t[i];
    }
    for(int i = n - 1;i >= 1;i --) 
    {
        int dif;
        dif = t[i + 1] - t[i];
        dif ++;
        for(int j = dif;j <= x && line[j] == 0;j ++)
            line[j] = i;
    }
    t[0] = -x;
    for(int i = 1;i <= x;i ++) 
    {
        int ans = check(i);
        cout << ans << endl;
    }
    return 0;
}

T4

#include<bits/stdc++.h>
using namespace std;
int n,a,f[60][250000],ans;
int main()
{
    cin >> n; 
    for(int i = 1;i <= n;i ++)
    {
        cin >> a;
        f[a][i] = i;
    }
    for(int i = 2;i <= 58;i ++)
    {
        for(int j = 1;j <= n;j ++)
        {
            if(!f[i][j] && f[i - 1][j])
            {
                f[i][j] = f[i - 1][f[i - 1][j] + 1];
                }
            if(f[i][j]) 
            {
                ans = i;
            }
        }
    }
    cout << ans;
    return 0;
}

T5

订正时AI给的思路,我不说我是怎么做出来的 

 

#include<bits/stdc++.h>
using namespace std;
const int maxn=100003;
stack<int> s;
queue<int> q;
int tot,tot1,tot2;
int v[maxn],v1[maxn],v2[maxn];
int nxt[maxn],nxt1[maxn],nxt2[maxn];
int first[maxn],f1[maxn],f2[maxn];
int ins[maxn],dfn[maxn],low[maxn];
int c[maxn],cnt[maxn],use[maxn];
int dis1[maxn],dis2[maxn];
int timing,col;
void add(int x,int y)
{
    v[tot]=y;
    nxt[tot]=first[x];
    first[x]=tot++;
}
void add1(int x,int y)
{
    v1[tot1]=y;
    nxt1[tot1]=f1[x];
    f1[x]=tot1++;
}
void add2(int x,int y)
{
    v2[tot2]=y;
    nxt2[tot2]=f2[x];
    f2[x]=tot2++;
}
void tarjan(int x)
{
    ins[x]=1;
    s.push(x);
    dfn[x]=low[x]=++timing;
    for(int to=first[x];to!=-1;to=nxt[to])
    {
        if(!dfn[v[to]])
        {
            tarjan(v[to]);
            low[x]=min(low[x],low[v[to]]);
        }
        else if(ins[v[to]])
            low[x]=min(low[x],low[v[to]]);
    }
    if(dfn[x]==low[x])
    {
        col++;
        int k;
        do
        {
            k=s.top();
            ins[k]=0;
            c[k]=col;
            cnt[col]++;
            s.pop();
        } while (k!=x);
    }
}
void spfa1(int x)
{
    dis1[x]=cnt[x];
    q.push(x);
    while(!q.empty())
    {
        int k=q.front();
        q.pop();
        for(int to=f1[k];to!=-1;to=nxt1[to])
        {
            if(dis1[v1[to]]<dis1[k]+cnt[v1[to]])
                dis1[v1[to]]=dis1[k]+cnt[v1[to]];
            if(!ins[v1[to]])
            {
                q.push(v1[to]);
                ins[v1[to]]=1;
            }
        }
        ins[k]=0;
    }
}
void spfa2(int x)
{
    dis2[x]=cnt[x];
    q.push(x);
    while(!q.empty())
    {
        int k=q.front();
        q.pop();
        for(int to=f2[k];to!=-1;to=nxt2[to])
        {
            if(dis2[v2[to]]<dis2[k]+cnt[v2[to]])
                dis2[v2[to]]=dis2[k]+cnt[v2[to]];
            if(!ins[v2[to]])
            {
                q.push(v2[to]);
                ins[v2[to]]=1;
            }
        }
        ins[k]=0;
    }
}
int main()
{
    int n,m,a,b,start;
    cin>>n>>m;
    memset(first,-1,sizeof(first));
    memset(f1,-1,sizeof(f1));
    memset(f2,-1,sizeof(f2));
    for(int k=0;k<m;k++)
    {
        scanf("%d%d",&a,&b);
        add(a,b);
    }
    for(int i=1;i<=n;i++)
        if(!dfn[i])
            tarjan(i);
    start=c[1];
    for(int i=1;i<=n;i++)
        for(int to=first[i];to!=-1;to=nxt[to])
            if(c[i]!=c[v[to]])
            {
                add1(c[i],c[v[to]]);
                add2(c[v[to]],c[i]);
            }
    spfa1(start);
    spfa2(start);
    int ans=cnt[start];
    for(int i=1;i<=n;i++)
        if(!use[c[i]] && dis1[c[i]])
        {
            use[c[i]]=1;
            for(int to=f2[c[i]];to!=-1;to=nxt2[to])
            {
                if(!dis2[v2[to]])
                    continue;
                ans=max(dis1[c[i]]+dis2[v2[to]]-cnt[start],ans);
            }
        }
    cout<<ans;
    return 0;
}

T6

@雪猫唤醒了我的惰性,我不说我是怎么做出来的(www.bing.com + dfs + bfs

四维偏序缩到三位偏序(核心??

bing快搜版:

#include<bits/stdc++.h>
#define fi first
#define se second
#define TIME 1e3 * clock() / CLOCKS_PER_SEC
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
inline int read() {
    int x = 0;
    bool f = 0;
    char ch = getchar();
    while(!isdigit(ch)) f |= ch == '-', ch = getchar();
    while(isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
    return f ? -x : x;
}
inline void print(int x) {
    if(x < 0) return putchar('-'), print(-x);
    if(x >= 10) print(x / 10);
    putchar(x % 10 + '0');
}
inline int lowbit(int x) {return x & -x;}
bool Memst;
constexpr int N = 1e5 + 10;
int n;
pair<pii, pii> a[N];
pair<pii, int> b[N];
ll tree[N], dp[N];
void update(int x, ll v) {
    while(x < N) {
        tree[x] = max(tree[x], v);
        x += lowbit(x);
    }
}
ll query(int x) {
    ll res = -0x3f3f3f3f3f3f3f3f;
    while(x > 0) {
        res = max(res, tree[x]);
        x -= lowbit(x);
    }
    return res;
}
void solve(int l, int r) {
    if(l == r) {
        dp[l] += (ll)a[l].se.se;
        return;
    }
    int mid = (l + r) >> 1;
    solve(l, mid);
    vector<int> v;
    int tot = 0;
    for(int i = l; i <= r; i++) {
        int p = a[i].fi.se - a[i].fi.fi - a[i].se.fi, q = a[i].fi.se - a[i].fi.fi + a[i].se.fi;
        b[++tot] = make_pair(make_pair(p, q), i);
        v.push_back(q);
    }
    sort(b + 1, b + tot + 1);
    sort(v.begin(), v.end());
    v.resize(unique(v.begin(), v.end()) - v.begin());
    for(int i = 1; i <= (int)v.size(); i++) tree[i] = -0x3f3f3f3f3f3f3f3f;
    for(int i = 1; i <= tot; i++) {
        int pos = lower_bound(v.begin(), v.end(), b[i].fi.se) - v.begin() + 1, id = b[i].se;
        if(id <= mid) update(pos, dp[id]);
        else dp[id] = max(dp[id], query(pos));
    }
    solve(mid + 1, r);
}
bool Memed;
int main(){
    fprintf(stderr, "%.3lf MB\n", (&Memst - &Memed) / 1048576.0);
    #ifdef JERRY_JIANG
        FILE *IN = freopen("input.in", "r", stdin);
        FILE *OUT = freopen("output.out", "w", stdout);
    #endif
    ios::sync_with_stdio(false); cin.tie(0);
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i].fi.se >> a[i].se.fi >> a[i].fi.fi >> a[i].se.se;
    sort(a + 1, a + n + 1);
    a[0].fi.fi = a[0].fi.se = a[0].se.fi = a[0].se.se = 0;
    memset(dp, -0x3f, sizeof(dp));
    dp[0] = 0;
    solve(0, n);
    ll ans = 0;
    for(int i = 1; i <= n; i++) ans = max(ans, dp[i]);
    cout << ans << endl;
    fprintf(stderr, "%.3lf ms\n", TIME);
    return 0;
}

自己版:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
typedef long long LL;
int n,x,y,t,aaa,lshc[N],lshb[N],rt[N],lc[N*200],rc[N*200],idx;
LL k,ans,tr[N*200];
struct node
{
	int a,b,c,d;
	bool operator<(const node&n)const
	{
		if(a!=n.a)
			return a<n.a;
		if(b!=n.b)
			return b<n.b;
		return c<n.c;
	}
}a[N];
void xiugai(int&o,int l,int r,int x,LL z)
{
	if(!o)
		o=++idx;
	if(l==r)
	{
		tr[o]=max(tr[o],z);
		return;
	}
	int md=l+r>>1;
	if(md>=x)
		xiugai(lc[o],l,md,x,z);
	else
		xiugai(rc[o],md+1,r,x,z);
	tr[o]=max(tr[lc[o]],tr[rc[o]]);
}
LL query(int o,int l,int r,int x,int y)
{
	if(!o)
		return 0;
	if(x<=l&&r<=y)
		return tr[o];
	int md=l+r>>1;
	LL ans=0;
	if(md>=x)
		ans=max(ans,query(lc[o],l,md,x,y));
	if(md<y)
		ans=max(ans,query(rc[o],md+1,r,x,y));
	return ans;
}
void update(int x,int y,LL z)
{
	for(;x<=n;x+=x&-x)
		xiugai(rt[x],1,n,y,z);
}
LL ask(int x,int y)
{
	LL ans=0;
	for(;x;x-=x&-x)
		ans=max(ans,query(rt[x],1,n,1,y));
	return ans;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d%d",&t,&x,&y,&aaa);
		if(t-x-y<0||x+t-y<0)
		{
			--i,--n;
			continue;
		}
		a[i]=(node){y,t-x-y,x+t-y,aaa};
		lshb[i]=t-x-y;
		lshc[i]=x+t-y;
	}
	for(int i=1;i<=n;i++)
		rt[i]=++idx;
	sort(a+1,a+n+1);
	sort(lshb+1,lshb+n+1);
	sort(lshc+1,lshc+n+1);
	for(int i=1;i<=n;i++)
	{
		a[i].b=lower_bound(lshb+1,lshb+n+1,a[i].b)-lshb;
		a[i].c=lower_bound(lshc+1,lshc+n+1,a[i].c)-lshc;
	}
	for(int i=1;i<=n;i++)
	{
		k=ask(a[i].b,a[i].c)+a[i].d;
		update(a[i].b,a[i].c,k);
		ans=max(ans,k);
	}
	printf("%lld",ans);
}

总结

难吗?

不难(doge

就是需要熟练(OK啊

总之吧,Merlin·Lee也算是考了试了,希望不要摆,希望下次周赛能漂亮点

我明知我不会赢的完美,所以我不是想输,我只是不想输的太难看,我要努力输的漂亮

开始我这个少年的奇幻漂流(@Mayday)吧:

划过挫折和彷徨,我们航行向天际线和永恒。

当诸神背过身,当百鬼夜行狂欢,当人间掀起更甚海洋的巨浪,我要竖起这属于大地的风帆。

我们将航行在耳语之间、在极端之间、在绝对之间。

繁星失语的午夜,也许没有方向,但定无风雨,也能安适静待远方天光。

Merlin·Lee

20240217

中国浙江省绍兴市诸暨市海亮中学

fanuc机器人I/O分配 FANUC机器人在和其他外部设备进行通讯时,需要对信号进行配置。 在机器人处于UOP自动分配状态时,系统会自动检索已配对设备,并分配相应的机架号。 当我们需要手动对信号进行分配时,可参考以下机架号进行配置。 不同的通讯协议对应的机架号不同,外部通讯协议常用的机架号参考下表: 序号 机架号 通讯类型 1 0 Process I/O 2 1-15 阅读详情

相关推荐

使用ChIPSeeker进行ChIP-seq, ATAC-seq,cut&tag等富集峰的基因组注释

常规的下一代高通量测序(next generation sequencing, NGS)实验通常产生大量短片段(reads),通常我们需要将这些reads比对到参考基因组/转录组上,即将它们置于生物学上有意义的基因背景下,才能获得有意义的结果。一般我们认为会产生两种类型的数据(当然两者并无严格意义上的区分)

微生信 3320

题解 | #查询每天刷题通过数最多的前二名用户id和刷题数#

科锐国际(计算机类),汤臣倍健,中建三局,宁德时代,途游游戏,得物,蓝禾,顺丰,康冠科技24春招内推。1.数据库的基本使用已经学完了,在做老韩的练习题,做完对答案然后讲解,其实没太大难度,感觉就是练少了。我在一家中厂的AI算法实习半年,期间干了很多的事,主管和组长对我评价很好,对我能力十分认可,还给了个。如题,千等万等终于等到,结果上面给的是远程面试四面(一对一单面),还是视频面试,还给了链接。大家好,我是一名建筑设计师,成功转行储能海外售前,经过5家面试,全部进入终面,最后拿到两个offer。

华鑫的专栏 1119

CAPL实战:从零构建HEX文件解析器,赋能UDS刷写

本文详细介绍了如何使用CAPL从零构建HEX文件解析器,以支持UDS刷写操作。通过解析HEX文件格式、设计状态机、优化数据结构与算法,实现高效准确的固件数据处理,并提供了与UDS刷写流程对接的工程化实践建议。

weixin_28726391的博客 444

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 252

TikTok网页版X-bougs和_signature参数逆向实战:从断点到RPC调用的完整流程

本文详细解析了TikTok网页版X-bougs和_signature参数的逆向工程实战,从基础断点调试到高级RPC调用,完整还原加密参数的生成过程。通过工具链搭建、加密定位、核心突破及实战演练,帮助开发者深入理解TikTok的加密体系,并构建自动化签名系统。

weixin_28691003的博客 440

新手必看!无人机定高PID调参避坑指南:从理论到实战的完整流程

本文为无人机新手提供定高PID调参的完整指南,从传感器融合到抗风策略,详细解析多传感器融合、PID控制参数调试及环境干扰应对。通过实战案例和代码示例,帮助开发者快速掌握无人机定高技术,避免常见调参陷阱,提升飞行稳定性。

spark7igniter的博客 221

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 322

YOLOv11改进策略【卷积层】| ICCV-2023 LSK大核选择模块 包含二次独家创新

LSK module是。

Limiiiing的博客 1386

把 KV Cache 压到 FP4:BitDecoding-FP4 的算法-系统协同设计复盘

长上下文推理卡在KV Cache的显存与带宽上,而现有FP4方案要么精度崩、要么速度废。这篇文章复盘BitDecoding-FP4如何用三个算法补丁加一个系统重构,在B300上把服务吞吐提升2.4–3.0倍,精度几乎不掉。

helloagent的博客 301

基于STM32、HAL库的MCP4013T-103E/CH 数字电位器驱动程序设计

define MCP4013_I2C_ADDR (0x5F << 1) // HAL库使用7位地址左移1位,或直接使用0xBE/0xBF。#include "i2c.h" // 包含你的I2C初始化相关的头文件,例如由CubeMX生成的 i2c.h。大于127的值会被截断。// MCP4013的读操作:主机发起读取请求,从机返回当前滑片位置的一个字节。// 使用HAL_I2C_Master_Transmit直接发送数据。// 使用HAL_I2C_Master_Receive读取一个字节。

corlin6688的博客 126

[QMT量化交易小白入门]-104、QMT平台运行深度学习模型,预测期货价格

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 485

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 596

华为OD技术面八股_C++_05

汇总华为OD技术面C++方向技术面八股文,提供详细解答。

qq_45776114的博客 413

优选算法:分治-归并排序

交易逆序对的总数

Wangshijie1015的博客 136

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 23

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 751

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

408 算法 06|堆与 Top-K:最小的 10 个数,到底该用数组还是堆

2022(42) 找 100 万个数里最小的 10 个,官方给了"10 元素有序数组"和"大根堆"两种答案。我把两种都实现并数了比较次数:k=10 时两者几乎打平,k=10000 时堆少 111 倍。另附 2021(42) 计数排序的比较次数与稳定性实测。

m0_56226131的博客 358

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 172

408 算法 04|主元素与三元组最小距离:两种“扫描时做决定“的思路

2013(41) 的主元素用摩尔投票一遍选出候选,但真正的考点是"选完必须验票";2020(41) 的三元组最小距离,三指针每次只挪最小的那个,靠的是 D=2×(max−min) 这个恒等式。两套完整 C 代码加真实输出,附官方评分档位表。

m0_56226131的博客 415

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

a bit 89

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 220

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 179

【前缀和+复合离散化】题解:双色矩形(two)_数据结构_算法优化_预处理_二维前缀和_STL_C++算法竞赛

给定一个 $n \times n$ 的黑白棋盘,初始按 $i+j$ 奇偶染色,经 $k$ 个格子颜色翻转后,求子矩形中黑白格子数差的绝对值最大值。由于 $n$ 可达 $10^9$,但 $k \leq 50$,可离散化关键点。枚举所有由修改点构成的矩形及其四边向外扩展(共 $16$ 种扩展方式),利用二维前缀和快速计算变化量,结合奇偶性判断多出的格子颜色,最终取最大绝对差。时间复杂度为 $O(k^4)$,在 $k \leq 50$ 下可行。

YLCHUP的博客 178

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 365

SSL证书选RSA还是ECDSA:公钥算法、CA签名与兼容性怎么核对

申请SSL证书时,RSA和ECDSA该怎么选?先分清站点公钥算法、CA签名算法和TLS实际兼容性,再用隔离OpenSSL实验读取两类材料,核对申请、续期和部署交接,避免只看Signature Algorithm就选错。

谁呀!的博客 401
上一篇: Gift‘s Methods
下一篇: HL小祭记0216-0218
MaydayMerlin
博客等级 码龄3年 346粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值