CF756div3 vp
又被薄纱了,rk就不放了,好丢人QwQ
Dashboard - Codeforces Round 756 (Div. 3) - Codeforces
A. Make Even
小分类讨论
题意:
给定一个数,每次操作可以选取其前缀然后翻转其前缀,问你最少操作几次可以把该数变为偶数
思路:
对次数分类讨论即可
如果本来就是偶数,就是0次
如果s[1]是偶数,翻转一整个就行
如果没有偶数位,就是-1
其余都是两次
Code:
#include <bits/stdc++.h>
//#define int long long
#define LL long long
const int mxn=1e6+10;
const int mxe=2e5+10;
const int mod=1e9+7;
using namespace std;string s;
void solve(){s.clear();cin>>s;int n=s.size();s=" "+s;if((s[n]-'0')%2==0) cout<<0<<'\n';else if((s[1]-'0')%2==0) cout<<1<<'\n';else{int ok=0;for(int i=1;i<=n;i++){if((s[i]-'0')%2==0) ok=1;}if(ok) cout<<2<<'\n';else cout<<-1<<'\n';}
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;cin>>__;//p_init(1e6);while(__--)solve();return 0;
}B. Team Composition: Programmers and Mathematicians
贪心
题意:
有a个数学家和b个计算机学家,4个人一组组队,每组至少包含两种学科,问最多能组几队
谢谢,不会小学数学

思路:
要使队伍数尽可能多,就让少的那个学科每队派一人,然后和另一个队组队
那么答案就是min(min(a,b),(a+b)/4)
Code:
#include <bits/stdc++.h>
//#define int long long
#define LL long long
const int mxn=1e6+10;
const int mxe=2e5+10;
const int mod=1e9+7;
using namespace std;int a,b;
void solve(){cin>>a>>b;cout<<min(min(a,b),(a+b)/4)<<'\n';
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;cin>>__;//p_init(1e6);while(__--)solve();return 0;
}C. Polycarp Recovers the Permutation
构造+排列
题意:

思路:
一开始写了一小时的双指针模拟操作,然后写了一坨错了
这是构造题,考虑将一些一般条件特殊化,一般来说这种一般条件都是比较难处理的,像之前过年那会有个子序列,它就直接选了一整个序列,对于这种难处理的一般条件,我们考虑将其特殊化
注意到答案的排列(即原来的排列)的两端一定是最大值,否则就是无解
这道题就是把 双指针每次选小的那个 这个条件 转化成 固定一个指针动另一个,固定的那个指针大小一定为n,直接将其翻转即可
Code:
#include <bits/stdc++.h>
using namespace std;
//#pragma GCC optimize(2)
#define close(); ios::sync_with_stdio(false);
#define endl '\n'
#define rep(i, l, r) for(int i = l; i <= r; i++)
#define dwn(i, r, l) for(int i = r; i >= l; i--)
typedef long long LL;
const int N = 3e5+100;
int a[N];
int b[N];
void solve()
{int n; cin >> n;rep(i, 1, n) cin >> a[i];if(a[1] == n || a[n] == n){dwn(i, n, 1) cout << a[i] << " "; cout << endl;}else cout << -1 << endl;}int main()
{close();int T; cin >> T;while(T--) solve();// system("pause");
}F. ATM and Students
尺取法
题意:
找出最长的连续子串使得其前缀和+s>=0
思路:
尺取法模板题,这道题居然有*1800,逆
Code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mxn=2e5+10;int n,s;
int a[mxn],sum[mxn];
void solve(){memset(sum,0,sizeof(sum));cin>>n>>s;for(int i=1;i<=n;i++) cin>>a[i],sum[i]=sum[i-1]+a[i];int ans=-1,ansl,ansr;for(int l=1,r=1;l<=n;l++){while(r<=n&&sum[r]-sum[l-1]>=-s) r++;r--;if(ans<r-l+1){ans=r-l+1;ansl=l;ansr=r;}}if(ans==-1||ansl>ansr) cout<<-1<<'\n';else cout<<ansl<<" "<<ansr<<'\n';
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;cin>>__;while(__--)solve();return 0;
}D. Weights Assignment For Tree Edges
构造
题意:
给定一棵树
又给了一个排列,对于p[i]满足dis[p[i]]>dis[p[i-1]]
dis是该结点的树上前缀和,w是边权
要你给这棵树的边权w赋值,使得能满足p排列的条件

