代码源每日一题 div1 (201-207)

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

代码源每日一题 div1

摘桃子

[Link](摘桃子 - 题目 - Daimayuan Online Judge)

思路

  • 枚举,推公式

​ 设 s s s为 a a a的前缀和,对于一个 i i i等价于找前面有多少个位置满足 ( s i − s j ) % k = i − j → s i − i = s j − j (s_i-s_j)\% k=i-j\to s_i-i=s_j-j (si​−sj​)%k=i−j→si​−i=sj​−j且 i − j < k i-j<k i−j<k,因此开个 m a p map map直接维护记录贡献,搞一个索引 j j j来维护一个这个区间长度小于 k k k即可。

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 2e5 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {
    e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int n, m, k;
int a[N];
int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    cin >> n >> k;
    for (int i = 1; i <= n; i ++) cin >> a[i], a[i] += a[i - 1];
    map<int, int> mp;
    int res = 0;
    
    for (int i = 0, j = 0; i <= n; i ++) {
        while (i - j + 1 > k) mp[((a[j] - j ++) % k + k) % k] --;
        res += mp[((a[i] - i) % k + k) % k];
        mp[((a[i] - i) % k + k) % k] ++;
    }

    cout << res << '\n';
    return 0;
}

路径计数2

[Link](路径计数2 - 题目 - Daimayuan Online Judge)

思路

  • d p dp dp

​ 由于数据范围太大了 O ( n 2 ) O(n^2) O(n2)的 d p dp dp显然是不行的。

​ 首先我们发现如果没有路障任意两个点 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1​,y1​),(x2​,y2​)之间的合法路径为 C a b s ( x 2 − x 1 + y 2 − y 1 ) a b s ( x 1 − x 2 ) C_{abs(x_2-x_1+y_2-y_1)}^{abs(x_1-x_2)} Cabs(x2​−x1​+y2​−y1​)abs(x1​−x2​)​ ,即在总的步数中选多少步往右走。

​ m m m不是很大,因此可以这样 d p dp dp,将所有的障碍物排序保证 i i i在 i − 1 i-1 i−1的右上方,设 f i : 以 这 个 点 结 尾 的 合 法 方 案 f_i:以这个点结尾的合法方案 fi​:以这个点结尾的合法方案,总方案可以用上面的式子直接求出,怎么容斥掉不合法的方案呢,我们将不合法的路径按照它经过的第一个路障分类,因此将第 i i i个点前面的被第 i i i个点前面包住的点的不合法路径都去除掉,这样就是到这个点的合法路径了,特殊的将 ( n , m ) (n,m) (n,m)当成最后一个障碍,我们的答案就是 f l a s t f_{last} flast​

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 2e6 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {
    e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int n, m, k;
PII a[N];
int fact[N], infact[N];
int qmi(int a, int b) {
    int res = 1;
    while (b) {
        if (b & 1) res = (LL)res * a % mod;
        a = (LL)a * a % mod;
        b >>= 1;
    }
    return res;
}
int C(int n, int m) {
    if (n < m) return 0;
    return (LL)fact[n] * infact[m] % mod * infact[n - m] % mod;
}
int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    cin >> n >> m;
    fact[0] = 1;
    for (int i = 1; i <= n * 2; i ++) fact[i] = (LL)fact[i - 1] * i % mod;
    infact[n * 2] = qmi(fact[n * 2], mod - 2);
    for (int i = n * 2 - 1; i >= 0; i --) infact[i] = (LL)infact[i + 1] * (i + 1) % mod;

    for (int i = 1; i <= m; i ++) cin >> a[i].x >> a[i].y;
    a[++m] = {n, n};
    sort(a + 1, a + 1 + m);
    vector<int> f(m + 1);
    for (int i = 1; i <= m; i ++) {
        f[i] = C(a[i].x + a[i].y - 2, a[i].x - 1);
        for (int j = 1; j < i; j ++)
            if (a[j].x <= a[i].x && a[j].y <= a[i].y)
                f[i] = (((LL)f[i] - (LL)f[j] * C(a[i].x + a[i].y - a[j].x - a[j].y, a[i].x - a[j].x) % mod ) + mod) % mod;
    }

    cout << f[m] << '\n';  
    return 0;
}

函数求和

[Link](函数求和 - 题目 - Daimayuan Online Judge)

思路

  • 枚举

