中国石油大学ACM俱乐部开放训练赛の七题菜鸡题解(Done)

你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。 为使得参加月赛的同学所获得的纪念品价值相对均衡,他们要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。第1行包含一个整数w(80 ≤ w ≤ 200),为每组纪念品价格之和的上限。第2行是一个整数n(1≤ n ≤ 30000),表示购来的纪念品的总件数。第3~n+2行每行包含一个正整数pi(5 ≤ pi ≤ w),表示所对应纪念品的价格。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。 阅读详情

目录

问题 A: sciorz画画

问题 B: 奎奎发红包

问题 C: 关于我转生变成史莱姆这档事

问题 D: 大数

问题 E: Ktree

问题 F: 求和

问题 G: 奎奎画画

问题 H: qiqi and sciorz

问题 I: 星区划分

问题 J: 加油2020

问题 K: 数学问题


问题 A: sciorz画画

一. 题目大意

求凸包最优三角抛分,三角权函数为 w(i, j, k) = a[i] * a[j] * a[k].

二. 分析:

裸题直接上

小吐槽:这 100 组数据是假的...

三. 代码实现:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int M = (int)1e2;
const ll inf = 0x3f3f3f3f3f3f3f3f;

int a[M + 5];
ll dp[M + 5][M + 5];

int main()
{
    int T;
    scanf("%d", &T);
    for(int ca = 1; ca <= T; ++ca)
    {
        int n;
        scanf("%d", &n);
        for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
        memset(dp, 0, sizeof(dp));
        for(int len = 3; len <= n; ++len)
        {
            for(int l = 1; l + len - 1 <= n; ++l)
            {
                int r = l + len - 1;
                for(int k = l + 1; k <= r - 1; ++k)
                {
                    dp[l][r] = max(dp[l][r], dp[l][k] + dp[k][r] + 1ll * a[l] * a[k] * a[r]);
                }
            }
        }
        printf("Case #%d: %lld\n", ca, dp[1][n]);
    }
    return 0;
}

问题 B: 奎奎发红包

一. 题目大意:

有 n 个人,每人有两个属性 v[i], t[i].

n 个人按照一定顺序前来,第 i 个人的花费为 v[s[i]] * (t[s[1]] + t[s[2]] + ... + t[s[i]]).

求 n 个人的最小花费.

二. 分析:

简单贪心,临项交换法即可证明正确性.

三. 代码实现:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int M = (int)1e5;
const ll inf = 0x3f3f3f3f3f3f3f3f;

struct node
{
    int v, t;
}s[M + 5];

bool cmp(node a, node b)
{
    return a.t * b.v < a.v * b.t;
}

int main()
{
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i)
    {
        scanf("%d %d", &s[i].v, &s[i].t);
    }
    sort(s + 1, s + n + 1, cmp);
    int t = 0;
    ll ans = 0;
    for(int i = 1; i <= n; ++i)
    {
        t += s[i].t;
        ans += 1ll * t * s[i].v;
    }
    printf("%lld\n", ans);
    return 0;
}

问题 C: 关于我转生变成史莱姆这档事

一. 题目大意:

一个沙雕要吃 s 坨屎,第一天任意吃但不能全吃完,第 i 天的食屎量必须是第 i - 1 天的 2~9 整数倍,最后一天需要恰好吃完.

求最少食屎天数.

二. 分析:

设第一天吃 x,第 i 天吃的为第 i - 1 的 a[i] 倍.

s = x + xa[1] + xa[1]a[2] + ...+xa[1]a[2]..a[n-1]

s=x(1+a[1]+a[1]a[2]+...+a[1]a[2]a[n-1])

s = x(1+a[1](1+a[2]+...+a[2]...a[n-1]))

暴搜就完事~

三.代码实现:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int inf = 0x3f3f3f3f;

int dfs(int s)
{
    if(s >= 2 && s <= 9)    return 1;
    int ans = inf;
    for(int i = 2; i <= 9; ++i)
    {
        if(s % i == 0)
        {
            ans = min(ans, dfs(s / i - 1) + 1);
        }
    }
    return ans;
}

