Codeforces Round 916(Div.3) A~G

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) 之前写了一篇关于C++调用海康相机SDK采集图像的文章,有很多人私下发送消息咨询了一些问题,由于工作繁忙,只答复了一部分问题,今天抽出时间从头梳理了一下大家提出的问题,把我能够回答的问题都解答一次。上一次的程序只是简单的实现了图像的采集,没有使用到线程,今天把程序重新做出调整,把线程和多态加进去。文章最后有项目的下载地址。 我使用的是QT Creator这个IDE,版本信息如下: 我把相机采集的图像转换为openC 阅读详情

A.Problemsolving Log(计数)

题意:

有262626个问题A∼ZA \sim ZA∼Z,分别需要尝试1∼261 \sim 261∼26次才能通过。

给出一个字符串,里面包含的每个字母代表着这道题目的一次尝试,问:总共通过了多少题目。

分析:

使用数组记录每个字母的出现次数,如果AAA出现了一次,BBB出现了两次,…,就代表该题目通过了,记录过题数量即可。

代码:

#include <bits/stdc++.h>

using namespace std;
const int N = 100005;

int vis[30];

void solve() {
    memset(vis, 0, sizeof (vis));
    int n;
    string s;
    cin >> n >> s;
    for (int i = 0; i < n; i++) {
        vis[s[i] - 'A']++;
    }
    int ans = 0;
    for (int i = 0; i <= 25; i++) {
        if (vis[i] > i) ans++;
    }
    cout << ans << endl;
}

int main() {
    int Case;
    cin >> Case;
    while (Case--) {
        solve();
    }
    return 0;
}

B.Preparing for the Contest(构造)

题意:

给出一个难度序列,序列中a[i]>a[i−1]a[i] > a[i - 1]a[i]>a[i−1]的个数为该序列的难度系数,求长度为nnn且难度系数为kkk的序列。

分析:

首先,让序列为增序,即1,2,...,n1, 2, ..., n1,2,...,n,然后,除最后kkk个元素外,将前面部分翻转,变为:n−k,n−k−1,...,1,n−k+1,...,nn - k, n - k - 1, ..., 1, n - k + 1, ..., nn−k,n−k−1,...,1,n−k+1,...,n。

此时,前面的n−k∼1n- k \sim 1n−k∼1均为降序,不会产生难度系数,后面的k+1k + 1k+1个元素(包含前面部分结尾的1)为升序,会产生kkk个难度系数,满足题目要求。

代码:

#include <bits/stdc++.h>

using namespace std;
const int N = 100005;

void solve() {
    int n, k;
    cin >> n >> k;
    for (int i = n - k; i >= 1; i--) {
        cout << i << ' ';
    }
    for (int i = n - k + 1; i <= n; i++) {
        cout << i << ' ';
    }
    cout << endl;
}

int main() {
    int Case;
    cin >> Case;
    while (Case--) {
        solve();
    }
    return 0;
}

C.Quests(枚举)

题意:

有nnn个关卡,你只能从前往后进行闯关(通过上一关才能进入下一关),第一次通过第iii个关卡时可以获得aia_iai​点积分,之后再次通过第iii个关卡时可以获得bib_ibi​点积分,问如果能闯关kkk次,最多能获得多少积分。

分析:

不难发现,最多只会在一个关卡进行多次通过,那么只需要枚举最后到达的关卡,并记录过程中遇到过的关卡的bib_ibi​中的最大值maxbimax_{b_{i}}maxbi​​,那么到达第iii关的最大积分为:a1+a2+...+ai+(k−i)×maxbi,i≤ka_1 + a_2 + ... + a_i + (k - i) \times max_{b_{i}},i \le ka1​+a2​+...+ai​+(k−i)×maxbi​​,i≤k。

代码:

#include <bits/stdc++.h>

using namespace std;
const int N = 2e5 + 5e2;

int a[N], b[N];

