Codeforces Round #750 (Div. 2) a-d

news/2025/2/10 22:42:59/

Codeforces Round #750

  • A. Luntik and Concerts
  • B. Luntik and Subsequences
  • C. Grandma Capa Knits a Scarf
  • D. Vupsen, Pupsen and 0
  • E. Pchelyonok and Segments

A. Luntik and Concerts

题目

题意
有a个1 b个2 c个3 现在将这些数分成两组 问两组的和 最小的差值是多少

思路
计算数的总和 是否能被2整除 能整除的就是0 不能被整除的就是1

代码

#include<iostream>using namespace std;
typedef long long ll;
ll t,a,b,c;int main()
{ios::sync_with_stdio(false);cin>>t;while(t--){cin>>a>>b>>c;cout<<(a+b*2+c*3)%2<<endl;}return 0;
}

B. Luntik and Subsequences

题目

题意
给一个数组 数字总和和为s 问数组有多少个子数组的数字和为s-1

思路
子数组和为s-1 必然是原数组减去一个1 所以首先记录原数组有多少个1
子数组减去任意个0和都不变 计算0的个数cnt对每个1的贡献值 2^cnt次
相乘得出结果

代码

#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;ll t,n,te;int main()
{ios::sync_with_stdio(false);cin>>t;while(t--){ll num1=0,num0=0;cin>>n;for(int i=0;i<n;i++){cin>>te;if(te==1)num1++;else if(te==0)num0++;}if(num1){cout<<num1*(1ll<<num0)<<endl;}elsecout<<0<<endl;}return 0;
}

C. Grandma Capa Knits a Scarf

题目

题意
给一个字符串 删除任意个 一种字母使它成为回文串 问最少删除几个字符能变成回文串 不能输出 -1

思路
用a到z去尝试 从字符串两边向中间去匹配 两边相同就向中间走 如果有一边等于当前尝试的字符 就尝试去删除(跳过这一位 让下一位跟另一边相匹配) 否则就表示不能通过删除当前字符使得原串变成回文串

代码

#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;ll t,n,te;
string s;int main()
{ios::sync_with_stdio(false);cin>>t;while(t--){cin>>n;cin>>s;int mmin=n+1;for(char i='a';i<='z';i++){int ans=0,l=0,r=n-1,flag=1;while(l<r){if(s[l]==s[r]){l++;r--;}else if(s[l]==i){l++;ans++;}else if(s[r]==i){r--;ans++;}else{flag=0;break;}}if(flag)mmin=min(ans,mmin);}if(mmin>n)mmin=-1;cout<<mmin<<endl;}return 0;
}

D. Vupsen, Pupsen and 0

题目

题意
给一个长度为n不含0的数组a 现要求找到另一个不含0的数组b 使得sum(a1xb1+ …aixbi…)和为0 同时要求sum(b1+b2+…)和不超过1e9

思路
已知 任意一个数x其他数的和=其他每个数x这个数 的和
同时 也可以采用两两抵消的原则
综合以上两种思路 当n%2==0就采用两两抵消
否则就让其中3个数进行策略1(求两个和不为0的值 让第3个数对应的bi=这个值取反 其他两个数的bi=第3个数)

代码