int main()
{
    int s, ans = inf;
    scanf("%d", &s);
    for(int i = 1; 1ll * i * i <= s; ++i)
    {
        if(s % i == 0)
        {
            ans = min(ans, dfs(s / i - 1) + 1);
            if(i != s / i)  ans = min(ans, dfs(i - 1) + 1);
        }
    }
    printf("%d\n", ans == inf ? -1 : ans);
    return 0;
}

问题 D: 大数

一. 题目大意:

求字符串的最小循环节,不存在输出 -1.

二. 分析:

枚举长度 n 的约数,暴力 check 即可.

三. 代码实现:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int M = (int)1e6;
const ll inf = 0x3f3f3f3f3f3f3f3f;

int n;
string s;
vector <int> fac;

bool check(int l)
{
    for(int i = 0; i + l - 1 < n; i += l)
    {
        if(s.substr(0, l) != s.substr(i, l))    return 0;
    }
    return 1;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> s;
    n = s.size();
    for(int i = 1; 1ll * i * i <= n; ++i)
    {
        if(n % i == 0)
        {
            fac.push_back(i);
            if(i != n / i)  fac.push_back(n / i);
        }
    }
    sort(fac.begin(), fac.end());
    for(auto x: fac)
    {
        if(x != n && check(x))
        {
            cout << s.substr(0, x) << endl;
            return 0;
        }
    }
    cout << -1 << endl;
    return 0;
}

问题 E: Ktree

一. 题目大意:

给出一棵树以及所有边权的和,现让你给每条边分配权值,使得树的直径最小.

求树的最小直径.

二. 分析:

由于直径一定是连接两个叶子结点的路径,简单贪心可得最优策略为每个叶子结点平均分摊权值和.

三. 代码实现:

#include <bits/stdc++.h>
using namespace std;

const int M = (int)1e5;

int de[M + 5];

int main()
{
    int n, s;
    scanf("%d %d", &n, &s);
    for(int i = 0, u, v; i < n - 1; ++i)
    {
        scanf("%d %d", &u, &v);
        de[u]++, de[v]++;
    }
    int cnt = 0;
    for(int i = 1; i <= n; ++i) cnt += (de[i] == 1);
    printf("%.2f\n", 2.0 * s / cnt);
    return 0;
}

问题 F: 求和

一. 题目大意:

给出 n 阶矩阵 A,求 A + A^2 + ... + A^m

二. 分析:

构造如下矩阵

B = \begin{bmatrix} A& A \\ 0& E \end{bmatrix}

可得:B^m = \begin{bmatrix} A^m &A + A^2 + ... + A^m \\ 0&E \end{bmatrix}

三. 代码实现:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int mod = (int)1e9 + 7;

int n, m, t;
struct Matrix
{
    int mat[60][60];
}B;

Matrix mul(Matrix A, Matrix B)
{
    Matrix C;
    memset(C.mat, 0, sizeof(C.mat));
    for(int i = 0; i < t; ++i)
    {
        for(int j = 0; j < t; ++j)
        {
            for(int k = 0; k < t; ++k)
            {
                C.mat[i][j] = (C.mat[i][j] + 1ll * A.mat[i][k] * B.mat[k][j]) % mod;
            }
        }
    }
    return C;
}

Matrix quick(Matrix A, int b)
{
    Matrix Sum = A;
    --b;
    while(b)
    {
        if(b & 1)   Sum = mul(Sum, A);
        A = mul(A, A);
        b >>= 1;
    }
    return Sum;
}

int main()
{
    scanf("%d %d", &n, &m);
    t = n * 2;
    for(int i = 0; i < n; ++i)
    {
        for(int j = 0; j < n; ++j)
        {
            scanf("%d", &B.mat[i][j]);
            B.mat[i][j + n] = B.mat[i][j] %= mod;
            B.mat[i + n][j + n] = (i == j);
        }
    }
    B = quick(B, m);
    for(int i = 0; i < n; ++i)
    {
        for(int j = n; j < t; ++j)
            printf("%d%c", B.mat[i][j], j == t - 1 ? '\n' : ' ');
    }
    return 0;
}

问题 G: 奎奎画画

一. 题目大意:

n * m 的矩阵,初始格均为白色,q 次操作,每次操作选择平行于 x 轴或 y 轴的线段并染为黑色,求每次操作后的白色格连通块数.

二. 分析:

先进行 q 次操作,同时记录 (i, j) 点被覆盖的次数.