void solve() {
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    for (int i = 1; i <= n; i++) {
        cin >> b[i];
    }
    int ans = 0, tmp = 0, maxn = 0;
    for (int i = 1; i <= n; i++) {
        tmp += a[i];
        maxn = max(maxn, b[i]);
        if (k >= i) {
            ans = max(ans, tmp + max(0, k - i) * maxn);
        }
    }
    cout << ans << endl;
}

int main() {
    int Case;
    cin >> Case;
    while (Case--) {
        solve();
    }
    return 0;
}

D.Three Activities(枚举)

题意:

在nnn天里,每天有三种活动:

  • 滑雪

  • 看电影

  • 玩游戏

在第iii天,有aia_iai​人会参加活动111,有bib_ibi​人会参加活动222,有cic_ici​人会参加活动333。

每个活动只能进行一次,且每天只能完成一个活动,问最多能召集多少个朋友完成所有活动。

分析:

不难想到,每个活动只有人数最多的三天会被选择,仅记录每个活动人数最多的三天,枚举所有的方案,记录可行的方案中人数最大的即可。

代码:

#include <bits/stdc++.h>

using namespace std;
const int N = 2e5 + 5e2;

struct Node{
    int val, id;
    bool operator < (const Node &o) const  {
        return val > o.val;
    }
};

Node a[N], b[N], c[N];

void solve() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i].val;
        a[i].id = i;
    }
    for (int i = 1; i <= n; i++) {
        cin >> b[i].val;
        b[i].id = i;
    }
    for (int i = 1; i <= n; i++) {
        cin >> c[i].val;
        c[i].id = i;
    }
    sort(a + 1, a + n + 1);
    sort(b + 1, b + n + 1);
    sort(c + 1, c + n + 1);
    int ans = 0;
    for (int i = 1; i <= 3; i++) {
        for (int j = 1; j <= 3; j++) {
            for (int k = 1; k <= 3; k++) {
                if (a[i].id == b[j].id || b[j].id == c[k].id || a[i].id == c[k].id) continue;
                ans = max(ans, a[i].val + b[j].val + c[k].val);
            }
        }
    }
    cout << ans << endl;
}

int main() {
    int Case;
    cin >> Case;
    while (Case--) {
        solve();
    }
    return 0;
}

E.Game with Marbles(贪心)

题意:

两个人进行石子游戏,每个人均拥有nnn种不同的石子,且每种石子的数量不同(但两人的石子种类相同),当轮到某人操作时,他可以选择手上的一种石子,丢掉其中一颗石子,并让对手丢掉相同颜色的全部石子(只有对手手上还有这种颜色的石子时才能进行)。

游戏结束时,先手手上剩下的石子数量减去后手手上剩余的石子数量就是最后的得分。

先手希望结束时得分尽可能高,后手希望得分尽可能低,而两人都极为聪明,每次操作均会选择最优策略,问最后的得分是多少?

分析:

对于Easy Version,由于石子数量较小(n≤6)(n \le 6)(n≤6),那么可以对两人的操作进行模拟,来得到答案。

对于Hard Version,考虑贪心,通过模拟后可以发现,实际上每个人操作时,会选择剩下的石子中ai+bia_i + b_iai​+bi​最大的颜色iii进行操作,因为哪怕自己这种颜色的石子很少,但也可以消除对手最多的石子。

因此,使用结构体存储先后手的石子数量,对两者拥有的石子数量总和从大到小进行排序,然后从前往后模拟操作即可。

代码:

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
const int N = 2e5 + 5e2;

struct Node{
    int a, b;
    bool operator < (const Node &o) const  {
        return a + b > o.a + o.b;
    }
};

Node g[N];

void solve() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> g[i].a;
    }
    for (int i = 1; i <= n; i++) {
        cin >> g[i].b;
    }
    sort(g + 1, g + n + 1);
    LL ans = 0;
    for (int i = 1; i <= n; i++) {
        if (i & 1) {
            ans += g[i].a - 1;
        } else {
            ans -= g[i].b - 1;
        }
    }
    cout << ans << endl;
}

int main() {
    int Case;
    cin >> Case;
    while (Case--) {
        solve();
    }
    return 0;
}

F.Programming Competition(树形DP)

