7.29训练总结

news2024/9/27 21:18:03

CodeForces - 1609E

这种使得整个串不包含子串’abc’的题目,发现可以用线段树维护

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
#define lson now<<1
#define rson now<<1|1
struct seg
{
    int a,b,c;
    int ab,bc,abc;
}tr[maxn<<2];
int n,q;
char s[maxn];
void pushup(int now)
{
    tr[now].a=tr[lson].a+tr[rson].a;
    tr[now].b=tr[lson].b+tr[rson].b;
    tr[now].c=tr[lson].c+tr[rson].c;
    tr[now].ab=min(tr[lson].a+tr[rson].ab,tr[lson].ab+tr[rson].b);
    tr[now].bc=min(tr[lson].b+tr[rson].bc,tr[lson].bc+tr[rson].c);
    tr[now].abc=min(tr[lson].a+tr[rson].abc,min(tr[lson].ab+tr[rson].bc,tr[lson].abc+tr[rson].c));
}
void build(int now,int l,int r)
{
    if(l==r)
    {
        if(s[l]=='a') tr[now].a=1;
        if(s[l]=='b') tr[now].b=1;
        if(s[l]=='c') tr[now].c=1;
        return;
    }
    int mid=l+r>>1;
    build(now<<1,l,mid);
    build(now<<1|1,mid+1,r);
    pushup(now);
}
void change(int now,int l,int r,int pos,char cc)
{
    if(l==r)
    {
        tr[now].a=tr[now].b=tr[now].c=0;
        if(cc=='a') tr[now].a=1;
        if(cc=='b') tr[now].b=1;
        if(cc=='c') tr[now].c=1;
        return;
    }
    int mid=l+r>>1;
    if(pos<=mid) change(lson,l,mid,pos,cc);
    else change(rson,mid+1,r,pos,cc);
    pushup(now);
}
int main()
{
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    scanf("%d%d",&n,&q);
    scanf("%s",s+1);
    build(1,1,n);
    while(q--)
    {
        int x; char cc;
        scanf("%d %c",&x,&cc);
        change(1,1,n,x,cc);
        printf("%d\n",tr[1].abc);
        // change(1,1,n,x,s[x]);
    }
    return 0;
}

AtCoder - arc061_d

请添加图片描述

#include<bits/stdc++.h>
using namespace std;
const int maxn=9e5+5;
typedef long long ll;
const ll mod=1e9+7;
int n,m,k;
ll pw[maxn],fac[maxn],inv[maxn],ifac[maxn];
ll C(ll x,ll y)
{
	return fac[x]*ifac[y]%mod*ifac[x-y]%mod;
}
int main()
{
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
	scanf("%d%d%d",&n,&m,&k);
	pw[0]=1,fac[0]=inv[0]=ifac[0]=inv[1]=1;
	for(int i=1;i<maxn;i++)
	{
		pw[i]=pw[i-1]*3%mod;
		fac[i]=fac[i-1]*i%mod;
		if(i>1) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
		ifac[i]=ifac[i-1]*inv[i]%mod;
	}
	ll ans=0;
	ll tmp;
	// cerr<<C(1,1);
	for(int i=0;i<=k+m;i++)
	{
		ll res=C(n+i-1,i)*pw[m+k-i]%mod;
		// cerr<<res;
		if(!i) tmp=1;
		else
		{
			tmp=tmp*2%mod;
			if(i>m) tmp=(tmp+mod-C(i-1,m))%mod;
			if(i>k) tmp=(tmp+mod-C(i-1,i-k-1))%mod; 
		}
		// cerr<<tmp; 
		ans=(ans+res*tmp)%mod;
	}
	printf("%lld\n",ans);
	return 0;
}

CodeForces - 1734F

容易发现这种构造方式得到的串的0/1取决于二进制表示下1的个数的奇偶性,奇数个就是1,偶数个就是0

那么问题转换为从0开始和从n开始的m个数,有多少二进制下1的个数的奇偶性不同,然后就数位dp即可