之后遍历矩阵,找到一个白色格便搜索其四周是否有白色格,并查集标记连通块.

之后依次撤销 q 次操作,操作与上面相似.

详见代码.

三. 代码实现:

#include <cstdio>
using namespace std;

const int M = (int)1e3;
const int N = (int)1e4;

int n, m, q, cnt;
int fa[M * M + 5];
int st[N + 5], top;
int c[M + 5][M + 5];
int x1[N + 5], y1[N + 5];
int x2[N + 5], y2[N + 5];
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};

int tofind(int x)
{
    if(x == fa[x])  return x;
    return fa[x] = tofind(fa[x]);
}

void work(int x, int y)
{
    int xx, yy, u, v;
    for(int i = 0; i < 4; ++i)
    {
        xx = x + dx[i];
        yy = y + dy[i];
        if(xx >= 1 && xx <= n && yy >= 1 && yy <= m && !c[xx][yy])
        {
            u = (x - 1) * m + y;
            v = (xx - 1) * m + yy;
            u = tofind(u), v = tofind(v);
            if(u != v)
            {
                --cnt;
                fa[u] = v;
            }
        }
    }
}

int main()
{
    scanf("%d %d %d", &n, &m, &q);
    for(int i = 1; i <= q; ++i)
    {
        scanf("%d %d %d %d", &x1[i], &y1[i], &x2[i], &y2[i]);
        for(int x = x1[i]; x <= x2[i]; ++x)
        {
            for(int y = y1[i]; y <= y2[i]; ++y)
            {
                c[x][y]++;
            }
        }
    }
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= m; ++j)
        {
            fa[(i - 1) * m + j] = (i - 1) * m + j;
        }
    }
    for(int i = 1; i <= n; ++i)
    {
        for(int j = 1; j <= m; ++j)
        {
            if(!c[i][j])
            {
                ++cnt;
                work(i, j);
            }
        }
    }
    for(int i = q; i >= 1; --i)
    {
        st[++top] = cnt;
        for(int x = x1[i]; x <= x2[i]; ++x)
        {
            for(int y = y1[i]; y <= y2[i]; ++y)
            {
                --c[x][y];
            }
        }
        for(int x = x1[i]; x <= x2[i]; ++x)
        {
            for(int y = y1[i]; y <= y2[i]; ++y)
            {
                if(!c[x][y])
                {
                    ++cnt;
                    work(x, y);
                }
            }
        }
    }
    while(top)  printf("%d\n", st[top--]);
    return 0;
}

问题 H: qiqi and sciorz

一. 题目大意:

K 倍博弈.

二. 分析(照抄题解):

三. 代码实现

#include <bits/stdc++.h>
using namespace std;

const int M = (int)1e5;

int a[M + 5];
int b[M + 5];

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int n, k;
        scanf("%d %d", &n, &k);
        int i = 0, j = 0;
        a[i] = b[j] = 1;
        while(a[i] < n)
        {
            ++i;
            a[i] = b[i - 1] + 1;
            while(k * a[j + 1] < a[i])  ++j;
            if(k * a[j] < a[i]) b[i] = a[i] + b[j];
            else                b[i] = a[i];
        }
        if(a[i] == n)
        {
            printf("qiqi lose\n");
            continue;
        }
        int ans;
        while(n)
        {
            if(n >= a[i])
            {
                n -= a[i];
                ans = a[i];
            }
            --i;
        }
        printf("%d\n", ans);
    }
    return 0;
}

问题 I: 星区划分

一. 题目大意:

三维坐标中给出 n 个点,每个点有权值 v.

定义两个点为同一系当且仅当两个点满足上下左右前后之一相邻 且 权值差的绝对值不超过 m.

关系具有传递性,求共有多少个系.

二. 分析:

N^2 枚举 + 并查集

三. 代码实现:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int M = (int)1e3;
const ll inf = 0x3f3f3f3f3f3f3f3f;

int x[M + 5];
int y[M + 5];
int z[M + 5];
int v[M + 5];
int fa[M + 5];

ll dist(int i, int j)
{
    ll dis = 0;
    dis += (ll)abs(x[i] - x[j]);
    dis += (ll)abs(y[i] - y[j]);
    dis += (ll)abs(z[i] - z[j]);
    return dis;
}

int cal(int i, int j)
{
    return (int)abs(v[i] - v[j]);
}

