首页 > 编程语言 >[2022年蓝桥杯C/C++ A组]个人做题记录

[2022年蓝桥杯C/C++ A组]个人做题记录

时间:2023-04-02 22:14:40浏览次数:48  
标签:last int 题解 sum C++ 蓝桥 异或 2022 dp

碎碎念

欸嘿,鸽了小半年

去做了一些不喜欢的事情,但兜兜转转,还是acm最香捏

求和

题意

求\(\sum_{i=1}^n\sum_{j=1}^n a_i*a_j (i!=j)\)

题解

感觉是去年的时候笨人唯一做满分的题……
经典前缀和,设\(sum[i]=\sum_{j=i}^na[j]\),答案即为\(\sum_{i=1}^{n-1}a[i]*sum[i+1]\)

#define int long long
void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=n;i>=1;i--)
	{
		if(i==n) sum[i]=a[i];
		else sum[i]=a[i]+sum[i+1];
	}
	int ans=0;
	for(int i=1;i<n;i++)
	{
		ans+=a[i]*sum[i+1];
	}
	cout<<ans;
}

选数异或

妙妙题,没有任何算法和数据结构的东东,纯思维

题意

给定n,m,x(x非负),给出a[1]到a[n],m次询问a[l]到a[r]内有无一对数字异或为x,若有输出yes,否则输出no

题解

边读边处理,对于每一个数字a[i],记录其最新出现位置last[a[i]]=i
可以找到其左侧最近的和其异或为x的数字\(a[i]\oplus x\),位置即为\(last[a[i]\oplus x]\)
设dp[i]为 a[1]~a[i]所有满足异或为x的数对中左边的数的最大位置,则$$dp[i]=max(dp[i-1],last[a[i]\oplus x])$$
则查询[l,r]时只需查看dp[r]是否>=l即可。
注意在更新dp[i]后再更新last[a[i]],否则针对x=0的cornerCase会死得很惨

void solve()
{
	cin>>n>>m>>x;
	for(int i=1;i<=2000000;i++) last[i]=-1,dp[i]=-1;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		int b = x^a[i];
		dp[i]=max(dp[i-1],last[b]);
		last[a[i]]=i;
	}
	for(int i=1;i<=m;i++)
	{
		int l,r;cin>>l>>r;
		if(dp[r]>=l) puts("yes");
		else puts("no");
	}
}

爬树的甲壳虫

题目和题解都看懂了,比去年的自己多了一点期望dp芝士,可惜不能独立做出来,也很难独立推出来,,
待补

青蛙过河

去年水了一个二分+暴力判断做法,复杂度爆表,不知道过了几组

设跳跃能力距离为y,只要所有长度为y的区间都满足石头高度总和为2*x,则一定有解,否则无解

标签:last,int,题解,sum,C++,蓝桥,异或,2022,dp
From: https://www.cnblogs.com/Hssliu/p/17279432.html

相关文章

  • C++学习笔记
    char和string的区别字符串string:C++string详解,C++字符串详解(biancheng.net)string是字符串类型,是在C的基础上对字符数组做封装,是一个类,有自己的函数,存的是一个完整的字符串,确实是由字符组成的,但不能认为里面是一个个char数据类型组成的。因而单拎出来里面的字符不能认为是cha......
  • [每天例题]蓝桥杯 C语言 单词分析
    蓝桥杯C语言单词分析题目  题目要求1.寻找出现最多的字母和这个字母出现的次数。2.如果有多个字母出现的次数相等,输出字典序最小的那个。思路分析输入方法:方法一:1.可以通过数组来记录该单词,并为单词出现的每一个字母做上标记。2.可以采用for循环将字符串依次输......
  • C++11新特性之std::function和bind绑定器
    在C++中,存在可调用对象这一个概念,可调用对象有以下几种定义:(1).是一个函数指针(2).是一个具有operator()成员函数的类对象(仿函数)(3).是一个可被转换为函数指针的类对象(4).是一个类成员(函数指针)一、可调用对象包装器----std::functionstd::function是可调用对象的包装......
  • 2018年第九届蓝桥杯—B组C/C++程序设计省赛解题-2明码
    .明码汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛。16点阵的字库把每个汉字看成是16x16个像素信息。并把这些信息记录在字节中。一个字节可以存储8位信息,用32个字节就可以存一个汉字的字形了。把每个字节转为2进制表示,1表示墨迹,0表示底色。每行2个字节,一共16......
  • mingw64 + nvim + coc.nvim + nvim-dap : C++ windows - 01
    目标用做C++编译器尽量不要扩展其它功能python是避免不了,所以才安装的。1.1下载安装https://mirror.tuna.tsinghua.edu.cn/msys2/distrib/msys2-x86_64-latest.exe安装路径:C:\gnu\msys641.2mingw64.exe使用这个:C:\gnu\msys64\mingw64.exe1.3安装程序:pac......
  • mingw64 + nvim + coc.nvim + nvim-dap : C++ windows - 02
    2.1命令行工具https://github.com/sharkdp/fdhttps://github.com/junegunn/fzfhttps://github.com/BurntSushi/ripgrephttps://github.com/tree-sitter/tree-sitterC:\gnu\cli\fd.exeC:\gnu\cli\fzf.exeC:\gnu\cli\rg.exeC:\gnu\cli\tree-sitter.exe添加到path......
  • mingw64 + nvim + coc.nvim + nvim-dap : C++ windows - 03
    3.1cclshttps://github.com/MaskRay/ccls/wiki/Build在msys中:pacman-S--noconfirmmingw-w64-x86_64-clangmingw-w64-x86_64-clang-tools-extramingw64/mingw-w64-x86_64-pollymingw-w64-x86_64-cmakemingw-w64-x86_64-jqmingw-w64-x86_64-ninjamingw-w64-x86_64-n......
  • mingw64 + nvim + coc.nvim + nvim-dap : C++ windows - 04
    4.1init.vim将init.vim放置到下面:echostdpath('config')~\AppData\Local\nvim4.2plughttps://github.com/junegunn/vim-plug将plug.vim放置到下面~\AppData\Local\nvim-data\site\autoload4.3:PlugInstall4.3.1网络问题gitproxy4.3.2process4.3......
  • mingw64 + nvim + coc.nvim + nvim-dap : C++ windows - 05
    PSC:\Users\dev\Desktop\cpp>cd.\build\PSC:\Users\dev\Desktop\cpp\build>cmake..-DCMAKE_BUILD_TYPE=Debug--Buildingfor:Ninja--TheCcompileridentificationisGNU12.2.0--TheCXXcompileridentificationisGNU12.2.0--Detect......
  • 一名C++程序员的Rust入门初体验
    作者最近尝试写了一些Rust代码,本文主要讲述了对Rust的看法和Rust与C++的一些区别。背景S2在推进团队代码规范时,先后学习了盘古编程规范,CPPcoreguidelines,进而了解到clang-tidy,以及GoogleChrome在安全方面的探索。C++是一个威力非常强大的语言,但是能力越大,责任越大,它......