题意:

有一个公司需要选择若干个人两两组队参与比赛,且选择的两个人中不能存在上下级关系(直接和间接均不行),问:最多可以组成多少只队伍?

分析:

实际上公司的上下级关系就是一个树形的关系,对于上下级关系,只要两个节点不在同一棵子树上,那么可以任意进行组队。

因此,当某个节点的子树数量大于111时,使用sumsumsum表示所有子树节点之和,maxnmaxnmaxn表示最大子树中节点数量,maxcmaxcmaxc表示最大子树中已经匹配的队伍数,有以下两种情况:

  • 最大的子树中节点数量maxnmaxnmaxn减去以及可以完成匹配的人数后小于等于其他子树中的节点数量总和sum−maxnsum - maxnsum−maxn,即maxn−maxc×2≤sum−maxnmaxn - maxc \times 2 \le sum - maxnmaxn−maxc×2≤sum−maxn,此时能组成的队伍数为⌊sum2⌋\lfloor \frac{sum}{2} \rfloor⌊2sum​⌋

  • 否则,此时能组成的队伍数为已经匹配的人数加上其他子树中所有节点数量,即maxc+sum−maxnmaxc + sum - maxnmaxc+sum−maxn。

如果子树数量等于111,那么只能直接继承子树的状态。

代码:

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
const int N = 2e5 + 5e2;

vector<int> G[N];
int n, sz[N], dp[N];//节点总数,子树大小,子树能组成的队伍数

void dfs(int root) {
    sz[root] = 1;
    dp[root] = 0;
    int len = G[root].size();
    int maxn = 0, maxc = 0, sum = 0;
    for (int i = 0; i < len; i++) {
        int v = G[root][i];
        dfs(v);
        sz[root] += sz[v];
        dp[root] = max(dp[root], dp[v]);
        if (maxn < sz[v]) {
            maxn = sz[v];
            maxc = dp[v];
        }
        sum += sz[v];
    }
    if (len <= 1) return;
    if (sum - maxn >= maxn - maxc * 2) {
        dp[root] = sum / 2;
    } else {
        dp[root] = sum - maxn + maxc;
    }
}

void solve() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        G[i].clear();
    }
    for (int i = 2; i <= n; i++) {
        int u;
        cin >> u;
        G[u].push_back(i);
    }
    dfs(1);
    cout << dp[1] << endl;
}

int main() {
    int Case;
    cin >> Case;
    while (Case--) {
        solve();
    }
    return 0;
}

G.Light Bulbs(线段树优化建图+强连通分量)

题意:

本题两个版本不同之处在于数据范围。

有2n2n2n个灯泡排成一排。每个灯泡都有从111到nnn的颜色(每种颜色正好有两个灯泡)。

最初,所有的灯泡都是关掉的。选择一组灯泡SSS,按任意顺序执行任意次数以下操作:

  • 选择两个颜色相同的灯泡iii和jjj,且其中一个是亮着的,打开另一个灯泡;
  • 选择三个灯泡i,j,ki,j,ki,j,k,要求灯泡iii和kkk都是亮着且颜色相同,灯泡jjj在它们之间(即i<j<ki < j < ki<j<k),打开灯泡jjj。

题目希望选择一组灯泡SSS,通过执行上述操作,确保所有灯泡都是打开的。

计算两个数字:

  • 最初可以选择的最小灯泡数量,即一组灯泡SSS包含的最小数目。
  • 最小灯泡数量对应的的方案数(结果对998244353取模)。

分析:

对于简单版本,假设最坏情况下,整个区间都变成一个环。例如[1,2,1,2][1,2,1,2][1,2,1,2],点111可以到点222,点222可以到点111,构成环。如果是[1,2,2,1][1,2,2,1][1,2,2,1],点111可以到点222,但是点222不能到111。把环缩成点后就变成了经典的拓扑排序问题。最小数目就是这个拓扑排序入度为000的点,方案数就是入度为000的点相乘即可。

困难版本的思路如下:

首先可以发现同种颜色的点我们只会取一个,然后发现如果我们取了某种对应位置为[l,r][l,r][l,r]的点,那么我们同时也取了[l+1,r−1][l+1,r−1][l+1,r−1]之间的所有点。

如果取了颜色aaa后,颜色bbb也能自动被取,连一条从aaa指向bbb的边。

对这样的图跑强连通分量,只需要操作所有入度为000的点即可,假设一个入度为000的强连通分量里有xxx种颜色,那么有2x2x2x种取法,用乘法原理统计答案即可。

直接暴力连边复杂度O(n2)O(n^2)O(n2),这样只能做easyeasyeasy版本。

对于hardhardhard版本,使用线段树优化建图,用线段树实现对一个区间内的所有点连边,然后再跑强连通分量即可。但是此时需要操作就不一定是入度为000的强连通分量了,因为有可能入度为000的是线段树上的点组成的强连通分量。

此时可以按照拓扑序跑一遍DPDPDP,找到所有没有任何颜色进入(线段树上的点可以进入)的强连通分量再统计答案即可。时间复杂度为O(nlog⁡n)O(n \log n)O(nlogn),空间复杂度为O(n)O(n)O(n)。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN=4e5+5;
const int MOD=998244353;

struct S1{
    vector<vector<int>>g,scc;
    vector<int>dfn,low,stk,id;
    vector<bool>ins;
    int ts,n;

    S1(const vector<vector<int> > &g) : g(g){
        n = (int)g.size();
        dfn.assign(n, 0);
        low.assign(n, 0);
        id.assign(n, -1);
        ins.assign(n, false);
        stk.reserve(n);
        ts = 0;
        build();
    }

    void tarjan(int u){
        dfn[u] = low[u] = ++ts;
        stk.push_back(u);
        ins[u] = 1;
        for(auto j : g[u]){
            if (!dfn[j]){
                tarjan(j);
                low[u] = min(low[u], low[j]);
            }
            else if (ins[j]) 
                low[u] = min(low[u], dfn[j]);
        }
        if (dfn[u] == low[u]){
            int scc_cnt = scc.size();
            scc.push_back({});
            int y;
            do{
                y = stk.back();
                stk.pop_back();
                id[y] = scc_cnt;
                ins[y] = 0;
                scc.back().push_back(y);
            }while(y != u);
        }
    }

    void build(){
        for(int i = 0; i < n; i++){
            if (!dfn[i]){
                tarjan(i);
            }
        }
    }
};

vector<vector<int> > g;
int a[MAXN];
int n;
 
void build(int u, int l, int r){
    if (l == r){
        g[u].push_back(8 * n + a[r]);
        return;
    }
    int mid = (l + r) / 2;
    g[u].push_back(2 * u);
    g[u].push_back(2 * u + 1);
    build(2 * u, l, mid); build(2 * u + 1, mid + 1, r);
}
 
void modify(int u, int l, int r, int L, int R, int x){
    if (l > R || r < L) 
        return;
    if (l >= L && r <= R){
        g[x].push_back(u);
        return;
    }
    int mid = (l + r) / 2;
    modify(2 * u, l, mid, L, R, x);
    modify(2 * u + 1, mid + 1, r, L, R, x);
}

int main(){
    int T;
    cin >>T;
    while(T--){
        cin >> n;
        vector<array<int, 2> > pos(n + 1);
        for(int i = 1; i <= 2 * n; i++){
            cin >> a[i];
            if (pos[a[i]][0] == 0){
                pos[a[i]][0] = i;
            }
            else{
                pos[a[i]][1] = i;
            }
        }
        g.assign(9 * n + 1, {});
        build(1, 1, 2 * n);
        for(int i = 1; i <= n; i++){
            auto [l, r] = pos[i];
            if (l + 1 <= r - 1){
                modify(1, 1, 2 * n, l + 1, r - 1, 8 * n + i);
            }
        }
        S1 s1(g);
        const int m = s1.scc.size();
        vector<int> c(m);
        for(int i = 0; i < m; i++){
            int s = 0;
            for(auto x : s1.scc[i]){
                s += (x > 8 * n);
            }
            c[i] = s;
        }
        int cnt = 0,sum = 1;
        vector<int>bad(m);
        for(int i = m - 1; i >= 0; i--){
            if (!bad[i] && c[i] > 0){
                cnt += 1;
                sum = 2LL * sum * c[i] % MOD;
            }
            bad[i] |= (c[i] > 0);
            for(auto x : s1.scc[i]){
                for(auto j : g[x]){
                    if (s1.id[j] != i){
                        bad[s1.id[j]] |= bad[i];
                    }
                }
            }
        }
        cout<<cnt<<' '<<sum<<endl;
    }
    return 0;
}