int tofind(int x)
{
    if(x == fa[x])  return x;
    return fa[x] = tofind(fa[x]);
}

int main()
{
    int n, m;
    scanf("%d %d", &n, &m);
    for(int i = 1; i <= n; ++i)
    {
        fa[i] = i;
        scanf("%d %d %d %d", &x[i], &y[i], &z[i], &v[i]);
    }
    for(int i = 1; i <= n; ++i)
    {
        for(int j = i + 1; j <= n; ++j)
        {
            if(dist(i, j) <= 1 && cal(i, j) <= m)
            {
                int u = tofind(i);
                int v = tofind(j);
                if(u != v)
                {
                    fa[u] = v;
                }
            }
        }
    }
    int cnt = 0;
    for(int i = 1; i <= n; ++i) cnt += (fa[i] == i);
    printf("%d\n", cnt);
    return 0;
}

问题 J: 加油2020

一. 题目大意:

二. 分析:

三. 代码实现:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int M = (int)1e3;
const int N = (int)2019;

int n; ll p;

bool is_prime[N + 5];
int cnt, prime[N + 5];

int tot;
struct node
{
    int p, c;
}fac[M + 5];
ll f[M + 5];

ll g[M + 5];

void get_prime()
{
    memset(is_prime, 1, sizeof(is_prime));
    is_prime[0] = is_prime[1] = 0;
    for(int i = 2; i <= N; ++i)
    {
        if(is_prime[i]) prime[++cnt] = i;
        for(int j = 1; j <= cnt && i * prime[j] <= N; ++j)
        {
            is_prime[i * prime[j]] = 0;
            if(i % prime[j] == 0)   break;
        }
    }
}

ll mul(ll a, ll b)
{
    ll sum = 0;
    while(b)
    {
        if(b & 1)   sum = (sum + a) % p;
        a = (a + a) % p;
        b >>= 1;
    }
    return sum;
}

void get_fac()
{
    for(int i = 1; i <= cnt && prime[i] <= N; ++i)
    {
        int cnt = 0;
        int p = prime[i];
        while(p <= N)
        {
            cnt += N / p;
            if(1ll * p * prime[i] > N)  break;
            p *= prime[i];
        }
        if(cnt) fac[++tot].p = prime[i], fac[tot].c = cnt;
    }
}

void get_f()
{
    get_prime();
    get_fac();
    for(int i = 1; i <= n; ++i)
    {
        f[i] = 1;
        for(int j = 1; j <= tot; ++j)
        {
            f[i] = mul(f[i], i * fac[j].c + 1);
        }
    }
}

ll quick(ll a, ll b)
{
    ll sum = 1;
    while(b)
    {
        if(b & 1)   sum = mul(sum, a);
        a = mul(a, a);
        b >>= 1;
    }
    return sum;
}

ll inv(int a)
{
    return quick(a, p - 2);
}

ll get_sum(ll a, int b)
{
    return mul(a, inv(b));
}

void get_g()
{
    ll a = 673, b = 3;
    for(int i = 1; i <= n; ++i)
    {
        a = mul(a, 673), b = mul(b, 3);
        g[i] = mul(get_sum(a - 1, 673 - 1), get_sum(b - 1, 3 - 1));
    }
}

int main()
{
    scanf("%d %lld", &n, &p);
    get_f();
    get_g();
    ll ans = 0;
    for(int i = 1; i <= n; ++i) ans = (ans + mul(f[i], g[i])) % p;
    printf("%lld\n", ans);
    return 0;
}

问题 K: 数学问题

一. 题目大意:

给一个整数 g,接下来 T 组询问,每组给出 n 和 m.

求有多少个 (i, j) 对,使得 g 能整除 C_{\;j}^{\; i},其中0 ≤ i ≤ n,0 ≤ j ≤ min(i,m).

二. 分析:

O(2000 * 2000)预处理出所有组合数及其前缀对和,O(1)查询.

三. 代码实现:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int M = (int)2e3;
const int mod = (int)1e9 + 7;

int T, g;
int c[M + 5][M + 5];
int s[M + 5][M + 5];

