Codeforces Round #674 (Div. 3)A-F题解

别再买模块了!手把手教你用FT232RL-REEL芯片,从零设计一个USB转串口电路板 本文详细介绍了如何使用FT232RL-REEL芯片从零设计USB转串口电路板,涵盖核心器件选型、原理图设计、PCB布局布线及焊接调试等关键步骤。通过实战案例和性能对比,展示自制电路板在成本、性能和可靠性上的优势,特别适合硬件爱好者和工程师参考。 阅读详情

Codeforces Round #674 (Div. 3)A-F题解

比赛链接:https://codeforces.com/contest/1426

A题
水题不写题解

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int32_t main()
{
    IOS;
    int t;
    cin>>t;
    while(t--)
    {
        int n,x;
        cin>>n>>x;
        if(n<3) cout<<1<<endl;
        else cout<<(n-2)/x+((n-2)%x?1:0)+1<<endl;
    }
}

B题
简单构造

题意为给定n个2 ×\times× 2的矩阵,你可以使用任意次这些矩阵,要求拼出一个m ×\times× m的按照主对角线对称的矩阵。询问是否可以构造。

根据矩阵是否在主对角线上,我们可以注意到在对角线上的2 ×\times× 2 矩阵也同时需要按照自己的主对角线对称,而不主对角线上的矩阵,两两之间需要互相对称,我们不难发现如果有满足主对角线上矩阵条件的2 ×\times× 2 矩阵,那我们把这些矩阵直接铺满非对角线的部分也是满足要求的。

因此直接判断给的2 ×\times× 2 矩阵中是否存在自身就是个关于主对角线对称的矩阵即可,同时m需要满足是一个偶数。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int num[107][2][2];

int32_t main()
{
    IOS;
    int t;
    cin>>t;
    while(t--)
    {
        int n,m;
        cin>>n>>m;
        bool flag=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<2;j++)
                for(int k=0;k<2;k++)
                    cin>>num[i][j][k];
            if(num[i][0][1]==num[i][1][0]) flag=1;
        }
        if(m%2==0&&flag) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
}

C题
简单构造,暴力或简单结论

题意为一开始的时候数列只有一个数字1,每次操作你可以对数列中的一个数字加1,或者复制某一个数字到数列末尾,问你最少需要多少次操作可以使得这个数列中所有数的值加起来不小于n。

我们注意到每次操作,
如果选择值+1的话只会对整体产生+1的影响,但是这个+1后的值会增加复制操作可增加的最大值。
而复制某一个值会增加一个当前最大的数的值,但是不会对后续操作可增加的最大值产生影响。

我们直接贪心选择先不断对第一个数+1,+1到合适大小后不断复制这个值即可。
假设我们先+1到值为i,那么总的操作次数分为两个部分,第一个部分是+1的次数为i-1,第二个部分是复制数值i的次数,为n/i-1+n%i?1:0。
推到这里之后直接暴力for sqrt(n)已经可以过题。
但是还可以简单地再深入一下,我们对i增加1,会对第一部分的操作次数i-1产生+1的影响,那么在第二部分的n/i-1+n%i?1:0的部分至少要减去1,我们对i的+1操作才是正面的。写过《算竞》上余数之和这个例题可能会比较敏感,或者自己稿纸上写一下也能发现这个规律,此时i的值取sqrt(n)就是最优。当i>=sqrt(n)时,当i变化时,n/i的步长变化不可能大于1,与i<sqrt(n)的情况反过来对应。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int32_t main()
{
    IOS;
    int t;
    cin>>t;
    while(t--)
    {
        ll n;
        cin>>n;
        ll temp=sqrt(n);
        cout<<temp-1+n/temp-1+(n%temp?1:0)<<endl;
    }
}

D题
贪心,构造

题意为给定一个数列,不包含0,现在问你最少需要往这个数列中插入几个数字,使得这个数列不存在某个连续的区间的数值和为0。

这里直接采取贪心的策略就是了,从左往右扫过去,对于第一段出现的和为0的区间,我们必定要在中间插入一个数字,可以直接贪心在最右边的一个元素的左侧插入一个“无穷大”的值,这样的话,这个无穷大值左侧的部分都不会和右侧的部分加起来等于0了。

