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

Win11+Ubuntu18.04+Ubuntu20.04三系统安装与卸载 以下情况均为个人情况:1.插入启动 U 盘后,登录时可以按F12(拯救者Y7000,不同电脑不同)进入BIOS,选择从启动盘启动。2.。3.5.在win基础上,安装第一个Ubuntu系统后,系统启动界面类似如下第一张图,Ubuntu不显示版本号。安装第二个Ubuntu系统后,系统启动界面如下第二张图,如果想更改启动项的名称,可自行查阅相关资料。 阅读详情

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;
}
AnolisOS网卡驱动源码编译与安装实战指南 本文提供了一份详尽的AnolisOS网卡驱动源码编译与安装实战指南。针对系统自带通用驱动不兼容导致网络无法使用的问题,文章从环境准备、源码获取、编译安装到新旧驱动替换与持久化配置,一步步解析了如何通过源码编译安装官方驱动,解决硬件兼容性问题,并确保驱动在系统重启后自动生效。 阅读详情

相关推荐

CentOS7无外网环境下MySQL8.0完整离线部署指南

本文详细介绍了在CentOS7无外网环境下,如何通过MySQL8.0二进制包进行完整离线部署。指南涵盖了从环境准备、依赖安装、用户与目录创建,到数据库初始化、服务配置及远程访问设置的全过程,并提供了关键的避坑技巧,帮助企业运维人员在内网环境中高效、稳定地搭建MySQL数据库服务。

xxx12的博客 1029

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

Comsol 弧形声学换能器声聚焦仿真

1. 弧度和曲率半径:弧形声学换能器的形状和曲率半径对声聚焦效果有重要影响。通常,较小的曲率半径和较大的弧度可以实现更强的声聚焦效果。弧形声学换能器声聚焦是指将声波能量集中在弧形声学换能器的特定区域内,以实现更强的声场强度和分辨率。4. 数值仿真和优化:使用声学仿真软件进行数值仿真可以帮助设计和优化弧形声学换能器的声聚焦效果。通过调整几何参数、材料特性和激励信号等参数,可以模拟和优化声聚焦效果。2. 激励信号:通过调整激励信号的频率和幅值,可以实现声波在弧形声学换能器中的聚焦效果。

声学黑洞仿真工作室 1616

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

Qt 5.15.2静态编译避坑实录:MinGW 32位版从源码到Creator配置的全流程踩坑总结

本文详细介绍了Qt 5.15.2 MinGW 32位版本的静态编译全流程,包括环境准备、配置参数优化、编译过程监控及安装后配置。重点解决了静态编译中的常见问题,如参数顺序敏感、路径引号问题等,并提供了性能对比实测数据,帮助开发者高效完成静态编译。

weixin_26749245的博客 271

数模【Mathematica(安装、入门方法、基本计算、基本图形、创建互动模型、利用数据、幻灯片演示、完整实例)】

Mathematica(安装and激活、入门方法、基本计算、基本图形、创建互动模型、利用数据、幻灯片演示、完整实例) Mathematica_11.3.0 安装教程 Mathematica11.3 激活 P1 笔记本 P2 入门方法 P3 基本计算 P4 基本图形 P5 创建互动模型 P6 利用数据 P7 演示 P8 完整实例

upward 12万+

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

泛微OA表单设计实战:如何快速实现自定义多选浏览框(附完整配置步骤)

本文详细介绍了在泛微OA中快速实现自定义多选浏览框的完整配置步骤。针对招聘提报、活动审批等需要从海量数据中规范选择多个条目的业务场景,文章从理解需求、构建数据源、设计查询页面到创建浏览框控件,提供了清晰的实战指南,帮助开发者高效解决复杂数据选择难题,提升表单操作体验。

yog99的博客 1048

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

RK3588 部署 YOLOv5s 实战:多线程加速从 16FPS 飙升到 120FPS(含性能优化)

因为RK3588包含了3个NPU核心,支持3个核心同时工作、双核合作、以及单核工作。我们可以使用线程池来加速。线程池是一种长街的并发编程模型,它用于管理和复用线程,以提高多线程程序的性能和效率。线程池通常包含以下主要组件:1、任务队列:任务队列用于存储待执行的任务。这些任务可以是函数、方法或其他需要多线程环境中执行的操作。2、线程池管理:线程池管理器负责创建、销毁和管理线程。它会监视任务队列中的任务,根据需要创建线程,执行任务,并在任务完成后将线程放回池中以供重用。

FJN110的博客 99

【推荐100个unity插件之8】实现多人在线联机游戏——Mirror插件的使用介绍(附项目源码)

基于Mirror的Unity多人游戏开发指南 本文介绍了使用Mirror插件开发Unity多人游戏的基本流程。Mirror是Unity的高级网络API,替代了已废弃的UNet系统。文章详细讲解了如何导入Mirror插件,创建NetworkManager网络管理器,处理常见错误,以及创建玩家角色和出生点。 主要内容包括: 创建场景NetworkManager并配置必要组件 为玩家添加NetworkIdentity和NetworkTransform组件 设置玩家初始生成位置和生成方式 常见错误及解决方法 通过M

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

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

scottplot5中使用signalXY图,如何更新数据?

🏆本文收录于《优快云问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 2435

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Codeforces Round #535 (Div. 3)题解

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

繁凡さん的博客 518

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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、付费专栏及课程。

余额充值