学习交流

以下为学习交流QQ群,群号: 546235402,每周题解完成后都会转发到群中,大家可以加群一起交流做题思路,分享做题技巧,欢迎大家的加入。

微信小程序:errno: 1500104, errCode: 10008, errMsg: “writeBLECharacteristicValue:fail:system error, status 微信小程序errno: 1500104, errCode: 10008, errMsg: "writeBLECharacteristicValue:fail:system error, status: UNKNOWN (239)"微信小程序调用蓝牙API,wx.writeBLECharacteristicValue()报错,微信小程序蓝牙写入错误,在开发uniapp微信小程序蓝牙通信功能时报错,蓝牙开发设备控制核心api,微信小程序调用蓝牙API “wx.writeBLECharacteristicValu 阅读详情

相关推荐

MPU6050 vs BMX055 vs ICM20602:如何为你的项目选择最佳陀螺仪(附实测数据对比)

本文深度对比了MPU6050、BMX055和ICM20602三款主流六轴IMU传感器的核心性能。通过实测数据,分析了它们在精度、噪声、温漂、接口速度及资源占用上的差异,并提供了从项目需求出发的选型指南,帮助开发者根据预算、精度要求和处理器性能选择最合适的陀螺仪与加速度计组合。

h0i1j2k3l的博客 969

Codeforces Round 916 (Div. 3)A~E2

为了考虑到所有情况,我们可以遍历数组(在一次遍历当中即可解决,故无需担心考虑所有情况时间复杂度),来试验一次解锁当天,剩下的用来进行过去几天里b值最高的任务,更新最大值。在一次考试当中,题目难度为1~n,我们可以将其随意排序,如果当前题目难度大于上一个题目,主角会感到一次兴奋,问k次兴奋该怎么排列.完成任务可以获得经验,第i个的任务仅当1~i-1个的任务至少执行一次才可执行,初次执行该任务获得。经验,一个任务可以执行多次,如果只能完成k个任务,求经验最大值.,二者公式相同,收获价值相同,故可以按。

Enjoy10ve的博客 1756

Ribo-seq数据解析:从翻译效率计算到动态可视化分析

本文系统介绍了Ribo-seq(核糖体印迹测序)数据分析全流程,从核心的P-site定位、翻译效率计算,到差异翻译分析和动态可视化。重点阐述了如何利用Ribo-seq高分辨率数据揭示基因表达在翻译层面的精细调控,并提供了从数据处理到生物学解读的实用工具与避坑指南。

weixin_28559803的博客 421

Codeforces Round 916 (Div. 3)

思路:博弈,A和B的最终目的均为最大化自己剩余的弹珠以及最小化对方剩余的弹珠,对于某一种颜色的弹珠,在双方都至少有一颗的情况下,当轮到自己的回合时都是自己丢弃一颗弹珠,清空对方弹珠为最佳,而优先选择攻击的弹珠即为a+b当前数量最大颜色的弹珠,最小化对方留存弹珠,最大化自身留存弹珠。两人轮流,A先开始,轮到自己时选择一种颜色i,若两个玩家都至少有一个,那么自己丢弃一颗该颜色的弹珠,另一个玩家丢弃所有该颜色的弹珠,当没有一种颜色的弹珠双方均至少有一颗时游戏结束。现在最多完成k次任务,最多获得多少经验值。

maisui12138的博客 1380