这里区间为0可以用map记录前缀和的出现情况来处理,每次出现某个区间和为0后,插入次数+1并把map清零,记录当前位置的值到map里。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

int32_t main()
{
    IOS;
    ll n,sum=0,ans=0;
    cin>>n;
    map<ll,bool>M;//M[x]记录前缀合x是否在前面出现过,如果当前前缀和为x,那么在当前位置到之前记录x的位置之间的数加起来为0
    M[0]=1;//0要初始化为出现过,意思为开头到目前为止所有部分的值加起来为0
    for(int i=0;i<n;i++)
    {
        ll x;
        cin>>x;
        sum+=x;
        if(M.find(sum)!=M.end())//如果当前前缀和和之前某个位置的相同,代表这两个位置间(包括当前位置)的值加起来为0
        {//贪心过程在当前位置前的一个位置塞入一个绝对值足够大的数字即可
            M.clear();
            sum=x;//当前前缀合变为刚读入的这个数,前面的数字不再对后续产生影响,可以理解为我们在前面一个位置插入了一个无穷大
            M[x]=M[0]=1;
            ans++;
        }
        else M[sum]=1;
    }
    cout<<ans<<endl;
}

E题
贪心,小结论,暴力

两个人进行n轮石头剪刀布,每个人准备出几次剪刀,几次石头,几次布都已经给出,要求求出第一个人最少和最多能获得的胜场数。

最多能获得的胜场数很容易贪心得到,直接第一个人的剪刀和第二个人的布的场次取较小值加到答案上,另外两种情况也相同。

最少能获得的胜场数需要做个小结论,我们可以反过来思考,我们要获得最少的胜场数,也就等同于要得到最多的平局和负场数。而平局和负场的话,剪刀可以与剪刀构成平局,也可以去和石头构成负场。
我们优先考虑平局,再在这里我人为规定一个词叫做“被挤占”的状态,比如说1次第一个人的剪刀我们安排和第二个人的石头对应,1次第一个人的石头本来应当和第二个人的石头对应,现在“被挤占”后被迫和布对应。
如果剪刀石头布都存在“被挤占”的状态的话,不难发现构成了一个三场都负的循环,我们完全可以让他们变成三场都平局,排除这三个“被挤占”的状态。从而可以得到结论,最优的那种情况,必然可以转化为剪刀石头布中有一个不存在“被挤占”状态的方案,也就是优先考虑三种出法某一种。
由此我们直接for个3遍,优先考虑三种出法能获得的平局和负场数,取最大后被减去便是答案。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;

ll a[3],b[3];

int32_t main()
{
    IOS;
    ll n;
    cin>>n;
    cin>>a[0]>>a[1]>>a[2];
    cin>>b[0]>>b[1]>>b[2];
    ll ans=0;//记录最高可以得到的负场和平局数量
    for(int i=0;i<3;i++)//优先考虑a中的哪一个
    {
        ll now=0,sum=0;//now记录位置有多少场次需要寻找平局和负场,sum为优先考虑a[i]的情况下得到的负场和平局数
        for(int j=0;j<3;j++)
        {
            int tar=(i-j+3)%3;//寻找当前位置的下标,现在是尽可能多的寻找平局和负场
            ll temp=b[tar];
            sum+=min(now,temp);temp-=min(now,temp);//上一个位置留下的部分可以在当前位置放
            now=a[tar];//放置后上一个位置的场次没被安排的无法保存到下一个,直接清零记录为当前位置的场次即可
            sum+=min(now,temp);now-=min(now,temp);//当前位置b仍然能安排的优先安排
        }
        ans=max(ans,sum);
    }
    cout<<n-ans<<' ';
    ans=0;
    for(int i=0;i<3;i++) ans+=min(a[i],b[(i+1)%3]);
    cout<<ans<<endl;
}

F题
dp

题意为给定一个字符串,只包含abc?四种字符,其中?字符可以用abc任意一个去替换,问将所有的?替换后的所有字符串中,子串abc(下标不一定连续)总共出现了几次。

