思维训练3
题目描述1
Problem - A - Codeforces
题目分析
样例1解释:
对于此题,我们采用贪心的想法,从1到n块数越少越好,故刚好符合最少的块数即可,由于第1块与第n块是我们必须要走的路,所以我们可以根据这两块砖的颜色进行分类判断。
如果这两块砖是一样的颜色,我们只需要判断这两块砖算上中间的颜色的总块数是否>=k即可。
如果这两块砖是不一样的颜色,我们需要分别从两端观察前面这部分的砖和后面这部分砖可以走的相同的颜色是否>=k即可
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
void solve()
{int n, k, c[N];cin >> n >> k;for(int i = 1; i <= n; i ++)cin >> c[i];if(c[1] == c[n]){int cnt = 0;for(int i = 2; i <= n - 1; i ++){if(c[i] == c[1])cnt ++; }if(cnt >= k - 2)cout << "YES" << '\n';else cout << "NO" << '\n';}else {int l = n, r = 1,kl = 0, kr = 0;for(int i = 1; i <= n && kl < k; i ++){if(c[i] == c[1]){kl ++;l = i;}}for(int i = n; i >= 1 && kr < k; i --){if(c[i] == c[n]){kr ++;r = i;}}if(kl == k && kr == k && l < r)cout << "YES" << '\n';else cout << "NO" << '\n'; }
}
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t;cin >> t;while(t --){solve();}return 0;
}
题目描述2
Problem - B - Codeforces
题目样例示意:
注意:找出的是排列也就是说数字不能重复,而且所有的数从小到大排序之后一定为连续的。
思考:什么是好区间?
包含1但是不包含2的区间(2)
包含1,2但是不包含3的区间(3)
包含1,3但是不包含2的区间(2)
为了使这样的区间尽可能多
我们可以进行一个构造,题目要求在所有的区间中尽量使所有的素数结果最多我们可以将2和3放在两边,将1放在中间,这样中间的大部分经过了1,但是未到达两边的2,3区间都是有贡献的,或者经过了1,2,但是没经过3的也是有贡献的,或者经过了1,3但是没经过2的也有贡献。
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N], n;
void solve()
{cin >> n;a[1] = 3, a[n] = 2;int x = (n + 1) / 2;a[x] = 1;int k = 3;for(int i = 2; i < x; i ++){k ++;a[i] = k; } for(int i = x + 1; i < n; i ++){k ++;a[i] = k;}for(int i = 1; i <= n; i ++)cout << a[i] << ' ';cout << '\n';
}
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t;cin >> t;while(t --){solve();}return 0;
}
题目描述3
Problem - C - Codeforces
题目分析
此题我们需要掌握缩点的思想。
缩点:连续相同的字符变成一个字符即可
eg.00011110001011缩点成010101
需要不降序排列故左边0多好,"?"挨着哪个数就缩成哪个数,如果左右两边的数不一样就统一先按左边来缩数
#include<bits/stdc++.h>
using namespace std;
void solve()
{string s ;cin >> s;int n = s.size() ;for(int i = 0; i < n; i ++){if(i != 0 && s[i] == '?'){s[i] = s[i - 1]; } else if(i == 0 && s[i] == '?')s[i] = '0';} cout << s << '\n';
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;cin >> t;while(t --){solve();}return 0;
}
题目描述4
Problem - D - Codeforces
题目分析
由上图可知变化一次必然会进行一次颜色的翻转
R表示数字不同的一列,B表示数字相同的一列
故要么是全R要么是全B才能到达一个全B的终点
一次操作到全R两次操作就会回到全B,故我们需要进行操作绑定
两两配对操作会使得除了这两个数之外的所有数都不发生变化(操作绑定)
但是如果剩下一个数没有配对时,可以进行如图右下角的方法计算
将需要改变的1存入vector中,并将其中的不能配对的奇数的1单独取出计算,剩下的进行配对即可
注:若取出的数的位置不在1时就可以改变(1, x - 1),(1, x)
若取出的数的位置在1时就可以改变(x, n)(x + 1, n)
#include<bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
typedef pair<int, int> PII;
void solve()
{char a[N], b[N];int n;vector<PII> ans;vector<int> pos;cin >> n;cin >> a + 1 >> b + 1;bool flag1 = 0, flag2 = 0;for(int i = 1; i <= n; i ++){if(a[i] == b[i])flag1 = 1;else flag2 = 1;}if(flag1 && flag2){cout << "NO" << '\n';return;}if(flag2)//如果全是不相同的字符{ans.push_back({1, n});for(int i = 1; i <= n; i ++){if(a[i] == '0')a[i] = '1';else a[i] = '0';}}for(int i = 1; i <= n; i ++){if(a[i] == '1')pos.push_back(i);}if(pos.size() & 1){int x = pos.back();if(x == 1){ans.push_back({x, n});ans.push_back({x + 1, n});}else{ans.push_back({1, x - 1});ans.push_back({1, x});}pos.pop_back();}for(auto i : pos)ans.push_back({i, i});cout << "YES" << '\n' << ans.size() << '\n';for(auto i : ans){cout << i.first << ' ' << i.second << '\n'; }
}
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t;cin >> t;while(t --){solve();}return 0;
}
题目描述5
Problem - E - Codeforces
题目分析
此题相当于找规律,从最大的数开始看起,第一个大于等于(n - 1)的平方数就是此处可以组成的平方数,发现会有连续的一段的平方数一样,判断限制条件,如果条件不满足就循环改数使其满足条件。
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N];
void solve()
{bitset<N> vis;int n;cin >> n;int y = 0;while(y * y < n - 1)y ++;for(int i = n - 1; i >= 0; i --){while(y * y - i >= n || vis[y * y - i])y --;a[i] = y * y - i;vis[a[i]] = true;}for(int i = 0; i < n; i ++){cout << a[i] << ' ';}cout << '\n';
}
int main()
{int t;cin >> t;while(t --){solve();}return 0;
}
相关文章:

思维训练3
题目描述1 Problem - A - Codeforces 题目分析 样例1解释: 对于此题,我们采用贪心的想法,从1到n块数越少越好,故刚好符合最少的块数即可,由于第1块与第n块是我们必须要走的路,所以我们可以根据这两块砖的…...

初识FFmpeg
前言 无意间见到群里的小伙伴展示视频工具。功能比较多,包括视频编码修改,画质处理,比例处理、名称提取,剪辑、标题拆解。因此开始了FFmpeg学习。以下摘自百度百科的解释。 FFmpeg是一套可以用来记录、转换数字音频、视频…...
分布式多主关系数据库的底线业务优势
当今的应用程序(包括企业应用程序)需要始终开启且始终可用,并且通常必须为全球用户提供服务,这些用户无论身在何处都希望获得几乎即时的响应时间。 应对这些挑战不仅仅意味着让用户更满意:每个能够解决低延迟和超高可…...

JMM讲解
一:为什么要有JMM,它为什么出现? CPU的运行并不是直接操作内存而是先把内存里面的数据读到缓存,而内存的读和写操作的时候会造成不一致的问题。JVM规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异&…...

小程序获取头像和昵称的思路
小程序获取头像和昵称的基本方法是调用小程序自带的API wx.getUserProfile(),这也是小程序官方目前最推荐的做法。成功获取用户名头像之后,小程序允许保存调用的结果,以便下一次打开页面的时候自动显示头像和名字。保存用户名和头像并不是保存…...

关于docker网络实践中遇到的问题
1.禁用docker自动修改iptables规则 查看docker.service文件/usr/lib/systemd/system/docker.service 默认在宿主机部署容器,映射了端口的话,docker能自己修改iptables规则,把这些端口暴露到公网。 如果要求这些端口不能暴露到公网…...

C#完成XML文档节点的自动计算功能
一个项目涉及XML文档中节点的自动计算,就是XML文档的每个节点都参与运算,要求: ⑴如果节点有计算公式则按照计算公式进行; ⑵如果节点没有计算公式则该节点的值就是所有子节点的值之和; ⑶节点有4种类型,计…...