注意使用1<<w的时候,如果w是大于31记得改成1ll!!!!!!

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f[62][2][2][2];
ll dp(ll n,ll m)
{
    m--;
    memset(f,0,sizeof(f));
    f[0][0][0][0]=1;
    for(int w=1;w<=61;w++)
    {
        int v=0;
        if(n&(1ll<<w-1)) v=1;
        int one=0;
        if(m&(1ll<<w-1)) one=1;
        for(int i=0;i<=1;i++)
            for(int j=0;j<=1;j++)
                for(int lim=0;lim<=1;lim++)
                    for(int k=0;k<=1;k++)
                    { 
                        int val=k^j^v; // 这一位是选择的0/1 和之前是否进位 以及相加的这一位是否是1
                        int s=i^val^k; // 是否有奇数个
                        int jw=(k+j+v>=2)?1:0;
                        int limm=(k<one || (k==one && !lim))?0:1;
                        f[w][s][jw][limm]+=f[w-1][i][j][lim];
                    }
    }
    return f[61][1][0][0];
}
int main()
{
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    int T; scanf("%d",&T);
    while(T--)
    {
        ll n,m; scanf("%lld%lld",&n,&m);
        printf("%lld\n",dp(n,m));
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/809067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用开源免费AI绘图工具神器-Stable Diffusion懒人整合包

使用开源免费AI绘图工具神器-Stable Diffusion懒人整合包 Stable Diffusion 是什么 Stable Diffusion (简称 SD) 是一款开源免费的以文生图的 AI 扩散模型&#xff0c;它和付费的 Midjourney 被人称为当下最好用的 AI 绘画工具。你在网上看到的绝大多数优秀 AI 图片作品&…

智能垃圾桶

1.树莓派3B引脚图 2. 原理图 3.舵机线图 搜了这个这么多3b的资料&#xff0c;自己只是想解决如何下程序和运行程序的博客&#xff0c;网上搜集的资料全是讲如何通过SSH或者网线连接树莓派&#xff0c;通过直接连接屏幕的教程较少。 棕 : GND 红 : VCC 黄&#xff1a; 信号线…

【Ubuntu系统18.04虚拟机ros下实现darknet_ros(YOLO V3)检测问题解析最全】

原本打算在搭载Ubuntu18.04的智能小车上面运行使用darknet_ros 包来进行yolov3的检测&#xff0c;但是运行过程中遇到了不少问题&#xff0c;从头到尾部的运行包括遇到的解决方法以及对应的文章一并列出&#xff0c;免得到处查找。 首先是在ROS下实现darknet_ros(YOLO V3)检测…

127.【SpringBoot 源码刨析D】

SpringBoot 源码刨析D (三)、SpringBoot 核心功能4.单元测试功能(1).JUnit5 的变化(2).JUnit5常用注解(3).断言&#xff08; assertions &#xff09;(3.1).简单断言(3.2).数组断言(3.3).组合断言(3.4).异常断言(3.5).超时断言(3.6).快速失败 (4).前置条件&#xff08; assumpt…

【小白必看】Python爬虫实战之批量下载女神图片并保存到本地

文章目录 前言运行结果部分图片1. 引入所需库2. 发送请求获取网页内容3. 解析网页内容并提取图片地址和名称4. 下载并保存图片完整代码关键代码讲解 结束语 前言 爬取网络上的图片是一种常见的需求&#xff0c;它可以帮助我们批量下载大量图片并进行后续处理。本文将介绍如何使…

如何选择台式还是便携式多参数水质检测仪呢

选择台式还是便携式多参数水质检测仪主要取决于具体的使用需求和场景。 1.便携式多参数水质检测仪适用于需要在不同地点进行水质检测的情况&#xff0c;例如户外采样、实地调查等。它具有小巧轻便的特点&#xff0c;方便携带和操作&#xff0c;适合需要频繁移动或需要灵活使用的…

深入解析Linux进程内存:VSS、RSS、PSS、USS及查看方式

VSS 虚拟耗用内存大小&#xff0c;是进程可以访问的所有虚拟内存的总量&#xff0c;包括进程独自占用的物理内存、和其他进程共享的内存、分配但未使用的内存。 RSS 驻留内存大小&#xff0c;是进程当前实际占用的物理内存大小&#xff0c;包括进程独自占用的物理内存、和其…

bootstrap入门到精通

官网&#xff1a;列表组 - Bootstrap框架 (bootstrapdoc.com) 菜鸟教程&#xff1a;Bootstrap 列表组 | 菜鸟教程 (runoob.com) 1.什么是bootstrap bootstrap是一个用于快速开发web应用程序和网站的前端框架。基于HTML、CSS和JavaScript封装 响应式 ElementUI 更适合用于企…

WIZnet W5500-EVB-Pico DHCP 配置教程(三)

DHCP协议介绍 什么是DHCP&#xff1f; 动态主机配置协议DHCP&#xff08;Dynamic Host Configuration Protocol&#xff09;是一种网络管理协议&#xff0c;用于集中对用户IP地址进行动态管理和配置。 DHCP于1993年10月成为标准协议&#xff0c;其前身是BOOTP协议。DHCP协议由R…

Spring源码(五)— 解析XML配置文件(一) bean标签解析流程

前面几章的内容已经介绍了BeanFactory创建前的准备工作&#xff0c;以及加载XML配置文件前的准备的步骤。本章会着重介绍解析XML的步骤。 registerBeanDefinitions 前几个方法不做过多的赘述&#xff0c;着重看registerBeanDefinitions方法中解析XML的步骤。 public int regi…

C++ 多进程学习总结

C多进程 进程间通信 消息队列 消息队列&#xff1a;提供一个种进程间发送/接收数据块&#xff08;常为结构体数据&#xff09;的方法。 函数接口 ftok()&#xff1a;获取消息队列键值msgget()&#xff1a;创建和访问消息队列msgsnd()&#xff1a;向消息队列发送数据msgrcv…

罗布乐思Roblox学习笔记

罗布乐思 文章目录 罗布乐思基本操作CFrameGUIModule script呼吸灯商店imageChangetag标签知识答题showTips 基本操作 缩放按shift 等比例缩放 ctrl 双向缩放 复制对象 ctrlD &#xff08;如果选择多个对象&#xff0c;按住ctrl&#xff09; F 聚焦 Workspace ​ Terrain…

看完这篇文章,你还会用再用AUTOMATIC1111 WebUI吗?

​说起 AUTOMATIC1111 的 Stable diffusion-wbui 这个项目&#xff0c;使用过Stable diffusion的人应该无人不知吧&#xff0c;网络上基本一边倒的在使用他家的项目&#xff0c;而且fork量和star量还不小&#xff1a; 但是AUTOMATIC1111 这个名字总给我一些不靠谱的感觉&#x…

【C++】多态、黑马程序员案例— —电脑组装、Visual Studio开发人员工具查看内部结构,cl /d1 reportSingleClassLayout

author&#xff1a;&Carlton tag&#xff1a;C topic&#xff1a;【C】多态、黑马程序员案例— —电脑组装、Visual Studio开发人员工具查看内部结构,cl /d1 reportSingleClassLayout website&#xff1a;黑马程序员C date&#xff1a;2023年7月24日 目录 纯虚函数、抽…

map的初始化、erase()、写入与写出

运行代码&#xff1a; //map的初始化、erase()、写入与写出 #include"std_lib_facilities.h"istream& operator>>(istream& is, map<string, int>&mm) {string ss"";int ii0;is >> ss;if(is>>ii)mm[ss] ii;return i…

【数据集】3小时尺度降水数据集-MSWEPV2

1 MSWEP V2 precipitation product 官网-MSWEP V2降水产品 参考

《向量数据库指南》:向量数据库Pinecone如何集成LangChain (一)

目录 LangChain中的检索增强 建立知识库 欢迎使用Pinecone和LangChain的集成指南。本文档涵盖了将高性能向量数据库Pinecone与基于大型语言模型(LLMs)构建应用程序的框架LangChain集成的步骤。 Pinecone使开发人员能够基于向量相似性搜索构建可扩展的实时推荐和搜索系统…

redis之Bitmap

位图数据结构其实并不是一个全新的玩意&#xff0c;我们可以简单的认为就是个数组&#xff0c;只是里面的内容只能为0或1而已(二进制位数组)。 GETBIT用于返回位数组在偏移量上的二进制位的值。值得我们注意的是&#xff0c;GETBIT的时间复杂度是O(1)。 GETBIT命令的执行过程如…

LeetCode 75 第十三题(1679)K和数对的最大数目

题目: 示例: 分析: 给一个数组&#xff0c;两个和为K的数为一组&#xff0c;问能凑成几组。 既然一组是两个数&#xff0c;那么我们可以使用双指针分别指向数组首尾&#xff0c;然后再判断能否凑成和为K的组. 在使用双指针寻找之前,我们应当先将数组排序(升序降序都无所谓),…

[SSM]Spring面向切面编程AOP

目录 十五、面向切面编程AOP 15.1AOP介绍 15.2AOP的七大术语 15.3切点表达式 15.4使用Spring的AOP 15.4.1准备工作 15.4.2基于AspectJ的AOP注解式开发 15.4.3基于XML配置方式的AOP&#xff08;了解&#xff09; 15.5AOP的实际案例&#xff1a;事务处理 15.6AOP的实际…