我们注意到,我们如果从左往右看过去的话,我们实际上需要关注的,只是a,ab,abc出现了几次。那么我们可以根据第i个位置是a,b,c做一个3 ×\times× n 的线性dp。
首先当前位置的情况,要继承上个位置所有构造方案的情况(见trans函数)。之后根据当前位置构造是a还是b还是c进行三种不同的转换。
如果构造a的话,只会对a的数量产生影响,当前位置之前出现了x个问号,那么此时前面共有3x种构造方法,每种方法都会增加一个a。因此直接增加3x个a。
如果构造b的话,只会对ab的数量产生影响,增加前面一个位置下记录的所有a的个数即可。
如果构造c的话,只会对abc的数量产生影响,增加前面一个位置下记录的所有ab的个数即可。

#include<bits/stdc++.h>
#define ll long long
#define llINF 9223372036854775807
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const ll mod=1e9+7;
const ll maxn=2e5+7;

struct Node
{
    ll a,ab,abc;
};

Node dp[maxn][3];//dp[i][j]表示第i个字符构造j的情况下,a/ab/abc各自出现了几次,j=0代表构造字符'a',j=1代表构造'b',j=2代表构造'c'
//当s[i]是个确定的字符时,只转移到dp[i][0]上
int n;
ll cas=1;//记录3^k,用于构造'a'时的转移
char s[maxn];

void trans(int x,int y)
{
    for(int i=0;i<3;i++)
    {
        dp[x][y].a=(dp[x][y].a+dp[x-1][i].a)%mod;
        dp[x][y].ab=(dp[x][y].ab+dp[x-1][i].ab)%mod;
        dp[x][y].abc=(dp[x][y].abc+dp[x-1][i].abc)%mod;
    }
}

void transa(int x,int y)//构造a时的转移方式
{
    trans(x,y);
    dp[x][y].a=(dp[x][y].a+cas)%mod;
}

void transb(int x,int y)//构造b时的转移方式
{
    trans(x,y);
    dp[x][y].ab=(dp[x][y].ab+dp[x-1][0].a+dp[x-1][1].a+dp[x-1][2].a)%mod;
}

void transc(int x,int y)//构造c时的转移方式
{
    trans(x,y);
    dp[x][y].abc=(dp[x][y].abc+dp[x-1][0].ab+dp[x-1][1].ab+dp[x-1][2].ab)%mod;
}

int32_t main()
{
    IOS;
    cin>>n>>(s+1);
    for(int i=1;i<=n;i++)
    {
        if(s[i]=='?')
        {
            transa(i,0);
            transb(i,1);
            transc(i,2);
            cas=cas*3%mod;
        }
        else
        {
            if(s[i]=='a') transa(i,0);
            if(s[i]=='b') transb(i,0);
            if(s[i]=='c') transc(i,0);
        }
    }
    cout<<(dp[n][0].abc+dp[n][1].abc+dp[n][2].abc)%mod<<endl;
}
库存优化技术提升电商效率 第一部分:库存优化技术基础 第1章:库存优化的基本概念 库存优化是现代电商运营中至关重要的一个环节。简单来说,库存优化指的是通过一系列的策略和技术手段,使得库存管理更加高效、准确,从而降低运营成本,提高销售额。 1.1 库存优化的定义与重要性 阅读详情

相关推荐

ADS与MATLAB数据互通全指南:从Snp文件导入到TXT导出完整流程

本文详细介绍了在射频与微波工程中,实现ADS与MATLAB高效数据互通的完整流程。核心内容包括利用SPOutput控件、数据显示窗口及测量方程等多种方法,将ADS仿真数据(如S参数)导出为Touchstone或TXT格式,并导入MATLAB进行深度分析与可视化;同时指导如何将MATLAB处理后的数据回灌至ADS,用于模型验证与协同仿真,旨在构建自动化、无损的数据交换工作流,提升工程师的工作效率。

pluto的博客 390

Codeforces Round #674 (Div. 3)题解

Problem A 题目描述: 第一层2个房间,以后每一层x个房间,求第n个房间在第几层 题目解析: 略略略 #pragma GCC diagnostic error "-std=c++11" #include <bits/stdc++.h> #define INF 0x3f3f3f3f #define ll long long #define Pair pair<int,int> #define re return #define getLen(name,index) name[

突破吧!次元壁 426

深入解析LCD DRM驱动框架中的KMS与GEM机制