体验SOLIDWORKS旋转反侧切除增强 硕迪科技
大家在设计中经常使用的旋转切除命令在solidworks2024版本中迎来了新的增强,添加了旋转反侧切除选项。在设计过程中不必修改复杂的草图即可切除掉我们不需要的部分。使设计工作更加方便快捷。 打开零部件后,点击键盘上的S键并输入旋转切除以搜索该命令&a…...
分布式ID系统设计(3)
分布式ID系统设计第三集 id-service-SnowFlake方案 第二集说了id-service-Segment-DB可以生成趋势递增的ID,但是ID号是可以计算的。不太适用于一些订单ID生成的场景。因为存在数据暴露的风险 比如我可以对比两天的订单ID号来大致计算出公司一天的订单量。这个有点危险。 所以…...
工作备忘录【微信】
这工作备忘录【微信】里写自定义目录标题 unionid获取用户基本信息无 unionid EasyWeChat"overtrue/wechat": "^4.6" 与 "overtrue/wechat": "~3.1" 使用方式有异 unionid 微信 unionid 有关备忘录 获取用户基本信息无 unionid htt…...

Window下SRS服务器的搭建
---2023.7.23 准备材料 srs下载:GitHub - ossrs/srs at 3.0release 目前srs release到5.0版本。 srs官方文档:Introduction | SRS (ossrs.net) Docker下载:Download Docker Desktop | Docker 进入docker官网选择window版本直接下载。由…...

Canvas绘制简易雨滴碰撞效果
实现会动的图形,向下播放多张静态的图片。一秒内要大于屏幕刷新的帧数(60) 也就是每隔1/60s执行一次函数在每次绘制的正方形上添加一个背景色为白色蒙板。 效果图 源代码 <!DOCTYPE html> <html lang"en"><head><meta charset"…...
【五、http】go的http的信息提交
一、post提交的几种 form表单json文件 1、提交表单 //http的postfunc requstPost(){params : make(url.Values)params.Set("name", "kaiyue")params.Set("age", "18")formDataStr : []byte(params.Encode())formDataByte : bytes.N…...

第六讲:VBA与ACCESS的ADO连接中,所涉及的对象
《VBA数据库解决方案》教程(10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实…...

【计算机网络】同源策略及跨域问题
1. 同源策略 同源策略是一套浏览器安全机制,当一个源的文档和脚本,与另一个源的资源进行通信时,同源策略就会对这个通信做出不同程度的限制。 同源策略对 同源资源 放行,对 异源资源 限制。因此限制造成的开发问题,称…...

uniapp在APP端使用swiper进行页面不卡顿滑动
uniapp在APP端使用swiper进行页面会卡顿,主要是渲染的数据有点多,这里只渲染三个数据就不好那么卡顿了,每次滑动后更新数据 <view><swiper change"changePoint" circular :disable-touch"disableTouch"><…...
遗憾
《遗憾》 文/罗光记 岁月匆匆如梦过, 回首往事泪沾裳。 遗憾犹存心深处, 青春岁月已成伤。...
hustoj 平台
1.大部分功能和选项的开关和参数调整都在配置文件中,安装后几个重要配置文件的位置如下: /home/judge/etc/judge.conf #判题judged/judge_client /home/judge/src/web/include/db_info.inc.php #Web debian-sys-maint gdfNPYOdITxtDEK1 修改MySQl管…...

如何使用Scrapy提取和处理数据
目录 一、安装和设置Scrapy 二、创建爬虫 三、提取数据 四、处理数据 五、存储数据 六、进阶操作 七、注意事项 总结 Scrapy是一个强大且灵活的Python库,用于创建网页爬虫,提取和处理数据。本文将为您深入讲解如何使用Scrapy进行数据处理&#x…...
拟合与过拟合
拟合跟过拟合 过拟合:将泛化误差分解为偏差跟方差 偏差:学习者不断学习相同错误事物的倾向 方差:学习随机信号而不考虑真实情况的趋势 过拟合:所建的机器学习模型或者深度学习模型在训练样本中表现得过于优越,导致测试数据集表现…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...