void init()
{
    for(int i = 1; i <= M + 1; ++i)
    {
        c[i][1] = 1 % g;
        for(int j = 2; j <= i; ++j)
        {
            c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % g;
        }
    }
    for(int i = 1; i <= M + 1; ++i)
    {
        for(int j = 1; j <= i; ++j)
        {
            c[i][j] = !c[i][j];
        }
    }
    for(int i = 1; i <= M + 1; ++i)
    {
        for(int j = 1; j <= M + 1; ++j)
        {
            s[i][j] = s[i][j - 1] + s[i - 1][j] - s[i - 1][j - 1] + c[i][j];
        }
    }
}

int main()
{
    scanf("%d %d", &T, &g);
    init();
    while(T--)
    {
        int n, m;
        scanf("%d %d", &n, &m);
        printf("%d\n", s[n + 1][m + 1]);
    }
    return 0;
}

 

2021年J题:基于STM32F103的周期信号波形识别与参数测量系统设计(立创EDA+SZPT_ZXL) 本文详细复盘了2021年全国大学生电子设计竞赛J题获奖项目,手把手教你如何基于STM32F103微控制器设计并实现周期信号波形识别与参数测量系统。文章深入剖析了硬件电路设计(包括程控放大、工作点抬升与滞回比较器)与核心软件算法(如动态采样、FFT频谱分析与波形识别逻辑),并分享了DMA传输、FFT库使用等实战要点与避坑指南,为嵌入式信号处理与电赛备赛提供了宝贵经验。 阅读详情

相关推荐

告别硬编码!用Aviator 5.3.3实现动态规则引擎,Spring Boot项目实战教程

本文详细介绍了如何使用Aviator 5.3.3在Spring Boot项目中实现动态规则引擎,告别硬编码。通过Maven依赖集成、规则模型设计、规则执行引擎实现及电商促销系统实战案例,展示了Aviator在动态规则配置中的高效应用,提升业务灵活性和开发效率。

weixin_30329623的博客 446

中国石油大oj 1368: 最大的数

题目链接可能是几年被石油大折磨的缘故,来刷刷题,遇到了一个看起来很少人过的题(3个人),然后尝试了一下。题意很简单,给你nnn个数,在n−1n-1n−1个空隙里选择加号和乘号,可以形成括号,然后使得结果最大。 首先一看,妥妥的思维题,然后我刚开始想了一个dp的思路,首先我们想一个简单的O(n2)O(n^2)O(n2)dp , 首先我们可以选择连续是一段加上,所以我们得到一个方程式。f[i]=max(f[j]∗(s[i]−s[j−1]))f[i] = max(f[j] * (s[i] - s[j - 1]))

qq_52358098的博客 526

SAP 财务接口开发:完全清账 vs 标准过账的 CO-PA(获利能力字段) 赋值全解析(含设计哲学)

用于完全清账场景:用于标准凭证过账/部分清账两者对 CO-PA 数据的传递方式截然不同。本文不仅提供完整的代码实现,更深入解析为什么 SAP 要这样设计——了解设计哲学,才能灵活应对各类需求。完全清账→ 调用,必须在T_FTPOST中传递,其他特征用BSEG-RKE_前缀。标准过账/部分清账→ 调用,在CRITERIA表中传递特征,字段名直接用WERKSARTNR等。SAP 的设计智慧面向不同场景,采用不同机制,各司其职。通过接口抽象,将复杂的 CO-PA 配置逻辑封装在内部,对外提供简洁的调用方式。

Pegasus666的博客 327

中国石油大学ACM俱乐部开放训练赛

文章目录中国石油大学ACM俱乐部开放训练赛A. sciorz画画(凸多边形最优三角型剖分,区间DP)B. 奎奎发红包(贪心)C. 关于我转生变成史莱姆这档事(DFS)F. 求和(矩阵构造+矩阵快速幂)K. 数学问题(组合数预处理+二维前缀和) 中国石油大学ACM俱乐部开放训练赛 A. sciorz画画(凸多边形最优三角型剖分,区间DP) 题目 多边形的每个顶点都有一个权值a[i],要用n-3条不相交的线将这个n边形分割成n-2个三角形,每个三角形的价值等于三个顶点权值的乘积。 问怎么分隔才能使得n-2

SHUlpt的博客 584

从零到一:ASTER L2数据获取的实战避坑指南