本文深入解析了Linux内核中DRM(Direct Rendering Manager)驱动框架的核心机制,重点剖析了KMS(内核模式设置)与GEM(图形执行管理器)的工作原理。KMS作为显示系统的总指挥,负责原子化地控制CRTC、Encoder、Plane等硬件资源,确保画面同步更新,避免撕裂;GEM则作为显存大管家,通过DUMB和PRIME机制高效管理图形缓冲区的分配、共享与同步。文章结合RK3568平台实战,阐述了如何利用这些机制优化显示性能,并提供了调试技巧与常见问题解决方案。

weixin_29188997的博客 387

Codeforces Round #674 (Div. 3) 题解

A. Floor Number 题意: 有一栋楼,第一层有两个房间(编号1,21,21,2),第二层有xxx个房间(编号3,4,...,2+2∗x3,4,...,2+2*x3,4,...,2+2∗x),以后每一层也都是xxx个房间,现在给你房间编号,输出它得楼层。 解题思路: 理解题意后直接做就好了。 代码: #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+10; int main(){ int t; cin&g

weixin_39412108的博客 505

当AI学会写“自传”:OpenClaw 的 SOUL.md 如何把配置文件变成一颗会变形的心

SOUL.md。

步子哥的博客 1309

手把手教你学simulink实例--基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台

电动汽车的动力总成(Powertrain)是车辆的核心系统,包括动力电池、电机控制器、逆变器和驱动电机等关键部件。动力总成的控制策略直接影响车辆的动力性能、能耗效率和驾驶体验。为了验证和优化这些控制策略,基于MATLAB/Simulink的仿真平台成为一种高效且经济的解决方案。本项目旨在构建一个完整的基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台,涵盖控制策略建模、性能评估以及参数标定等功能模块,并通过仿真验证系统的有效性。

MHD0815的博客 298

Codeforces Round #674 (Div. 3) C题(贪心)

题意:两个操作,一个是给序列任意位置+1,一个是赋值某一个元素加到后面。问你最少多少步和能>=n。 思路:贪心 贪心策略:先自增到某个数x,然后赋值这个x若干次直到超过n。 所以只需要枚举[1,sqrt(n)]之间的因数,枚举x作比较即可。 贪心策略的证明:假设现在我们经过a-1次操作,构造出了一个a,那么我们现在想得到一个b,设(b>a),所以我们现在需要1+(b-a)次变化,可以得到数列:ab(先复制一次a,然后将那个复制的a操作b-a次变成b) 那么如果我直接将a操作b-a次变成b,然..

Jacob0824的博客 1110

2026终极反反爬:Canvas/WebGL/字体指纹全维度伪装,应对浏览器检测实战指南

本文分享了2026年浏览器指纹检测现状及全维度伪装方案。当前反爬系统采用多维度联合指纹检测,重点针对硬件级(WebGL、Canvas)、系统级(字体、CPU)和行为级(鼠标移动)指纹。作者设计了一个独立的指纹伪装引擎,包含真实设备指纹库、指纹生成器和统一注入层,通过JS沙箱隔离实现伪装。核心方案包括:Canvas指纹通过真实设备渲染差异添加微偏移;WebGL指纹完整劫持上下文返回真实显卡参数;字体指纹劫持measureText方法模拟不同系统字体宽度。该方案实测可连续运行一个月零封号,解决了传统方法易被检测

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 923

Codeforces Round #674 (Div. 3)