#include<iostream>
#include<cmath>
#define N 100005
using namespace std;
typedef long long ll;ll t,n,te,a[N];
string s;int main()
{ios::sync_with_stdio(false);cin>>t;while(t--){ll sum=0,mmin=200005;int flag=0;cin>>n;for(int i=0;i<n;i++){cin>>a[i];sum+=a[i];}for(int i=0;i<n;i++){if(sum-a[i]!=0&&mmin>a[i]){flag=i;mmin=a[i];}}//ll ssum=0;if(n%2==0){for(int i=0;i<n;i+=2){cout<<-a[i+1]<<" "<<a[i]<<" ";}cout<<endl;continue;}for(int i=0;i<n-3;i+=2){cout<<-a[i+1]<<" "<<a[i]<<" ";}if(a[n-1]+a[n-2]!=0){cout<<-(a[n-1]+a[n-2])<<" "<<a[n-3]<<" "<<a[n-3]<<endl;}else if(a[n-2]+a[n-3]!=0){cout<<a[n-1]<<" "<<a[n-1]<<" "<<-(a[n-2]+a[n-3])<<endl;}else{cout<<a[n-2]<<" "<<-(a[n-1]+a[n-3])<<" "<<a[n-2]<<endl;}}return 0;
}

E. Pchelyonok and Segments

题目

题意
给一个数组a 切成k个非重叠片段 前面的片段比后面相邻的片段长度长1 且片段总和严格递增 问k的最大值

思路
逆序看 是一个 长度不断增加 值不断减小的dp

代码

#include<iostream>
#include<cmath>
#include<cstring>
#define N 100005
using namespace std;
typedef long long ll;ll t,n,te,a[N],sum[N],dp[N][455];
string s;int main()
{ios::sync_with_stdio(false);cin>>t;while(t--){cin>>n;sum[0]=0;a[0]=0;for(int i=1;i<=n;i++){cin>>a[i];sum[i]=sum[i-1]+a[i];}for(int i=1;i<=n+1;i++){for(int j=1;j<450;j++)dp[i][j]=0;}dp[n][1]=a[n];int ans=-1;for(int i=n;i>=1;i--){for(int j=1;j<450;j++){if(i+j-1>n)continue;te=sum[i+j-1]-sum[i-1];if(dp[i+j][j-1]>te||j==1){dp[i][j]=te;ans=max(ans,j);}dp[i][j]=max(dp[i+1][j],dp[i][j]);}}cout<<ans<<'\n';}return 0;}

http://www.ppmy.cn/news/120238.html

相关文章

Mathmen、Codeforces Round #750 (Div. 2)

昨天的一道题&#xff0c;Mathmen。 Mathmen&#xff08;贪心&#xff0c;二分&#xff09; 题意&#xff1a; 给定n个位置&#xff0c;和m个船只&#xff0c;要从一个位置到后面一个位置挨个走。 每只船只都有两种属性&#xff1a;行驶距离和花费。 每个位置都有m条船&…

Codeforces Round #750 (Div. 2) - B. Luntik and Subsequences - 题解

目录 Codeforces Round #750 (Div. 2) - B. Luntik and SubsequencesProblem DescriptionInputSample InputSample OnputNote 题目大意解题思路AC代码 Codeforces Round #750 (Div. 2) - B. Luntik and Subsequences 传送门 Time Limit: 1 seconds Memory Limit: 256 megabyte…

性能分析之TPS从300到750的过程

文章目录 背景问题1&#xff1a;TPS呈锯齿状&#xff0c;忽高忽低问题2&#xff1a;调整数据库参数问题3&#xff1a;网络队列问题4&#xff1a;网络带宽不足问题5&#xff1a;数据问题结论 背景 前几天在 7DGroup 的群中&#xff0c;小鹏同学提了一个问题。 群里一顿讨论。终…

STM32H743/750+Cube+DP83848(一)

首个菜鸟博客&#xff0c;大哥们轻点喷 上重点&#xff1a;开发环境不管是CubeIDE&#xff08;IDE生成的程序只能IDE编译&#xff09;还是CubeMX&#xff08;它只是生成工具&#xff0c;不能编译&#xff0c;要用MDK或者IAR等&#xff0c;吐槽一下&#xff0c;MX生成后很多用不…

DMS感知方案前装赛道「排位」,2025年750万辆市场争夺

对舱内驾驶员、乘客的关怀&#xff0c;正在成为车企新一轮体验升级的关键突破口。在2023年CES展上&#xff0c;类似的产品方案也成为汽车行业的焦点。 比如&#xff0c;一家名为Myant的创新材料技术公司&#xff0c;在今年CES期间推出了一款将传感器和执行器&#xff08;与编织…

Swift AsyncSequence — 代码实例详解

文章目录 前言什么是 AsyncSequence?创建 AsyncSequence异步序列的迭代结论 前言 AsyncSequence 是并发性框架和 SE-298 提案的一部分。它的名字意味着它是一个提供异步、顺序和迭代访问其元素的类型。换句话说&#xff1a;它是我们在 Swift 中熟悉的常规序列的一个异步变体。…

50-75

数组 概念&#xff1a;数据的集合 数据类型分类 创建数组&#xff1a;[] push 在数组末尾追加一个元素 pop 用来删除数组最后一个元素 unshift 向数组开头添加一个或者多个元素&#xff0c;并返回新的新租长度 shift 可以删除数组的第一个元素&#xff0c;并将删除的作为返…

linux chmod 755 ,750,777设置原理

chmod是Linux下设置文件夹权限的命令&#xff0c;后面一般跟三个数据&#xff0c;代表不用用户群体在这个文件夹上的权限设置&#xff1a; 一般是三个数字&#xff1a; chmod 750 dir_wzg 第一个数字表示文件所有者的权限 第二个数字表示文件所有者同属一个用户组的其他用户在…