本文提供了一份详细的ASTER L2数据获取实战指南,涵盖账号注册、环境配置、数据检索、下载故障排除及后处理等关键步骤。特别针对NASA EarthData平台的隐形门槛和常见陷阱,给出了实用解决方案,帮助科研新手高效获取地表温度数据,适用于环境监测和城市热岛效应分析等领域。

weixin_29061425的博客 518

【技术纵览】行为识别前沿模型演进:从CNN到多模态大模型

本文全面解析了行为识别技术从CNN到多模态大模型的演进历程,重点介绍了SlowFast、TimeSformer、VideoMAE和InternVideo等SOTA模型的核心创新与应用实践。通过对比分析各代模型在Kinetics-400等数据集上的表现,揭示了自监督学习和多模态融合如何推动行为识别准确率突破85%,并探讨了工业部署中的技术选型策略与优化方向。

weixin_29169505的博客 153

2021第7届中国大学生程序设计竞赛CCPC桂林站, 签到题5题

A Hero Named Magnus Input file: standard input Output file: standard output Time limit: 1 second Memory limit: 512 megabytes Dota 2 is a multiplayer online battle arena (MOBA) video game developed and published by Valve. Dota 2 is played in matches between

小哈里的博客 4291

ESP32+MAX7219二进制时钟设计与嵌入式时间映射实践

二进制时钟是嵌入式系统中数据表示与物理呈现深度耦合的典型范例,其核心在于将时间语义(年月日时分秒)解构为比特位,并通过LED点阵的空间权重布局实现直观识别。该设计依托RTC模块提供时间基准,依赖SPI协议完成微控制器与专用驱动芯片(如MAX7219)的可靠通信,涉及寄存器级配置、位图坐标变换、软硬件时序对齐等关键原理。技术价值体现在低资源占用下的高可读性人机交互,适用于教学演示、极客项目及嵌入式UI原型开发。本文聚焦ESP32平台在MicroPython环境下,结合MAX7219驱动8×8点阵实现高可靠性二

weixin_42160645的博客 301

贪心算法4:纪念品分组

几个贪心的例子: 1. 最优装载问题: 给n个物体,第i个物体重量为wi,选择尽量多的物体,使得总重量不超过C。 贪心策略:将物体的重量从小到大排序,每次选择最轻的物体。 https://blog.youkuaiyun.com/yanyanwenmeng/article/details/83005293 2. 部分背包问题: 有n个物体,第i个物体的重量为wi,价值为Vi,在总重量不超过C的情...

yanyanwenmeng的博客 1348

通达信量化打板选股指标公式源码副图

X_2:=3*LOW;X_13:=4;X_14:=3;X_15:=2;X_16:=1;

gpzb7的博客 4482

一文读懂 SAP ICF Services:从 SICF 激活到 ABAP OData V2/V4 安全与实战

本文系统化介绍了ABAP系统中ICF服务的关键概念及实践要点。主要内容包括:ICF服务的核心安全机制,需显式激活才能响应HTTP请求;在SICF中正确激活服务的操作步骤;OData V2/V4服务所需的不同ICF节点配置,如V4统一入口节点/sap/opu/odata4;典型问题如default_host未激活会导致HOST_INACTIVE错误;安全实践包括CSRF防护机制和权限对象(S_ICF_ADM)配置;以及实际案例分析和常见ICF服务节点的功能说明。文章为ABAP开发者与运维人员提供了ICF服务管

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 469

2020中国石油大学ACM俱乐部开放训练赛

首先,感谢中国石油大学的出题组,题的质量很高,很适合刚入门但有一定提高的ACMer。传送门 本题解顺序由易到难(个人主观因素),共12道题,但是由于本蒟蒻水平优先,暂时做了7道。 问题 D: 大数 题解:寻找最小循环子序列,利用kmp中的next数组进行计算。 lenlenlen modmodmod (len−next[len])=0(len-next[len])=0(len−next[len]...

812

让 RAP 弹窗参数真正变成必填:Excel Upload Action 的两种实现路径

摘要 在RAP应用中,action弹窗参数经常缺乏必填校验,导致用户体验差。本文提出两种解决方案:1)在action实现中手动校验,简单但交互不流畅;2)通过root abstract entity和abstract BDEF建模,利用field(mandatory)实现框架级校验,推荐此长期方案。后者将约束集中到模型层,使UI与执行期校验一致,特别适合ABAP Cloud环境。以Excel导入为例,强制填写备注和明确选择试运行,可避免审计问题,提升系统可靠性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 197