思路:
模拟一下样例发现,我们可以遍历p[i]排列,把边权变成公差为1 的等差数列(特殊化边权)
如果父亲结点在p[i]中出现的id大于结点i,那么父亲结点的dis必然小于结点i,矛盾,所以这种情况无解
否则就去递推出p[i]的dis和w
Code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mxn=2e5+10;int n,rt;
int fa[mxn],w[mxn],dis[mxn],id[mxn],p[mxn];
void solve(){memset(dis,0,sizeof(dis));memset(w,0,sizeof(w));cin>>n;for(int i=1;i<=n;i++){cin>>fa[i];if(fa[i]==i) rt=i;}for(int i=1;i<=n;i++){cin>>p[i];id[p[i]]=i;}if(p[1]!=rt) cout<<-1<<'\n';else{int ok=1;for(int i=2;i<=n;i++){if(id[p[i]]<id[fa[p[i]]]) ok=0;w[p[i]]=dis[p[i-1]]+1-dis[fa[p[i]]];dis[p[i]]=dis[fa[p[i]]]+w[p[i]];}if(!ok) cout<<-1<<'\n';else{for(int i=1;i<=n;i++) cout<<w[i]<<" \n"[i==n];}}
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;cin>>__;while(__--)solve();return 0;
}E1. Escape The Maze (easy version)
BFS
题意:
有一棵树,Vlad和n个朋友玩游戏,Vlad位于节点1,n个朋友位于其他节点,第i个朋友位于xi。每个时刻,每个人都能沿着树边到达另一个点,或者留在原地。如果Vlad到达叶子节点,则Vlad赢。如果在其到达叶子前和其他人碰面(叶子也不能有其他人),则Vlad输。问最少需要保留多少个人能够保证Vlad输,即选取朋友的一个最小的子集,使得Vlad不能赢。
思路:
直接去BFS模拟过程,一格格染色,如果能把叶子结点染成1就是赢
Code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mxn=2e5+10;
const int mxe=2e5+10;
struct ty{int to,next;
}edge[mxe<<1];
queue<int> q;int n,k,u,v;
int tot=0,ok=0;
int x[mxn],d[mxn],head[mxn],mark[mxn],vis[mxn];
void add(int u,int v){edge[tot].to=v;edge[tot].next=head[u];head[u]=tot++;
}
void init(){tot=0;ok=0;for(int i=0;i<=n;i++){x[i]=0;head[i]=-1;d[i]=0;mark[i]=0;vis[i]=0;}
}
bool bfs(){for(int i=1;i<=k;i++) q.push(x[i]),vis[x[i]]=1;q.push(1);vis[1]=1;mark[1]=1;while(!q.empty()){int u=q.front();q.pop();if(d[u]==1&&mark[u]==1&&u!=1) ok=1;for(int i=head[u];~i;i=edge[i].next){if(vis[edge[i].to]) continue;vis[edge[i].to]=1;q.push(edge[i].to);mark[edge[i].to]=mark[u];}}return ok;
}
void solve(){cin>>n>>k;init();for(int i=1;i<=k;i++) cin>>x[i];for(int i=1;i<=n-1;i++){cin>>u>>v;add(u,v);add(v,u);d[v]++;d[u]++;}//for(int i=1;i<=n;i++) if(d[i]==1) cout<<i<<'\n';if(bfs()) cout<<"YES"<<'\n';else cout<<"NO"<<'\n';
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;cin>>__;while(__--)solve();return 0;
}
相关文章:
CF756div3 vp
又被薄纱了,rk就不放了,好丢人QwQDashboard - Codeforces Round 756 (Div. 3) - CodeforcesA. Make Even小分类讨论题意:给定一个数,每次操作可以选取其前缀然后翻转其前缀,问你最少操作几次可以把该数变为偶数思路&am…...
Linux命令·less
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less …...
修改redis改key值不改过期时间
今天在做图片验证码的时候遇到一个问题。用redis的生命周期来存放,用户输入错误次数。 三十秒内输错三次就,等待三十分钟。 那么问题来了,如果说第一次输入错误,应该是 key为用户用,value 为 次数2 ex就为30秒 &…...
Spark的DataFrame使用
内容目录创建SparkSession对象从CSV文件中读取从JSON文件中读取从Parquet文件中读取从数据列表中创建DataFrame从字典列表中创建DataFrame选择一列选择多列过滤年龄大于30的数据过滤名字为Alice的数据可以使用and、or、not等操作符进行组合查询按照年龄分组并计算平均年龄和最大…...
【Flutter】入门Dart语言:操作符的基本用法
文章目录 一、前言二、常用的操作符1.算术操作符2.关系操作符3.逻辑操作符4.赋值操作符5.三元运算符三、总结一、前言 当我们在编写Flutter应用程序时,操作符是我们不可或缺的工具。它们是用于执行各种操作的关键字和符号,可以帮助我们简化代码并提高效率。熟练掌握各种类型…...
Linux线程概念
重新认识一下进程 在之前写过的与进程相关的博文中,都把进程看作是只有一个PCB的进程。如图: 而实际上,在Linux中,进程不止一个执行流,而是可能会有几个或很多个。同一个进程中,每一个执行流都指向同一个虚…...
C#基础教程10 方法
C#方法 方法的语法访问修饰符:返回类型:方法名称:参数列表:方法体:返回值:方法的调用参数传递按值传递按引用传递输出参数方法的重载总结方法是C#中最基本的代码结构之一。方法是一组可重复使用的代码,它接受输入,执行一些操作并返回结果。在本教程中,我们将深入了解C…...
java高性能并发计数器之巅峰对决
并发计数器各个方案介绍方案概述1. jdk5提供的原子更新长整型类 AtomicLong2. synchronized3. jdk8提供的 LongAdder 【单机推荐】4. Redisson分布式累加器【分布式推荐】方案介绍jdk5提供的原子更新长整型类 AtomicLong在JDK1.5开始就新增了并发的Integer/Long的操作工具类Ato…...
HTTPS简介
HTTPS是HTTP开启TLS传输协议,客户端要拿到服务端的公钥,用公钥加密数据后再进行传输,防止数据泄露后背篡改。它要解决两个问题:怎么保证公钥可信怎么加密数据公钥可信问题客户端从服务端获取公钥的时候,存在请求被拦截…...
K-means聚类
原理说明 Kmeans是一种常见的聚类算法,用于将相似的数据点归类到不同的群组中。Kmeans的原理如下: 初始化:Kmeans算法首先需要初始化一个用户指定数量的聚类中心点,通常是随机选取K个数据点作为聚类中心点。 分配:对…...
04-SQL基础(表管理,约束,多表连接,子查询)
本文章主要内容 1、表的管理:创建表,修改表结构,删除字段,修改字段,添加字段,删除表,添加表约束; 2、数据管理:新增记录,修改记录,删除记录&…...
统计学 一元线性回归
统计学 一元线性回归 回归(Regression):假定因变量与自变量之间有某种关系,并把这种关系用适当的数学模型表达出来,利用该模型根据给定的自变量来预测因变量 线性回归:因变量和自变量之间是线性关系 非线…...
【软件开发】基于PyQt5开发的标注软件
这里是基于PyQt5写的面向目标检测的各类标注PC端软件系统。目前现有的labelme软件和labelImg开源软件无法满足特殊数据集的标注要求,而且没有标注顺序的报错提示。当然我设计的软件就会不具有适用性了(毕竟从下面开发的软件可以明显看出来我做的基本上是…...
CSS3新特性
CSS3新特性前言css3选择器边框特性背景参考前言 css3作为css的升级版本,css3提供了更加丰富实用的规范。新特性有: css3选择器边框特性多背景图颜色与透明度多列布局与弹性盒模型布局盒子的变形过渡与动画web字体媒体查询阴影 css3选择器 css3选择器…...
35 openEuler搭建repo(yum)服务器-创建、更新本地repo源
文章目录35 openEuler搭建repo(yum)服务器-创建、更新本地repo源35.1 获取ISO发布包35.2 挂载ISO创建repo源35.3 创建本地repo源35.4 更新repo源35 openEuler搭建repo(yum)服务器-创建、更新本地repo源 使用mount挂载,…...
【三.项目引入axios、申明全局变量、设置跨域】
根据前文《二.项目使用vue-router,引入ant-design-vue的UI框架,引入less》搭建好脚手架后使用 需求: 1.项目引入axios 2.申明全局变量 3.设置跨域 简介:axios本质上还是对原生XMLHttpRequest的封装,可用于浏览器和nodejs的HTTP客…...
启动u盘还原成普通u盘(Windows Diskpart)
使用windows系统的diskpart 命令解决系统盘恢复成普通U盘的问题:1. 按Windows R键打开运行窗口。在搜索框中输入“ Diskpart ”,然后按 Enter 键。2. 现在输入“ list disk ”并回车。3. 然后输入“ select disk X ”(将 X 替换为可启动U盘的…...
深入理解机器学习——偏差(Bias)与方差(Variance)
分类目录:《深入理解机器学习》总目录 偏差(Bias)与方差(Variance)是解释学习算法泛化性能的一种重要工具。偏差方差分解试图对学习算法的期望泛化错误率进行拆解,我们知道,算法在不同训练集上学…...
分布式新闻项目实战 - 13.项目部署_持续集成(Jenkins) ^_^ 完结啦 ~
欲买桂花同载酒,终不似,少年游。 系列文章目录 项目搭建App登录及网关App文章自媒体平台(博主后台)自媒体文章审核延迟任务kafka及文章上下架App端文章搜索后台系统管理Long类型精度丢失问题定时计算热点文章(xxl-Job…...
Linux c/c++技术方向分析
一、C与C介绍 1.1 说明 c语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,如嵌入式。C语言能以简易的方式编译、处理低级存储器。是一种高效率程序设计语言。 c(c plus plus)是一种计算机高级程序设计语言&a…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
