[Educational Codeforces Round 176 (Rated for Div. 2)](https://codeforces.com/contest/2075) (AB,补C)

news/2025/3/18 20:32:59/文章来源:https://www.cnblogs.com/graspppp/p/18779708

Educational Codeforces Round 176 (Rated for Div. 2) (AB,补C)

A

idea:(因为没注意到k只能为奇数的惨案qaq)

因为奇-奇=偶,偶-偶=偶

所以只需要判断n的奇偶然后先进行一次操作即可

#include<bits/stdc++.h>
#define N 1005
#define mod 998244353
using namespace std;
typedef long long ll;void solve()
{int n,k;cin>>n>>k;ll ans = 0;if(n&1==1){n-=k;ans++;}k--;ans += (n+k-1)/k;cout<<ans<<"\n";
}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int T = 1;cin>>T;while(T--)solve();return 0;
}

B:

注意到当k>=2的时候,任何情况下都能选前k+1个最大的(手上操作一下即可)

所以只需要特判k==1的情况(要不是被A卡了半年,一把就绿了,唉唉,这B能评1400有点虚高了)

#include<bits/stdc++.h>
#define N 1005
#define mod 998244353
using namespace std;
#define int long long
typedef long long ll;void solve()
{int n,k;cin>>n>>k;ll ans = 0;vector<int>a(n+1);for(int i = 1;i <= n;i++)   {cin>>a[i];}if(k==1){for(int i = 2;i < n;i++){ans = max(ans,a[i]+max(a[1],a[n]));}ans = max(ans,a[1]+a[n]);}else{ans = 0;sort(a.begin()+1,a.end(),greater<int>());for(int i = 1;i <= k+1;i++){ans+=a[i];}}cout<<ans<<"\n";
}
signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int T = 1;cin>>T;while(T--)solve();return 0;
}

C:先补一下前缀预处理的写法

idea1:假设现在两种颜色,第一种选i,则第二种选n-i个,那么对每一种都这么考虑必定tle,

现在进行这样一种操作,将每个>=a[i]的用数组Num存储进行后缀和,表示现在有多少数量大于等于i的木板,当选a[i]块木板满足时,那么少选这块木板也能满足条件,e.g:对第三个样例

12 3
5 9 8

当选 i = 4;n - i = 8的时候,如果不选a[1],那么因为≥8的有8和9,所以选2:3也可以,只要a[n-i]>0

再进一步考虑,将区间划分为[i,n-i+1]和[n-i,n](因为(3,9)和(9,3)是两种选法),但只需要考虑[i,n-i-1]即可,最终将ans*2就可以解决重复计算的问题。

那么如何计算?

对于这一组样例,如果选4:8个,那么能选4的为c(1,3),能选8的为c(1,2);

假设第一种选x个,那么x = num[i] - num[n-i];(表示有多少个木板数量>=i的)

第二种则设为y = num[n-i],最终答案为ans += x×y + y×(y-1),//后面的是表示从>=i的木板中任选两块

如果i == n-i时,会出现重复,ans += x×y + y×(y-1)/2;