中国石油大学ACM俱乐部开放训练赛 问题 H: qiqi and sciorz K倍博弈:

一天,qiqi和sciorz很无聊,他们又玩起来更无聊的取石子游戏,游戏规则是这样的: 有一堆n个石子,qiqi先取,每次最少取一个,第一次取的时候最多取n-1个,之后每次不能超过上一次的k倍,取得最后一个石子的为胜利,也就是说不能操作的为败. 然而sciorz早已洞穿了一切,他已经知道了谁会胜利,并且他急着去聊妹子,于是他开始催促qiqi快点开始,但是qiqi并不会玩,你能帮帮他吗? 输入 一行...

_Griefs 290

计算机控制技术及应用

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

中国石油大学ACM俱乐部开放训练赛 问题D:大数【KMP】

题目描述 小七是一个很可爱很努力的女孩子。她对大数的运算非常感兴趣,在学习了几天之后,终于精通了大数的加减乘除。但是自从她学会了 JAVA ,她觉得大数实在是太简单太无聊了,因为运用 JAVA 中 BigInteger 大整数类,可以轻松实现大数的加减乘除。某一天她突然发现,很多大数的题目的数据都有规律。这些数都是由比他小的某个数重复构成,比如说 121212 由 12重复构成 ,233233 ...

Lionel的博客 308

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

中国石油大学ACM俱乐部开放训练赛 问题 F: 求和 等比矩阵求和

等比数列是指从第二项起,每一项与它的前一项的比值等于同一个常数的一种数列。对于一个等比数列an=a1 * qn-1,它的前n项的和Sn=a1 * (1-qn)/(1-q)(q≠1)。现在已知A为n*n的矩阵,S=A+A2+A3+…+Am,你能否正确求出S,并且输出S中的每一个元素对1000000007取模后的值。 输入 输入包括n+1行,第一行包括两个正整数n, m,分别代表矩阵A的大小和S中的项...

_Griefs 315

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

中国石油大学ACM俱乐部开放训练赛 问题B:奎奎发红包【贪心】

题目描述 情人节又到了,又到了一年一度发红包的时间。经大家研究决定,今年让奎奎自愿发红包。 俱乐部有n个人(0<n<100000),每个人都有一个单身值v[i]与亲密度t[i](0≤v[i]≤10000,0≤t[i]≤10000),单身值越大的人,在情人节的时候就越羡慕奎奎,奎奎就需要给他更大的红包来安慰他。 由于一个寒假没有见到奎奎,领红包的时候大家都想跟奎奎py,花费时间t[i]...

Lionel的博客 308

中国石油大学ACM俱乐部开放训练赛 问题 E: Ktree 树的直径

题目描述 炼金术师灵岩在与巫师Slanely争夺馅饼的过程中处于劣势,于是灵岩召唤出了K树一起争夺馅饼。K树是一棵权值和为s但权值分配方式未定的树。Slanely偷偷施展法术,使K树的直径尽可能小。现在灵岩想知道召唤出的K树直径为多少。 输入 第一行给出两个整数n和s ,n,s<= 100000, n为节点数, s为树的总长度。 接下来,每行两个整数u,v,表示节点u和v之间有一条边相连。 ...

_Griefs 226

中国石油大学ACM俱乐部开放训练赛 问题 A: sciorz画画 区间dp

题目描述 众所周知,sciorz会画画。某天,sciorz画了一个凸多边形,这个多边形的每个顶点都有一个权值a[i]。sciorz觉得这个凸多边形不够美丽,于是他决定在n个点之间连线,最终用n-3条不相交的线将这个凸n边形分割成n-2个三角形。sciorz认为,一个三角形的美丽值是三个顶点权值的乘积,凸多边形的美丽值是其内部三角形的美丽值的和。sciorz想找到一种分割方案,使得这个凸多边形的美丽...

_Griefs 220

中国石油大学ACM俱乐部开放训练赛 问题 G: 奎奎画画 并查集 + 逆向思考