​ 看到与操作我们应该想到按二进制来看,我们来看什么样的 x x x最终 f ( x ) = 1 f(x)=1 f(x)=1,容斥一下,所有的 − - −最终不会取 1 1 1的就是取 1 1 1的,不会取 1 1 1的就是 a 1 a_1 a1​对应二进制有 1 1 1的位均有 1 1 1的 x x x,因此除去这些位剩下的位取或不取就是不会取 1 1 1,对于取 2 2 2的数一定含有取 a 1 a_1 a1​的二进制位,否则的话就会取 1 1 1,也就是对于每一个 a i a_i ai​算完贡献就会确定一些二进制位,每个 a i a_i ai​均容斥的算一下即可。

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 1e5 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 998244353;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {
    e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int n, m, k;
LL a[N];
int qmi(int a, int b) {
    int res = 1;
    while (b) {
        if (b & 1) res = (LL)res * a % mod;
        a = (LL)a * a % mod;
        b >>= 1;
    }
    return res;
}
int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    cin >> n >> k;
    for (int i = 1; i <= n; i ++) cin >> a[i];

    LL res = 0;
    LL last = 0;
    LL pre = 0;    
    for (int i = 1; i <= n; i ++) {
        LL sum = qmi(2, k - last);
        LL t = (pre | a[i]);
        int tmp = 0;
        for (int j = 0; j < k; j ++)
            if (t >> j & 1) tmp ++;

        last = tmp;
        tmp = k - tmp;
        LL d = qmi(2, tmp);
        res = ((res + (sum - d) * i % mod) % mod + mod) % mod;
        pre |= a[i];
    }

    cout << res << '\n';
    return 0;
}

XOR Inverse

[Link](XOR Inverse - 题目 - Daimayuan Online Judge)

思路

  • 二进制,归并排序

​ 显然枚举 x x x是不现实的,涉及异或操作,我们按位来确定 x x x的每一位选什么,每一位之间都是独立的,从高到低枚举每一位,如果当前位取 1 1 1会使逆序对数量减少就取 1 1 1,从高位到低位依次确定即可。

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 3e5 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {
    e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int n, m, k;
int a[N];
int b[N], p[N];
LL revs;
void merge_sort(int l, int r) {
	if (l >= r) return ;
	int mid = l + r >> 1;
	merge_sort(l, mid), merge_sort(mid + 1, r);
	int cnt = 0, i = l, j = mid + 1;
	while (i <= mid && j <= r) 
		if (a[i] <= a[j]) p[cnt ++] = a[i ++];
		else revs += (LL)(mid - i + 1), p[cnt ++] = a[j ++];
	
	while (i <= mid) p[cnt ++] = a[i ++];
	while (j <= r)	p[cnt ++] = a[j ++];
	for (int i = l, j = 0; i <= r; i ++, j ++) a[i] = p[j];
}
int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i ++) cin >> b[i];
    for (int i = 1; i <= n; i ++) a[i] = b[i];
    LL mn = 0;
    merge_sort(1, n);
    mn = revs;

    LL res = 0;
    for (int k = 30; k >= 0; k --) {       
        res |= 1 << k;
        for (int i = 1; i <= n; i ++)  
            a[i] = (b[i] ^ res);

        revs = 0;
        merge_sort(1, n);
        if (revs < mn) {
            mn = revs;           
        }        
        else res ^= 1 << k;
    }

    cout << mn << ' ' << res << '\n';
    return 0;
}

Closest Equals

[Link](Closest Equals - 题目 - Daimayuan Online Judge)

思路

  • 离线,分类,线段树

​ 一开始用莫队瞎搞了搞, T T T了。