#include<bits/stdc++.h>
#define mod 998244353
using namespace std;
typedef long long ll;
#define int unsigned long long
int num[200005];
int N = 0;
void solve()
{int n,m;cin>>n>>m;int h = max(n,m);//T范围较大,防爆for(int i = 1;i <= h;i++)	num[i] = 0;//别用memsetvector<int>a(m+1);for(int i = 1;i <= m;i++){cin>>a[i];num[a[i]]++;} for(int i = n-1;i >= 1;i--){num[i] += num[i+1];//预处理后缀和}int ans = 0;//1 : n-i  选i个,另一个选n-i个, ans += x*y+y*(y-1);//i==n-i  /2for(int i = 1;i <= n-i; i++){int x = num[i] - num[n-i],y = num[n-i];if(i != n - i)	ans += x*y + y*(y-1);else	ans += x*y + y*(y-1)/2;}cout<<ans*2<<"\n";}
signed main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int T = 1;cin>>T;while(T--)solve();return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML打包工具EXE工具一机一码激活码计算器小程序版

近期我们收到一些HTML一键打包EXE工具老用户反馈, 他们在使用一机一码离线功能的时候, 遇到如下的问题:外调试时突然需要激活码,手边没电脑急死人!客户现场网络受限,手机能操作就好了每次都要开电脑太麻烦,能移动端解决吗? 解决方案 针对用户集中反馈的"离线激活码…

20222227 实验一《Python程序设计》实验报告

20222227 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2222 姓名: 赫连紫阳 学号: 20222227 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 一、实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的…

【STM32】超好用的开源按键状态系统lwbtn,以及超详细的移植教程

在 button_event_handler 按钮事件处理函数中,按键按下分为:按下,释放;按下类型又分为:单击、双击、持续按下。 这每一个状态/事件,进行过后,其都会进行一次回调,即回到主函数一次,故也是分为了1、按下 2、释放 3、单击 4、双击 5、持续按下 五个回调状态。 你可以在 …

rp2040笔记[1]-使用embassy实现呼吸灯并通过命令行切换状态

使用rust的embassy在rp2040芯片核心板实现呼吸灯.摘要 使用rust的embassy在rp2040芯片核心板实现呼吸灯. 关键词 rust;embassy;rp2040;blink;pwm; 关键信息项目地址:[https://github.com/ByeIO/byeefree.rp2040_quad.embassy][package] edition = "2021" name = &quo…

014 登入页-Element-Plus的图标引入和使用

1、安装图标 2、使用 这里我们用全局注册的方法 放到这里 现在我们换一种方式 在src文件夹里面 新建文件夹global,都是一些全局的东西(这个就叫全局注册) 新建文件register-icons.ts (注册图标)这页这样写这段代码是使用 JavaScript(或可能是 TypeScript,从 app: any…

20242405 实验一《Python程序设计》实验报告

20242405 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2424 姓名: 孙煜麟 学号:20242405 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能 3.编写程序,练习…

day:24 python——类的三大特性

python三大特性:封装,多态,继承 一、封装: 1、封装:封装就是隐藏对象一些不希望外部所访问到的属性和方法,保证安全 2、概念:指的是在设计时,不对外提供,隐藏起来,提供公共方法以外对其方法就是把属性和方法封装到一个抽象的类中, 3、封装相当于一个黑盒子,我们将事务相…

探秘Transformer系列之(15)--- 采样和输出

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(15)--- 采样和输出 目录探秘Transformer系列之(15)--- 采样和输出…

c语言02_数据类型上

一、c是怎么变成汇编的 1、裸函数是编译器不管的 ⑴写一个空函数(里面什么都不写),f7f5打开反汇编f11打开jmp什么都没写里面还是有一大堆(是编译器和连接器做的)⑵裸函数f7f5查看反汇编找到调用的函数0040D708f11打开再f11打开,里面一行汇编代码都没有⑶ ①空函数 f7f5运…

win11家庭版24H2,使用VMware虚拟机问题

一、安装VMware,提示 “安装程序检测到主机启用了 Hyper-v或 Device/credential Guard。。。”,我勾选了自动安装WHP后点击下一步,完成了VMware的安装。二、解压了一个虚拟机,用VMware打开并选择已复制虚拟机,出现“此平台不支持虚拟化”的错误,点击“是”也无法打开虚拟…

M-LAG

一、M-LAG简介 1.1 M-LAG使用场景​ M-LAG(Multichassis Link Aggregation Group)即跨设备链路聚合组,是一种实现跨设备链路聚合的机制。M-LAG主要应用于普通以太网络、VXLAN和IP网络的双归接入,可以起到负载分担或备份保护的作用。相较于另一种常见的可靠性接入技术——堆…