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

Codeforces Round 181 (Rated for Div. 2)

A. Difficult Contest

题目传送门:Problem - A - Codeforces或者CF2125A Difficult Contest - 洛谷

思路分析:

这道题目当时写的时候就大意的认为只要让字符串不是“FFT”或者“NTT”就行,我就直接输出了随机的一串字符串,其实不是这样的,仔细读题目,是要输出排列后没有难度的字符串,那就是要想办法让不让‘F’在‘T’之前,和不让‘N’在‘T’前面,这样操作后就不会再有难度了,核心思路是通过 sort函数先对字符串进行默认的升序排序,再通过 reverse函数将结果反转,从而得到降序排列的字符串,最终直接输出结果。

实现代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se secondvoid slove() {string s;cin >> s;sort(s.begin(), s.end());reverse(s.begin(), s.end());cout << s << endl;
}
signed main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _ = 1;cin >> _;while (_--)slove();return 0;
}

B. Left and Down

题目传送门:Problem - B - Codeforces或者CF2125B Left and Down - 洛谷

思路分析:

这道题目要求我们计算将机器人从初始位置(a,b)移动到原点(0,0)的最小成本。解题的关键在于利用最大公约数(gcd)来简化问题:首先计算a和b的gcd得到t,然后将坐标简化为(a/t,b/t)。如果简化后的两个坐标值都小于等于k,说明可以通过一个成本为1的操作直接到达原点。

例如::a=12,b=18,k=5,

  1. ​计算gcd​​:

    • gcd(12,18)=6

    • 简化坐标:a'=12/6=2,b'=18/6=3

  2. ​判断与k的关系​​:

    • a'=2 ≤5(满足)

    • b'=3 ≤5(满足)

    • 此时输出1(因为可以用一个操作完成)

否则需要至少两个成本为1的操作(总成本为2),因为无法在单次k的限制内完成移动。

例如:

a=30,b=42,k=5

  1. ​计算gcd​​:

    • gcd(30,42)=6

    • 简化坐标:a'=30/6=5,b'=42/6=7

  2. ​判断与k的关系​​:

    • a'=5 ≤5(满足)

    • b'=7 >5(不满足)

    • 此时输出2(因为需要至少两个操作,有步数限制,可以先走到(0,2),再走到(0,0))

实现代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int N=101;void slove(){
int a,b,k;
cin>>a>>b>>k;int t=__gcd(a,b);a=a/t;b=b/t;if(a<=k&&b<=k)cout<<"1"<<endl;elsecout<<"2"<<endl;
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;cin>>_;while(_--)slove();return 0;
}

C. Count Good Numbers

题目传送门:CF2125C Count Good Numbers - 洛谷或者CF2125C Count Good Numbers - 洛谷

思路分析:

这道题目要求计算区间[l, r]内不能被2、3、5、7整除的数的个数。采用容斥原理,通过系统性地加减不同组合的倍数数量来避免重复计算。具体实现是:先计算区间总数,减去所有单个质数的倍数,再加回两两质数的公倍数,接着减去三个质数的公倍数,最后加回四个质数的公倍数。这种方法通过层次化的加减操作精确统计了不满足条件的数的数量,最终用总数减去这个值得出结果。代码中ff函数高效计算区间内能被某数整除的数的个数。

实现代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
const int N=101;
// 计算区间 [l, r] 内能被 x 整除的数的个数
int ff(int l,int r,int x)
{return r/x-(l-1)/x;
}
void slove(){
int t,l,r;
cin>>t;
while(t--)
{
cin>>l>>r;// 容斥原理计算不能被 2、3、5、7 整除的数的个数cout << (r - l + 1)          // 区间总数- ff(l, r, 2)         // 减去能被 2 整除的数- ff(l, r, 3)         // 减去能被 3 整除的数- ff(l, r, 5)         // 减去能被 5 整除的数- ff(l, r, 7)         // 减去能被 7 整除的数+ ff(l, r, 6)         // 加回能被 2 和 3 同时整除的数(即 6 的倍数)+ ff(l, r, 10)        // 加回能被 2 和 5 同时整除的数(即 10 的倍数)+ ff(l, r, 14)        // 加回能被 2 和 7 同时整除的数(即 14 的倍数)+ ff(l, r, 15)        // 加回能被 3 和 5 同时整除的数(即 15 的倍数)+ ff(l, r, 21)        // 加回能被 3 和 7 同时整除的数(即 21 的倍数)+ ff(l, r, 35)        // 加回能被 5 和 7 同时整除的数(即 35 的倍数)- ff(l, r, 30)        // 减去能被 2、3、5 同时整除的数(即 30 的倍数)- ff(l, r, 42)        // 减去能被 2、3、7 同时整除的数(即 42 的倍数)- ff(l, r, 70)        // 减去能被 2、5、7 同时整除的数(即 70 的倍数)- ff(l, r, 105)       // 减去能被 3、5、7 同时整除的数(即 105 的倍数)+ ff(l, r, 210)       // 加回能被 2、3、5、7 同时整除的数(即 210 的倍数)<< endl;
}
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _=1;//cin>>_;while(_--)slove();return 0;
}

http://www.xdnf.cn/news/16245.html

相关文章:

  • Bert项目--新闻标题文本分类
  • DAY31 整数矩阵及其运算
  • 告别镜像拉取慢!CNB无痛加速方案,一键起飞
  • [论文阅读] 人工智能 + 软件工程 | NoCode-bench:评估LLM无代码功能添加能力的新基准
  • JVM常见工具
  • swagger基本注解@Tag、@Operation、@Parameters、@Parameter、@ApiResponse、@Schema
  • 基于图神经网络的星间路由与计算卸载强化学习算法设计与实现
  • 【Linux手册】操作系统如何管理存储在外设上的文件
  • 基于 Claude Code 与 BrowserCat MCP 的浏览器自动化全链路构建实践
  • iOS 26,双版本更新来了
  • 【web大前端】001_前端开发入门:创建你的第一个网页
  • 二十八、【Linux系统域名解析】DNS安装、子域授权、缓存DNS、分离解析、多域名解析
  • 前端开发 Vue 结合Sentry 实现性能监控
  • 配置DNS正反向解析
  • 告别复杂配置!Spring Boot优雅集成百度OCR的终极方案
  • JAVA算法题练习day1
  • 常见代码八股
  • 【深度之眼机器学习笔记】04-01-决策树简介、熵,04-02-条件熵及计算举例,04-03-信息增益、ID3算法
  • 力扣671. 二叉树中第二小的节点
  • Spring框架
  • 【LeetCode刷题指南】--有效的括号
  • Springboot项目实现将文件上传到阿里云
  • 【PyTorch】图像多分类项目
  • Yolo底层原理学习(V1~V3)(第一篇)
  • 2507C++,窗口勾挂事件
  • 我从农村来到了大城市
  • 绘图库 Matplotlib Search
  • C语言案例《猜拳游戏》
  • 【C++进阶】第7课—红黑树
  • ZYNQ芯片,SPI驱动开发自学全解析个人笔记【FPGA】【赛灵思】