​ 对于任意一个点 i i i,它和他左边第一个等于它的数构成点对是最优的,我们可以将所有的询问离线出来并按右端点分类,我们将一个点对 ( i , j ) (i,j) (i,j)的贡献记录在 i i i这个点上,因为这样我们从左到右枚举右端点的时候,只要 l ≤ i l\le i l≤i的时候就可以算上这个贡献,对于某个 r r r的某个 l l l我们要查 [ l , r ] [l,r] [l,r]这个区间结点贡献的最小值,这个可以开个线段树来维护,然后每到一个新的 r r r我们就动态的加入这个点可能构成的最近点对即可。

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 5e5 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {
    e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int n, m, k;
int a[N];
map<int, int> mp;
vector<PII> g[N];
struct Node {
    int l, r;
    int mn;
    int tag;
}tr[N << 2];
void pushup(int u) {
    tr[u].mn = min(tr[u << 1].mn, tr[u << 1 | 1].mn);
}
void down(int u) {
   if (tr[u].tag != INF) {
        tr[u << 1].mn = min(tr[u].tag, tr[u << 1].mn);
        tr[u << 1 | 1].mn = min(tr[u].tag, tr[u << 1 | 1].mn);
        tr[u << 1].tag = min(tr[u << 1].tag, tr[u].tag);
        tr[u << 1 | 1].tag = min(tr[u << 1 | 1].tag, tr[u].tag);
        tr[u].tag = INF;
   }
}
void build(int u, int l, int r) {
    tr[u] = {l, r, INF, INF};
    if (l == r) return ;
    int mid = l + r >> 1;
    build(u << 1, l, mid), build(u << 1 | 1, mid + 1, r);
}
int cnt;
void modify(int u, int l, int r, int v) {
    if (l <= tr[u].l && tr[u].r <= r) {
        tr[u].mn = min(tr[u].mn, v);
        tr[u].tag = min(tr[u].tag, v);
        return ;
    }
    down(u);
    int mid = tr[u].l + tr[u].r >> 1;
    if (l <= mid) modify(u << 1, l, r, v);
    if (r > mid) modify(u << 1 | 1, l, r, v);
    pushup(u);
}
int query(int u, int l, int r) {
    if (l <= tr[u].l && tr[u].r <= r) return tr[u].mn;
    int mid = tr[u].l + tr[u].r >> 1;
    down(u);
    int res = INF;
    if (l <= mid) res = min(res, query(u << 1, l, r));
    if (r > mid) res = min(res, query(u << 1 | 1, l, r));
    return res;
}
int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    cin >> n >> m;
    for (int i = 1; i <= n; i ++) cin >> a[i];
    build(1, 1, n);
    for (int i = 1; i <= m; i ++) {
        int l, r; cin >> l >> r;
        g[r].push_back({l, i});
    }
    vector<int> res(m);
    for (int i = 1; i <= n; i ++) {
        cnt ++;
        if (mp[a[i]]) modify(1, 1, mp[a[i]], i - mp[a[i]]);                    
        mp[a[i]] = i;
        for (auto t : g[i]) {
            int v = query(1, t.first, i);            
            res[t.second - 1] = (v == INF ? -1 : v);
        }
    }

    for (auto t : res)
        cout << t << '\n';
    return 0;
}

CCPC Harbin 2021 G, Damaged Bicycle

[Link](CCPC Harbin 2021 G, Damaged Bicycle - 题目 - Daimayuan Online Judge)

思路

  • 最短路,状压 d p dp dp,期望

​ 车子很少,我们可以先预处理出来以每个车子为起点到其它点的最短距离,对于每个车子有两种可能,没坏我们可以直接骑车到终点,坏了的我们可以选择直接走去终点或者走到另一个没有走过的车子再去判断。

​ 对于走到没有走过车子我们可以用一个二进制来表示当前状态下哪些车子没走过,设 f [ i ] [ j ] : 以 i 为 起 点 且 当 前 经 过 的 车 子 状 态 为 j 的 最 小 期 望 f[i][j]:以i为起点且当前经过的车子状态为j的最小期望 f[i][j]:以i为起点且当前经过的车子状态为j的最小期望。对于当前状态我们可以按照上边的转移,特殊的将起点设为一个必坏的车子,直接记忆化搜索就可以了。

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 6e5 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {
    e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int n, m, k;
double t, r;
struct Node {
    int v, w;
    bool operator<(Node t)const {
        return t.w < w;
    }
};
int a[19];
double p[19];
int dist[19][N];
void dijkstra(int st, int id) {
    priority_queue<Node> q;
    memset(dist[id], 0x3f, sizeof dist[id]);
    vector<bool> f(n + 1);
    q.push({st, 0});
    dist[id][st] = 0;
    while (q.size()) {
        auto t = q.top();
        q.pop();
        if (f[t.v]) continue ;
        f[t.v] = true;
        for (int i = h[t.v]; ~i; i = ne[i]) {
            int j = e[i];
            if (dist[id][j] > w[i] + t.w) {
                dist[id][j] = w[i] + t.w;
                q.push({j, dist[id][j]});
            }
        }
    }
}
double f[19][N];
double dfs(int u, int state) {
    if (f[u][state]) return f[u][state];
    double res = (1 - p[u]) * dist[u][n] / r + p[u] * dist[u][n] / t;
    for (int i = 0; i < k; i ++) {
        if (state >> i & 1) continue ;
        res = min(res, (1.0 - p[u]) * dist[u][n] / r + p[u] * (dist[u][a[i]] / t + dfs(i, (state | (1 << i)))));
    }
    return f[u][state] = res;
}
int main() {
    memset(h, -1, sizeof h);
    cin >> t >> r;
    cin >> n >> m;
    for (int i = 1; i <= m; i ++) {
        int x, y, z; cin >> x >> y >> z;
        add(x, y, z), add(y, x, z);
    }
    cin >> k;
    for (int i = 0; i < k; i ++) cin >> a[i] >> p[i], p[i] /= 100;

    a[k] = 1, p[k] = 1;
    for (int i = 0; i <= k; i ++) 
        dijkstra(a[i], i);
    if (dist[k][n] == INF) {    
        cout << -1 << '\n';
        return 0;
    }
    
    printf("%.10lf\n", dfs(k, 0));
    return 0;
}

拆方块

[Link](拆方块 - 题目 - Daimayuan Online Judge)

思路

  • d p dp dp

去模拟这个过程是很难的,整体不好搞我们可以看一下局部,对于每一列块能活到什么时候取决于,它左边活到的长度 + 1 +1 +1,它右边活到的长度 + 1 +1 +1,它本身的块数,三者取个 m i n min min,我们可以左右分别 d p dp dp一下,然后统计一下获得最久的那一列就是答案(因为每一列都从可以选择的情况抉择了所以是最优的)。

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 1e5 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {
    e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int n, m, k;
int a[N], f[N], g[N];
int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i ++) cin >> a[i];
    for (int i = 1; i <= n; i ++) f[i] = min(f[i - 1] + 1, a[i]);
    for (int i = n; i; i --) g[i] = min(g[i + 1] + 1, a[i]);
    int res = 0;
    for (int i = 1; i <= n; i ++) res = max(res, min(f[i], g[i]));

    cout << res << '\n';
    return 0;
}