YOLOv13改进:注意力机制 | 动态稀疏注意力的双层路由方法BiLevelRoutingAttention | CVPR2023

BiLevelRoutingAttention方法对小目标检测效果比较好。可能是因为BRA模块是基于稀疏采样而不是下采样,一来可以保留细粒度的细节信息,二来同样可以达到节省计算量的目的。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1435

华为OD机考双机位C卷 - 敌情监控 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 敌情监控 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 964

Codeforces Round 913(Div.3) A~F

补题

2301_81404586的博客 1153

在虚拟机中对阿克曼转向车进行导航及避障的仿真测试

一、    在我使用rosdep install teb_local_planner去安装teb_local_planner的时候,报错:Command ‘rosdep’ not found, but can be installed with:sudo apt install python3-rosdep2    我花大半个月好不容易建立起的一系列ROS环境,被python3-rosdep2这条万恶的语句连同ROS一起给我删了。。。悲伤来的那么猝不及防    随着ROS版本的迭代,相关资料很多都不再适用

慕羽★的博客 3806

Codeforces Round div 3 A-G 个人练习

个人练习记录

m0_73500785的博客 372

Matlab之App Designer 一键自动生成带有表格的报告

本文采用案例讲解的方式介绍了采用Matlab中的App Designer开发可视化GUI分析界面后,实现一键自动导出带有表格报告的方法和步骤。可以实现从报告编制等繁琐的工作中解脱出来。

m0_59012156的博客 355

基于STM32设计的水下水质检测装置(微信小程序)(205)

本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。

1251

Codeforces Round 916 (Div. 3) 前6题

a和b都有n种颜色不同的弹珠,每人轮流行动,每次行动可以选择一种颜色,将对方该种颜色的弹珠清0,自己该种颜色的弹珠-1,前提是两人都至少有一颗该种颜色的弹珠。模拟两人轮流取弹珠的过程,由于最终分数为a的弹珠数减b的弹珠数,所以a对最总分数的贡献为加上该种颜色弹珠可获得的·分数,而b对最终分数的共享为减去该种颜色弹珠可获得的分数。一共有n个任务,最多可以完成k个,每个任务有首次完成奖励和重复完成奖励,每个任务可以重复完成,只有做完前一天的任务才能做下一天的任务,求可获得的最大的奖励。E1为E2数据弱化版。

2203_75752922的博客 2028

LeRobot 入门教程(十一)π0(Pi0)π0.5(Pi0.5)训练、推理、部署

本文介绍了Physical Intelligence公司开发的π₀和π₀.₅系列通用机器人控制视觉-语言-动作模型。π₀作为首款基础模型,融合流匹配、跨实体训练等技术,支持50Hz高频控制。π₀.₅是其升级版,通过异构数据协同训练解决开放世界泛化问题,在Libero基准测试中表现优异。文章详细说明了两个模型的安装要求、使用方法、训练策略及关键参数配置,包括混合精度训练、梯度检查点等优化技术,为机器人在多样化场景中的语义理解和动作控制提供了完整解决方案。

2506_90492529的博客 5038

Codeforces Round 916

Codeforces Round 916

青少年趣味编程 1116

VC中sqlite的使用

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Codeforces Round 916 (Div. 3) C题 Quests

有 n 个任务,在完成 i 任务时,i 之前的所有任务都必须完成。同时,可以多次完成某个任务。总共可以做 k 次任务,第一次完成 i 任务的贡献为 ai​ ,后面完成 i 任务的贡献为 bi​ ,求最大贡献。这是一道贪心的题目,开始的时候我还使用动态规划去做这道题,发现不太适合,这时我有想起来这道题前两天刚做的。贪心(greedy)

2302_79545206的博客 1468

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Codeforces Round 916 (Div. 3)(A~D题解)

题意:题目给出两个数组,a数组为任务第一次完成加的经验,b数组为第2次或者以上完成这个任务所加的经验,并且第i个任务必须i-1个任务完成后才能解锁,一开始时,任务1是可以完成的,k是可以完成的任务次数,求最大经验。n的范围是1x10^5,所以不能暴力,但是我们需要找出的是最大值,那么我们只需要找到每个数字最大的三个数字的下标,再进行一个三重for循环即可。A问题要学1分钟,Z问题要学26分钟,按照这个规律,看字符串问题出现的次数,如果出现次数大于要学的时间,那么意味这解决了这个问题。