文章目录A - Floor NumberB - Symmetric MatrixC - Increase and CopyD - Non-zero Segments A - Floor Number 输入房间号,问在第几层 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 5; int main(void) { int t, n, x; cin >>

默的博客 384

21天教你学会PCIe专栏(14)--安全性考虑

1.1 定义安全性(Security):安全性是指保护系统免受未经授权的访问、攻击和破坏,确保数据的机密性、完整性和可用性。1.2 重要性数据保护:保护敏感数据,防止数据泄露和篡改。系统防护:防止恶意攻击,确保系统的稳定性和可靠性。合规性:满足行业标准和法律法规的要求,避免法律风险。用户信任:提高用户对系统的信任度,增强市场竞争力。通过今天的学习,你应该对PCIe安全性的重要性和常见威胁有了深入的了解,掌握了实施安全措施的方法和工具,以及安全开发的最佳实践。

xiaoheshang_123的博客 850

Python爬虫实战:逆向解析天猫商品详情API,精准捕获规格、SKU与促销活动

及浏览器开发者工具),绕过前端渲染的复杂性,直接逆向分析并调用其内部数据接口,从而高效、稳定地抓取商品的关键信息,包括商品规格、多维度SKU信息以及复杂的促销活动。print(f"SKU ID: {sku.sku_id}, 价格: ¥{sku.price}, 库存: {sku.stock}, 规格: {sku.props}")当你访问一个商品链接时,浏览器首先会加载一个几乎为空的HTML骨架,然后通过执行大量的JavaScript代码,向后台服务器发起多个异步请求,最终将获取到的数据填充到页面中。

2201_76125261的博客 1129

Codeforces Round #674 (Div. 3) (A - F题题解)

A. Floor Number https://codeforces.com/contest/1426/problem/A 题意: 一个楼房房间号由 \(1\) 递增,一楼仅2个房间。给定一位用户的房间号和 \(2\)楼以上每层的房间数\(x\) 求出用户所在楼层 思路: 很简单,理解题意即可。 如果 \(n≤2\) ,则答案为1。否则,您可以“删除”第一层,然后答案为 \(⌊\frac{n-...

橘嘉禾 78

[yolov5/yolov8修改]替换yolov5/yolov8中的主干网络为EfficientNetv2

针对yolov5和yolov8的主干网络进行替换。

PLH19990227的博客 4146

Codeforces Round #674 (Div. 3)——ABCDE解题报告

Codeforces Round #674 (Div. 3)——ABCDE解题报告 比赛链接:Link A. Floor Number 题解 数据范围很小,直接模拟整个过程并且维护答案即可, 当然也可以直接推出公式ans=n−2+x−1xans=\frac{n-2+x-1}{x}ans=xn−2+x−1​。 代码 #include <bits/stdc++.h> #define PI atan(1.0)*4 #define rp(i,s,t) for (register int i = (s);

mumei的博客 202

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

Codeforces Round #535 (Div. 3)题解

A. Two distinct pointsTwo\ distinct\ pointsTwo distinct points 题目大意就是给出两个区间的左右边界,输出两个数,满足两个数分别在两个区间内且这两个数不相等。(左右边界不相等) 大水题,直接判断一下两个边界是否相同,然后输出就行了。 #include<cstdio> #include<algorithm> #include<iostream> #include<c

繁凡さん的博客 518

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Codeforces Round #674 (Div. 3)——E. Rock, Paper, Scissors

Codeforces Round #674 (Div. 3)——E. Rock, Paper, Scissors 2020/9/28 这里不是题解! !!!!!!!!!!!!!!!!!!!!!!!! 展示一手绝活,把一个这样的代码: #include<bits/stdc++.h> using namespace std; #define pb push_back #define ll long long int #define pll pair<ll,ll> int main(){

ylwhxht的博客 225

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Codeforces Round #674 (Div. 3) A-F 比较简单的一场

80minAK ,无罚时。比较简单的一场DIV3 A:Floor Number 直接算就行 #include <bits/stdc++.h> using namespace std; typedef long long ll; #define re register #define ls (o<<1) #define rs (o<<1|1) //#define m (l+r)/2 #define pb push_back const double PI= acos

bjfu170203101的博客 332

Codeforces Round #674 (Div. 3) F. Number of Subsequences

Codeforces Round #674 (Div. 3) F. Number of Subsequences 题目链接 You are given a string s consisting of lowercase Latin letters “a”, “b” and “c” and question marks “?”. Let the number of question marks in the string s be k. Let’s replace each question mark wi

旺崽的博客 3633

Codeforces Round #674 (Div. 3) A ~ F 详细讲解

A 思路+题意:就是除了第一层有两个单元的话,其余的楼层都有x个单元。自己动手推一推就知道了。然后就是取余跟做除,看看在当前这层,还是下一层。不要忘了 加上第一层。 #include<bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while(t--){ int n,x; cin>>n>>x; if(n == 1 || n==2 ){ cout<

PengWei Yang 1133

