当前位置: 首页 > news >正文

Codeforces Round 964 (Div. 4) A~G

封面原图 画师ideolo

A - A+B Again?

题意

给你一个两位数,把他的个位和十位加起来

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;void solve()
{int n;scanf("%d",&n);printf("%d\n",n/10+n%10);
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

B - Card Game

题意

两个人每人两张牌,以任意顺序轮流翻开比大小,问a获胜的可能性种数

思路

一共就4种 枚举一下就行了

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
bool play(int a1,int b1,int a2,int b2)
{int A=0,B=0;if(a1>b1) A++;else if(a1<b1) B++;if(a2>b2) A++;else if(a2<b2) B++;if(A>B) return true;else return false;
}void solve()
{int a1,a2,b1,b2;scanf("%d%d%d%d",&a1,&a2,&b1,&b2);int cnt=0;if(play(a1,b1,a2,b2)) cnt++;if(play(a1,b2,a2,b1)) cnt++;if(play(a2,b1,a1,b2)) cnt++;if(play(a2,b2,a1,b1)) cnt++;printf("%d\n",cnt);
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

C - Showering

题意

一个人每天有很多段时间有不同的工作,问他能否挤出连续m分钟的空闲时间

思路

对所有工作时间排个序然后找中间的空有没有大于m的即可

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;void solve()
{int n,s,m;scanf("%d%d%d",&n,&s,&m);vector<pii> task;for(int i=0;i<n;i++){int l,r;scanf("%d%d",&l,&r);task.push_back({l,r});}task.push_back({0,0});task.push_back({m,m});sort(task.begin(),task.end());for(int i=0;i<=n;i++){if(task[i+1].first-task[i].second>=s){printf("YES\n");return ;}}printf("NO\n");
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

D - Slavic’s Exam

题意

问s里面有没有子串t,其中的问号可以改成任意字母

思路

直接贪心,找到问号就直接变成t的下一个,因为就算后面有我提前变也不会让事情变得更糟糕的

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;void solve()
{string s,t;cin>>s>>t;int n=s.size(),m=t.size();int i=0,j=0;for(;i<n and j<m;i++){if(s[i]==t[j]){j++;}else if(s[i]=='?'){s[i]=t[j];j++;}}if(j<m){cout<<"NO\n";return ;}for(i=0;i<n;i++){if(s[i]=='?'){s[i]='a';}}printf("YES\n");cout<<s<<endl;
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

E - Triple Operations

题意

每次给一个区间,问要做多少次操作才能把区间内所有数变成0,操作是每次选两个数,一个数乘三,一个数除三(向下取整)

思路

任何数乘3肯定都会变大,除了0,所以一开始我一定要创造一个0然后一直薅这一个羊毛就可以了,在他变成0的过程当中就会有一个数字乘了同样多的3,然后后续要把这个变回来,所以第一个数变成0需要的操作数其实是翻倍的,后面的都是只要知道除多少次3变成0就行
一个一个计算太慢了会TLE,我们发现数据范围不大,所以可以提前预处理每个数变成0需要的操作个数,每次给一个区间的话我们还可以对这个预处理的答案跑一遍前缀和,这样的话我们就可以用 O ( 1 ) O(1) O(1)解决每一次询问了

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
int pre[200010];
ll sum[200010];
void ini()
{memset(pre,0,sizeof(pre));for(int i=0;i<=200000;i++){int t=i;while(t>0){t/=3;pre[i]++;}}sum[0]=pre[0];for(int i=1;i<=200000;i++){sum[i]=sum[i-1]+pre[i];}
}void solve()
{int l,r;scanf("%d%d",&l,&r);ll ans=sum[r]-sum[l-1];ans+=pre[l];printf("%lld\n",ans);
}int main()
{int T=1;scanf("%d",&T);ini();while(T--){solve();}return 0;
}

F - Expected Median

题意

给一个0,1构成的数组,问所有长度为k的子串的中位数之和

思路

因为只由0,1构成,而且题目给了k一定是奇数,所以这个数组只要1多中位数就是1,反之也是一样,但0作为中位数没有任何意义,对答案没有贡献,那么有多少子串的1比较多呢?
我们可以使用组合数,假设一共是长度为k,那就在1里面选 ( k − 1 ) / 2 , ( k − 1 ) / 2 + 1 , . . . . . . , k (k-1)/2,(k-1)/2+1, ......,k (k1)/2,(k1)/2+1,......,k个,剩下的选0,这一个过程直接用组合数计算即可

组合数的计算

因为赛时就是这个我不会使得没能拿下ak所以单独拿出来讲一下 我之前用的一直是开二维数组然后用二项式定理预处理 所以赛时写的是这样 喜提WA3

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll MOD=1e9+7;
ll Combine[2010][2010];
void ini()
{memset(Combine,0,sizeof(Combine));for(int i=0;i<=2000;i++){Combine[i][0]=1;for(int j=1;j<=i;j++){Combine[i][j]=Combine[i-1][j]+Combine[i-1][j-1];}}
}
ll C(int n,int m)
{if(m>n)return 0;if(n>=2000 or m>=2000){return C(n-1,m-1)+C(n-1,m);}return Combine[n][m];
}void solve()
{int n,k;scanf("%d%d",&n,&k);int zero=0,one=0;for(int i=0;i<n;i++){int x;scanf("%d",&x);if(x==0)zero++;elseone++;}ll hlf=k/2+1;ll ans=0;for(;hlf<=min(k,one);hlf++){ans+=C(one,hlf)%MOD*C(zero,k-hlf)%MOD;ans%=MOD;}printf("%lld\n",ans);
}int main()
{int T=1;scanf("%d",&T);ini();while(T--){solve();}return 0;
}

至于更高级的算法,我三言两语讲不清楚,丢个acwing的链接吧
在这里插入图片描述

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll MOD=1e9+7;
const int N=2e6+10;
ll fact[N],infact[N];ll qpow(ll a,ll b)
{ll res=1;while(b){if(b&1)res=res*a%MOD;a=a*a%MOD;b>>=1;}return res;
}void ini()
{fact[0]=infact[0]=1;for(int i=1;i<N;i++){fact[i]=fact[i-1]*i%MOD;infact[i]=qpow(fact[i],MOD-2);}
}ll C(ll a,ll b)
{if(a<b)return 0;return fact[a]*infact[b]%MOD*infact[a-b]%MOD;
}void solve()
{int n,k;scanf("%d%d",&n,&k);int zero=0,one=0;for(int i=0;i<n;i++){int x;scanf("%d",&x);if(x==0)zero++;elseone++;}ll hlf=k/2+1;ll ans=0;for(;hlf<=min(k,one);hlf++){ans+=C(one,hlf)%MOD*C(zero,k-hlf)%MOD;ans%=MOD;}printf("%lld\n",ans);
}int main()
{int T=1;scanf("%d",&T);ini();while(T--){solve();}return 0;
}

G - Ruler

题意

隐藏一个数,输入比他小的数不变,但是大于等于它的数的返回值都会加1,现在每次可以问两个数,告诉你他们返回值的乘积,需要在7次询问之内找到隐藏的这个数

思路

问的次数这么少肯定是二分,但是发现这题二分还不够,但是我们每次其实相当于可以问两个数字,所以我们可以直接三分区间,注意写的时候边界处理好就可以了,不要向我一样还wa了一发

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;void solve()
{int l=0,r=1000;while(l<r){int mid=(r-l)/3;int quart1=l+mid,quart2=r-mid;cout<<"? "<<quart1<<" "<<quart2<<"\n";cout.flush();int res;cin>>res;if(res==quart1*quart2)l=quart2+1;else if(res==quart1*(quart2+1)){l=quart1+1,r=quart2;}else if(res==(quart1+1)*(quart2+1)){r=quart1;}}cout<<"! "<<l<<"\n";cout.flush();
}int main()
{int T=1;scanf("%d",&T);while(T--){solve();}return 0;
}

相关文章:

Codeforces Round 964 (Div. 4) A~G

封面原图 画师ideolo A - AB Again? 题意 给你一个两位数&#xff0c;把他的个位和十位加起来 代码 #include <bits/stdc.h> using namespace std; typedef long long ll; typedef double db; typedef pair<int,int> pii; typedef pair<ll,ll> pll;voi…...

单体应用提高性能和处理高并发-使用缓存

要在单体应用中实现高并发&#xff0c;并利用缓存技术来提高性能&#xff0c;需要深入了解缓存的应用场景、选择合适的缓存工具&#xff0c;以及在具体代码中实现缓存策略。以下是详细说明如何在单体应用中使用缓存来处理高并发的内容&#xff0c;包括常见的缓存框架和实际的代…...

ollama教程——使用LangChain调用Ollama接口实现ReAct

ollama入门系列教程简介与目录 相关文章: Ollama教程——入门:开启本地大型语言模型开发之旅Ollama教程——模型:如何将模型高效导入到Ollama框架Ollama教程——兼容OpenAI API:高效利用兼容OpenAI的API进行AI项目开发Ollama教程——使用LangChain:Ollama与LangChain的强强…...

【Bug分析】Keil报错:error: #18:expected a “)“问题解决

【Bug分析】Keil报错&#xff1a;error: #18:expected a “&#xff09;”问题解决 前言bug查找bug解决方法小结 前言 keil编译时出现一个问题&#xff0c;缺少一个右括号。然后仔细查看代码&#xff0c;并没有括号缺失。 如下&#xff0c;代码括号正常。 bug查找 站内文章…...

MAC上设置快捷打开终端以及如何运用剪切快捷键

在Mac上设置一个快捷键&#xff0c;在当前文件夹中打开终端&#xff0c;你可以使用Automator创建一个服务&#xff0c;然后将其分配给一个快捷键。以下是步骤&#xff1a; 1. 创建Automator服务 打开 Automator&#xff08;你可以在应用程序文件夹中找到它&#xff0c;或使用…...

linux docker安装 gitlab后忘记root密码如何找回

1. docker ps - a 查看当前gitlab 当前的id2. docker exec -it gitlab /bin/bash 进入docker git 容器中【gitlab 注意可以上图中的name&#xff0c;也可以是id都可以的】,如下图3.gitlab-rails console -e production 输入该指令&#xff0c;启动Ruby on Rails控制台&…...

C语言典型例题27

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题2.4 用下面的scanf函数输入数据 使a3,b7,x8.5,y71.8,c1A,c2a。问在键盘上怎么输入 代码 //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //习题2.4 用下面的scanf函数输入数据&#xff0c;使…...

clion开发stm32f4系列(一)————移植rt-thread os系统

前言 本次使用的rt-thread的版本为5.0.2基于rt-thread sudio生成的源码进行拷贝和修改工程基于上次创建工程的项目进行修改。本次工程只是用了serial和pin组件,其他后面用到再进行添加 拷贝rt-thread源码库 通过CMakeLists来进行管理 顶级(rt-thread目录) cmake_minimum_req…...

计算机网络(网络层)

网络层概述 网络层是干什么的&#xff1f; 网络层的主要任务是实现不同异构网络互连&#xff0c;进而实现数据包在各网络之间的传输相比于数据链路层的以太网通信&#xff0c;网络层则是将一个个数据链路层连接的以太网通过路由器连接起来。从而实现不同数据链路层的互联。 这…...

Python3 第六十六课 -- CGI编程

目录 一. 什么是 CGI 二. 网页浏览 三. CGI 架构图 四. Web服务器支持及配置 五. 第一个CGI程序 5.1. HTTP 头部 5.2. CGI 环境变量 六. GET和POST方法 6.1. 使用GET方法传输数据 6.1.1. 简单的url实例&#xff1a;GET方法 6.1.2. 简单的表单实例&#xff1a;GET方法…...

【Unity23种设计模式】之状态模式

首先创建一个项目 打开项目后复制至3个场景 命名为 创建一个空物体 命名为GameLoop 创建一个脚本GameLoop.cs 编写代码如下 将代码挂载至空物体GameLoop 将三个场景拖拽至Scenes In Build 分析下状态模式的类图 我们创新类图中的代码 编写ISceneState.cs 编写三个状态子类继承构…...

二叉树刷题,bfs刷题

有些题目&#xff0c;你按照拍脑袋的方式去做&#xff0c;可能发现需要在递归代码中调用其他递归函数计算字数的信息。一般来说&#xff0c;出现这种情况时你可以考虑用后序遍历的思维方式来优化算法&#xff0c;利用后序遍历传递子树的信息&#xff0c;避免过高的时间复杂度。…...

为什么要用分布式锁

单应用中,如果要确保多线程修改同一个资源的安全性 加synchronized就可以了 但是性能不高 而mybatis-plus的乐观锁就可以很好的解决这类问题 但是这样的锁机制,只在单应用中有效 试想,在分布式下,有没有可能出现多个应用中的线程同时去修改同一个数据资源的并发问题 例如A …...

python游戏开发之五子棋游戏制作

五子棋是一种源自中国的传统棋类游戏&#xff0c;起源可以追溯到古代。它是一种两人对弈的游戏&#xff0c;使用棋盘和棋子进行。棋盘通常是一个 1515 的网格&#xff0c;棋子分为黑白两色&#xff0c;双方轮流在棋盘上落子。游戏的目标是通过在棋盘上落子&#xff0c;使自己的…...

文件上传绕过最新版安全狗

本文来源无问社区&#xff0c;更多实战内容&#xff0c;渗透思路可前往查看http://www.wwlib.cn/index.php/artread/artid/9960.html http分块传输绕过 http分块传输⼀直是⼀个很经典的绕过⽅式&#xff0c;只是在近⼏年分块传输⼀直被卡的很死&#xff0c;很多waf都开始加 …...

常用API_2:应用程序编程接口:ArrayList

文章目录 ArrayList常用方法 案例 &#xff1a;上菜 ArrayList 常用方法 来自黑马程序员学习视频 案例 &#xff1a;上菜 待完善...

【Linux操作系统】进程的基本概念(PCB对象)详解

目录 一、进程的基本概念二、进程的描述组织&#xff08;PCB对象&#xff09;1.PCB的基本概念2.为什么要有PCB对象&#xff08;操作系统对进程的组织管理&#xff09;3.PCB对象的内部属性&#xff08;tast_struct结构体&#xff09; 三、查看进程1.ps指令2.top指令3.通过 /proc…...

曙光宁畅中科可控所有服务器机型出厂默认IPMI用户密码

机型 默认IP 用户名/密码 通用 SG机型 DHCP ​admin/admin 通用 KK机型 DHCP ​admin/admin ​ 通用 NC 机型 DHCP ​Admin/Admin5000 I420-G10、I620-G15、I650-G15、I840-GS、I840-G10、I840-G25、I980-G10、A420r-G、A620r-G、A840-G10、TC4600刀片、TC46…...

mysql查线上数据注意数据库的隔离级别

数据库的隔离级别定义了一个事务可能对其他并发事务的可见性&#xff0c;以及它们可能对数据库的影响。隔离级别的选择影响着并发性能和数据的一致性&#xff0c;不同的隔离级别能够防止不同程度的并发问题&#xff0c;如脏读&#xff08;Dirty Reads&#xff09;、不可重复读&…...

【专业解析】移动硬盘能识别却打不开:数据恢复实战指南

在数字化时代&#xff0c;移动硬盘作为我们存储重要数据的主要工具之一&#xff0c;其稳定性和安全性直接关系到信息的完整与便捷访问。然而&#xff0c;不少用户会遇到一个令人头疼的问题&#xff1a;移动硬盘能被电脑识别&#xff0c;但尝试打开时却遭遇失败&#xff0c;这往…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...