RS485 MODBUS转PROFINET网关案例丨汇川变频器接入到1200 PROFINET 本案例介绍的是用北京小疆智控(北京)技术有限公司生产的GW-PN5003型MODBUS RTU转PROFINET网关将汇川变频器接入西门子PLC1200 PROFINET网络的使用方法。 阅读详情

相关推荐

2024年物联网嵌入式最新嵌入式期末大作业——家用智能晾衣杆,初面蚂蚁金服

在家用智能晾衣杆中,用户可以根据自身的需要,切换手动和自动两个模式。天气对应的接口对应心知天气的天气图,可以下载后:调整尺寸->调整透明度->用画图工具保存为单色位图->提取出点阵信息(如我用的zimoV2.2软件),将点阵信息,存到数组里,根据weather的信息,调用display.drawBitmap()方法就能打印出对应的天气了。该库依赖于,将他们导入后,设置屏幕的主从关系,片选信号和数据,时钟信号等引脚后,就设置好屏幕的驱动。

2401_85013604的博客 1247

代码源每日一题div2 特殊的正方形

输入n,输出n行n列的由+和.组成的正方形,其中最外面一圈全是+,第二圈全是.,...,对于第i圈,如果i是奇数,那么全是+,否则全是.。 输入格式 一行,一个整数n。 输出格式 n行,为满足题目要求的正方形。注意不要有行末空格。 样例输入 10 样例输出 ++++++++++ +........+ +.++++++.+ +.+....+.+ +.+.++.+.+ +.+.++.+.+ +.+....+.+ +.++++++.+ +........+ ++++++++++ 数据范围

听取WA声一片 352

TCMSP数据库+R语言实战:从网页爬虫到中药-靶点网络图的全流程解析

本文详细解析了如何使用R语言从TCMSP数据库抓取中药-靶点数据,并通过数据清洗、网络分析和可视化构建完整的中药作用机制研究流程。涵盖动态网页爬虫、ADME参数筛选、网络图构建及高级可视化技巧,为中医药现代化研究提供实用的生物信息学方法。

weixin_31304817的博客 337

代码源每日一题Div.1 (201-207)

仅仅五天,居然这么漫长…… ——《堀与宫村》堀京子

xhyu61的博客 700

CRMEB小程序订阅消息实战指南:PHP配置与疑难排查

本文提供CRMEB小程序订阅消息的完整实战指南,重点解析PHP环境下的配置流程与常见错误解决方法。文章从订阅消息的核心规则讲起,详细拆解了从微信后台获取模板到CRMEB后台完成字段映射的关键步骤,并提供了从用户授权、缓存清除到服务器日志检查的逐层排查方案,帮助开发者高效打通消息通道,避免常见配置陷阱。

weixin_29022115的博客 320

深度学习论文: Cultivated Land Extraction from High-Resolution Remote Sensing Image

深度学习论文: Cultivated Land Extraction from High-Resolution Remote Sensing Image The Winning Solution to the iFLYTEK Challenge 2021 Cultivated Land Extraction from High-Resolution Remote Sensing Image PDF: https://arxiv.org/pdf/2202.10974.pdf PyTorch代码: https:

mingo_敏 3480

Codeforces Round #207 (Div. 2)---C. Knight Tournament(set乱搞)

C. Knight Tournamenttime limit per test 3 seconds memory limit per test 256megabytes input standard input output standard outputHooray! Berl II, the king of Berland is making a knight tournament. T

Alex 968

C#操作MySQL从入门到精通(3)——新建数据库、新建表

我们要首先新建一个数据库,并且在数据库中新建一系列的表来管理数据库。

qq_34059233的博客 951

代码源每日一题div1 二分答案

Daimayuan Online Judge 思路:二分答案模板题 #include <bits/stdc++.h> using namespace std; #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); #define endl '\n'; typedef long long ll; typedef pair<int,int> PII; const int N=5e5+10,mod=1e9+7; ll

qq_53287227的博客 349

RT-DETR改进策略【RT-DETR和Mamba】| CVPR 2025:EfficientViM 压缩隐藏状态空间进行通道混合、单头设计减少内存操作,提升目标检测效率与精度

本文记录的是利用模块优化的目标检测网络模型。EfficientViM Block(基于隐藏状态混合器的状态空间对偶性模块) 的设计旨在,提升特征提取效率,同时兼顾全局依赖捕捉与局部细节保留。本文将深入研究的原理,并将其应用到中,通过重构特征提取流程、减少内存绑定操作、融合多阶段特征,增强模型在资源受限环境下的检测性能与速度。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image DehazingLE

Limiiiing的博客 916

防护装备穿戴检查:基于YOLOv8与UI界面的深度学习应用

通过结合YOLOv8模型与UI界面,本系统实现了防护装备穿戴检查的自动化。该系统能够快速识别工作人员是否正确佩戴了所需的防护装备,帮助提高安全管理水平。未来,随着技术的发展,防护装备穿戴检查系统将在更多领域得到应用,如工业现场、建筑工地等,实现更加精确和高效的实时监控。

YOLO 355

数据结构专题系列 基础篇-2 数论(上)

数据结构专题系列 基础篇-2 数论(上)

weixin_41801682的博客 1万+

码农新宠大对决:GitHub Copilot、通义灵码和CodeLlama谁主沉浮?

本文对三款主流AI编程工具GitHub Copilot、通义灵码和CodeLlama进行了全面对比分析。GitHub Copilot在多语言支持和代码质量上表现突出;通义灵码在中文理解和阿里云生态集成方面优势明显;CodeLlama则以开源可定制见长。文章从代码生成、理解能力、多语言支持、使用体验等维度展开评测,并结合实际案例说明不同开发者群体的适用选择。建议新手可优先考虑通义灵码,经验开发者适合GitHub Copilot,而有定制需求的企业团队则可选择CodeLlama。随着AI技术发展,这些工具将持续

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 675

代码源每日一题Div2

101 特殊的正方形 按照题意模拟即可,注意判断奇偶的情况下 #include<bits/stdc++.h> #define ll long long using namespace std; char mp[104][104]; void solve(){ int n; cin >> n; memset(mp,'.',sizeof mp); int res = n; int l = 1, r = n; int cnt = 1; while(l &

wxhinms的博客 1019

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

简单数论专场

A - The Super Powers UVA - 11752 题解:每个符合的结果的幂都不是素数 所以枚举每个数的非素数幂,注意ull 它输出格式为%lu #include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> #include<set>...

weixin_43918473的博客 452

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

代码源每日一题div1 序列操作

Daimayuan Online Judge 思路:离线+思维 用一个last[x]=ilast[x]=ilast[x]=i数组维护第iii次操作将a[x]=ya[x]=ya[x]=y 用一个b[i]b[i]b[i]数组维护第i次操作后操作2造成的此时a[i]a[i]a[i]的改变,可以从最后一次往前遍历,显然满足b[i]=max(b[i],b[i+1])b[i]=max(b[i],b[i+1])b[i]=max(b[i],b[i+1]) 最后第iii个数的值为:max(a[i],b[last[i]])ma

qq_53287227的博客 368

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

Mysssone的博客 218

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

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

wuqingyigexiaoba的博客 314

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

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序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的博客 590

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

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

2503_92261635的博客 20

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

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

2301_81429079的博客 750

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 370

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

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

2501_94316951的博客 171

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

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

m0_56226131的博客 409

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

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

weixin_44218929的博客 85

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

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 218
上一篇: 代码源每日一题 div1(101-109)
下一篇: 代码源每日一题 div1 (301-307)
枉玊
博客等级 码龄6年 73粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值