Codeforces Round #674 (Div. 3) F. Number of Subsequences (DP)题解

题目链接: http://codeforces.com/contest/1426/problem/F 题目大意 : 给一串包含abc和?的字符串,?表示这里可以随便选。 如果给你ac?b?c 那么就会有[“acabac”, “acabbc”, “acabcc”, “acbbac”, “acbbbc”, “acbbcc”, “accbac”, “accbbc”, “accbcc”] 问这些字符串中有几个abc子序列。 题解 不考虑?的情况下,建一个二维数组dp[MAXN][3]; 分别记录子串“1”,“12”

REXWind的博客 239

Codeforces Round #674 (Div. 3) A-C

Codeforces Round #674 (Div. 3) A. Floor Number 题意: 第一层2个房间 以后每层多x 然后给一个房间 编号,以及x 问 这个编号的房间在第几层 问题分析: 暴力 累加,。,。 AC代码: #include<map> #include<set> #include<cmath> #include<queue> #include<vector> #include<cstdio> #include&

MaxVen 254

Codeforces Round #674 (Div. 3)、Codeforces Round #670 (Div. 2)

A. Floor Number 第一楼有2个房间,二楼及以上的楼层每一层有x个房间,房间的序列号从1号开始从低到高进行编号。根据房间的数量n求楼层数量。 n≤2n\le 2n≤2,答案为111 n≥3n\ge3n≥3, 答案为1+⌈n−2x⌉1+\lceil \frac{n-2}{x} \rceil1+⌈xn−2​⌉ B. Symmetric Matrix 每块砖有4个正方形瓦片,每个瓦片的边长为1.每个瓦片上有一个数字,用若干不同的砖块拼成一个边长为m的瓦片,问能否让拼成的瓦片呈主对角线对称。砖块不能旋转

星宇康的博客 315

Codeforces Round #674 (Div. 3) ABCD 题解

A. Floor Number 题意:一开始的数为2,问加多少次x才能加到超过n。 思路:水题,循环一遍就行。 view code #include<iostream> #include<string> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<map> #include <queue> #in

待到山花烂漫时 535

Codeforces Round #674 (Div. 3) F Number of Subsequences

上课打了一下,菜的真实,直接爆零QAQ。 并不是很难的一场div3,我甚至觉得一个擅长dp的rating1800+选手这场可以AK。 E是一个超简单的最大流问题,可惜当时没看,一直卡D。 D题大体方向没错,如果能冷静分析,就能发现贪心的方法了,可惜并没有。 C是一个均值不等式,我没看出来。 这里补一下F题计数dp,因为F题确实不能自己写出来,立篇博客分析一下。 题意 给定一个由a、b、c、?符号构成的字符串,你可以用a、b、c替换?,求由给定的字符串sss生成的所有无?字符串中,子序列abc出现的总共次数。

WA制造机的博客 321

Codeforces Round #674 (Div. 3) D,E,F

D 题意 给定一个长度为n的数组,每次操作可以给两个数加一个任意的数,目的是最少的操作使任意的连续子串的和不为0 思路 我们可以从前往后用贪心的思路,找到一个点如果他和前面的子串和为0,那么我就给这个点的前面添加一个数,可能不太会证明,但是思路就是这样的 我们只需要统计出这个点到上一个前面加过操作点的之间的所有点的前缀和,可以放在set里面,如果set里面有这个点的权值,就说明这个点前面的子串有和为0的,即进行一次操作,然后以这个点为开始继续重新计算,直到最后一个点 代码 #include<iostr

qq_45074215的博客 295

Codeforces Round #674 (Div. 3) A ~ D 题

文章目录1、A. Floor Number2、B. Symmetric Matrix3、C. Increase and Copy4、D. Non-zero Segments 1、A. Floor Number 题目链接: A. Floor Number 题目大意: P 在 n 号房间,除第一层有两个房间外,之后每一层都有 x 个房间,算一下 P 在第几层? 考察点: 好像没什么好侃的。。。。。 Code: #include <string> #include <cst

潘小蓝的博客 476
上一篇: Codeforces Round #673 (Div. 2)A-E题解
下一篇: zafu算法课作业1——递归题解
StandNotAlone
博客等级 码龄7年 338粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值