2301_80314483的博客 714

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Codeforces Round 916 (Div. 3)(A~F)

根据题目设置的游戏条件,每次一个人选择一个颜色的弹珠,然后将自己的该弹珠个数减一,并将对方的减为零,当有一方该颜色弹珠个数为零时不能选择改颜色。每个任务有两个经验值,第一个经验值是第一次完成任务时能获得的经验值,第二个经验值是之后重复完成时每次能获得的经验值。按照最优方式,玩家选择的颜色顺序是根据两玩家该颜色总和降序来选,因此我们按照总和最大对颜色进行排序,然后进行遍历。的数组,要求从每个数组中选择一个数,要求选择的三个整数下标互不相同且总和最大。个任务中第二个经验值最大的任务来做。

鱼香rose_的博客 1128

Codeforces Round 987

Codeforces Round 987

青少年趣味编程 1398

Codeforces Round 889

Codeforces Round 889

青少年趣味编程 647

Codeforces Round 916 (Div. 3)(A~E题解)

今天也是小小的vp了一下这场比赛,我对这场比赛的感觉就是比我之前做的都要简单,最简单的一次div3(个人感觉)话不多说来看这次比赛题解:这题就是说,对于每个问题,其解决时间是按照26个英文字母顺序来规定的解题时间,A题1分钟做完,Z题26分钟做完,然后给你一个字符串说明每分钟都在做哪道题,只要做这道题的时间大于等于解题时间,就说明把这道题做出来了然后我们就可以遍历一遍字符串统计每道题的做题时间,然后去和题目中解题时间比较,只要大于等于就说明解出来一道题。

2301_80475191的博客 874

Codeforces Round 983

Codeforces Round 983

青少年趣味编程 863

Codeforces Round 916 (Div. 3) E1. Game with Marbles(博弈论*1400)

然后我们使得这时候爱丽丝的操作为取回弹珠,即她可以选择一种颜色的弹珠,并且直接取回,鲍勃的操作为选择一种颜色的弹珠,并且进行保留,使得爱丽丝无法取回这个颜色的弹珠。这时候可以先假设鲍勃已经取走了爱丽丝的所有的颜色的弹珠,(并且以每个颜色一个弹珠的代价)。如果你直接想的话,你就会发现有很多做法可以选择,而你根本不知道应该选哪个。,因为她取回的时候会连带着鲍勃本身就有的取走(呼应本来的题目要求)。从大到小排序之后,两者都去选择更靠前的颜色i进行操作。更大的组合的话,就能够获得更多的收益。这时候每一项得分就是。

2302_79440616的博客 722

Codeforces Round 916 (Div. 3)补题

另外为了尽可能地减少递归,我们假设已经配对地点全在最大子树中,这样就可以减少最大子树的点数,因为只有最大的子树的点数可能超过总数的一半,所以不用担心最大子树的点数减掉已经配对的点后,变成不是最大的,反正剩下的点数也少于总点数的一半,并没有什么影响。题目大意:现在有n种求,对于A和B,她们手中每个球分别有a[i]和b[i]个,现在进行一个游戏,A先开始,选择一种球,将手中的这种球扔掉一个,同时B需要扔掉手中所有的此类球,最后求出所有种类球a[i]-b[i]的和。另外要注意,dfs的状态一定要清干净。

m0_74120503的博客 1082

Codeforces Round 972

Codeforces Round 972

青少年趣味编程 1053

Codeforces Round 936

Codeforces Round 936

青少年趣味编程 995

Codeforces Round 881-930

Codeforces Round 881-930(50题)

青少年趣味编程 3019
上一篇: Codeforces Round 915(Div.2) A~F
下一篇: AtCoder Beginner Contest 334 A~F
AC-Panda
博客等级 码龄5年 1736粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值