“为你写诗,为你静止,为你做不可能的事”,爱情是一种怪事,它让奎奎开始学习画画。奎奎认为一张画的艺术价值等于画上的白色联通块个数(当一个格子和它上下左右四个方向上的某个相邻格子颜色相同,则认为它们属于同一个联通块),奎奎还认为他作画的艺术价值和妹子对他的好感度紧密相关,因此奎奎非常在意每一时刻他的画的艺术价值。 为了简化题目,奎奎在一张n行m列的白色矩形格子画布上作画,他一共画了q笔,每一笔都是从...

_Griefs 218

中国石油大学ACM俱乐部开放训练赛---问题 B: 奎奎发红包(贪心)

问题 B: 奎奎发红包 时间限制: 1 Sec内存限制: 128 MB 提交: 2489解决: 390 [状态] [提交] [命题人:外部导入] 题目描述 情人节又到了,又到了一年一度发红包的时间。经大家研究决定,今年让奎奎自愿发红包。 俱乐部有n个人(0<n<100000),每个人都有一个单身值v[i]与亲密度t[i](0≤v[i]≤10000,0≤t[i]≤10000...

。 374

中国石油大学ACM俱乐部开放训练赛 问题 C: 关于我转生变成史莱姆这档事 找规律 dfs

题目描述 关于我转生变成史莱姆这档事这部番剧中,上班族的三上悟因为某个事件而作为史莱姆在异世界转生了。在转生时得到了“大贤者”和“捕食者”这两个独特技能。虽然身为史莱姆,但也想和其他种族建立起友好关系。魔素是异世界里面魔物含有的魔力精华,捕食者这个技能就是吞噬魔素,捕食者的技能要求非常苛刻,如果你第一天吞噬了b魔素,那么你第二天可以吞噬第一天的2 ~ 9倍(必须是其中一个整数),也就是2b ~ 9...

_Griefs 341

中国石油大学ACM俱乐部开放训练赛---问题 K: 数学问题(预处理 + 二维前缀和)

问题 K: 数学问题 时间限制: 1 Sec内存限制: 128 MB 提交: 381解决: 24 [状态] [提交] [命题人:外部导入] 题目描述 我们高中曾经学过何为组合数。 那么,给出整数n,m,g,聪明的你能否求出有多少整数对(i,j),满足g整除吗?(其中0≤i≤n,0≤j≤min(i,m))。 (提示:n!=1×2×⋯×n;特别地,0!=1。) 输入 第一行一个整数T...

。 326

中国石油大学ACM俱乐部开放训练赛 C.关于我转生变成史莱姆这档事(DFS暴搜)

基础算法-DFS 关于我转生变成史莱姆这档事(DFS暴搜) 题目: 史莱姆要吃掉总量为S的魔素,并且每一天吃掉的魔素都要为前一天的2~9倍(整数倍) 求最短的天数并且要恰好吃完所有的魔素 输入: 571 输出: 5 将题目进行用表达式表达: 因此可以进行暴搜,将括号一层一层拆开,只要每一层都能满足整除关系即可。 如:先对sss进行因数分解,得到a1a_1a1​的值,然后将...

SHUlpt的博客 312

中国石油大学ACM俱乐部开放训练赛---问题A: sciorz画画(凸多边形最优三角剖分)

问题 A: sciorz画画 时间限制: 1 Sec内存限制: 128 MB 提交: 845解决: 159 [状态] [提交] [命题人:外部导入] 题目描述 众所周知,sciorz会画画。某天,sciorz画了一个凸多边形,这个多边形的每个顶点都有一个权值a[i]。sciorz觉得这个凸多边形不够美丽,于是他决定在n个点之间连线,最终用n-3条不相交的线将这个凸n边形分割成n-2个...

。 326

中国石油大学 2018年ACM俱乐部个人训练赛第十八场 B题

链接: http://exam.upc.edu.cn/problem.php?id=5842 题意: 一开始题意就理解错了,分析后可以发现可以把每i,k+i,2*k+i(i:1~~n)个下标分为一组,这一组内可以两两计入最终的所求最大值里,如果这一组内的数的个数是偶数,那么最终都可以计入最终要的结果里,如果是奇数,那么就要有一个不能计入,所以找最小的那个,然后,对每一组都进行这样的查找,...

wuxiaowu547的博客 931
上一篇: 304. 诗人小G(算法竞赛进阶指南,一维线型 DP 的四边形不等式优化)
下一篇: A decorative fence (POJ - 1037,计数类 DP)
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值