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

20250507训练赛补题

A.chmod

题目链接:Problem - A - Codeforces


题目大意:数字0-7中化为二进制,当当前位置为0的时候用 ‘ - ’ 代替,不然的话三位数分别用rwx进行替代。

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+1;
#define int long long
int a[N];
string s;
string ch[]={"---","--x","-w-","-wx","r--","r-x","rw-","rwx"};//每个数字对应的串直接存起来
string s1;
void solve()
{cin >> s;for(int i=0; i<s.size(); i++)s1+=ch[(s[i]-'0')];cout << s1 << endl;s1.clear(),s.clear();
}
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;t=1;cin >> t;while(t--) solve(); 
}

F.Try a Try,AC is OK

由于要使两个值的&运算取最大值,通过样例不难发现,自己与自己做&运算还是自己,那么不妨直接让序列中最大的那个元素和自己做&运算,这个时候就是最大的情况了。

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+1;
#define int long long
int a[N]; 
void solve()
{int n;cin >> n;for(int i=1; i<=n; i++) cin >> a[i];sort(a+1,a+1+n);cout << a[n] << endl; 
}
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int t;t=1;cin >> t;while(t--) solve(); 
}

G.Disappear Number

题目链接:Problem - G - Codeforces

题目意思非常的清楚。具体步骤在代码注释中进行详细指出

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 101;
#define int long long
typedef long long ll;
//int a[N];
string s;
int n;
int a[N];
vector<int> v;
void solve()
{	//for(auto i:v) cout << i << ' ';//v.clear();a[1]=1;a[2]=19;for(int i=3; i<=18; i++)a[i]=a[i-1]*9+pow(10,i-1);//推一下规律//for(int i=1; i<=18; i++) cout << a[i] << ' ';ll k;string m;cin>>m>>k;ll sum[22];ll sum1=0;for(ll i=0;i<m.size();i++){sum[i]=m[i]-'0';sum1*=10;sum1+=sum[i];}//将字符串转换为数字形式ll len=log10(sum1)+1;ll k1=0;ll h=-1;for(ll i=0;i<m.size();i++){if(sum[i]==k)//对这个数字进行查找,如果找到目标的数字,将这个数字的位置记录下来h=i;}if(h!=-1)//如果序列里有这个数的话{for(ll i=h+1;i<m.size();i++)//从这个地方之后的值给截下来{k1*=10;k1+=sum[i];}for(ll i=0;i<=h;i++)//对数字之前的数位进行处理{if(sum[i]>k)k1+=a[len]-(10-sum[i])*a[len-1];//对于每一位根据前边推的规律直接加上对应的个数else if(sum[i]<=k)k1+=a[len-1]*sum[i];len--;}}else if(h==-1)//如果序列中没有目标数字,就直接对整个数字进行处理,和前面的一样{for(ll i=0;i<m.size();i++){if(sum[i]>k)k1+=a[len]-(10-sum[i])*a[len-1];else if(sum[i]<=k)k1+=a[len-1]*sum[i];len--;}}cout<<sum1-k1+1<<endl;
}
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
//	t=1;int t;cin >> t;while(t--) solve(); 
}

M.Window Decoration

题目链接:Problem - M - Codeforces



题目大意:在100*100的大窗口里有若干个如图的小菱形,但是有可能重叠。想让求出所有菱形覆盖的面积是多少。

思路:由图可见:重叠的可能只有两种:1/4小正方形或者一整个小正方形。那么我们用一个二维数组来存每个小菱形的中心,对于每个小菱形对它的四个角进行遍历,如果他的四个角是其他菱形的中心,那么就会有1/4是重合的。如果此时的小菱形中心已经被标记过,那就说明两个小菱形是完全重合的,直接跳过就行了。

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 101;
#define int long long
int n;
int a[N][N];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
void solve()
{int x,y;double sum=n*2;for(int i=1; i<=n; i++){cin >> x >> y;if(a[x][y]) {sum-=2;continue;}a[x][y]=1;for(int i=0; i<4; i++){int tx=x+dx[i];int ty=y+dy[i];if(a[tx][ty]) sum-=0.5;}}cout << fixed << setprecision(10) << sum << endl;
}
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
//	t=1;cin >> n;solve(); 
}

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

相关文章:

  • CCF BDCI基于运营商文本数据的知识库检索(RAG)大赛亚军方案分享
  • 联排半孔PCB如何进行SMT贴片?
  • SymPy | 如何提取指定项的系数
  • 【CTFer成长之路】命令执行RCE
  • 动态规划问题 -- 多状态模型(粉刷房子)
  • ⭐️⭐️⭐️【课时6:如何创建工作流应用】学习总结 ⭐️⭐️⭐️ for《大模型Clouder认证:基于百炼平台构建智能体应用》认证
  • 基于Cholesky分解求解逆矩阵
  • 【autojs】图色识别状态条
  • java课堂笔记6
  • 高并发场景下的数据一致性问题
  • 魔改离线VLLM
  • 在RAG中 如何提高向量搜索的准确性?
  • STC32G12K128实战:串口通信
  • 旗舰PCIe 5.0新宠:系统盘与副盘如何选?金士顿Kingston FURY Renegade G5 SSD深度解析与分区建议
  • 【言语】刷题4
  • 计算机过程控制干燥操作实训装置JG-SX210化工单元操作实训装置
  • archliunx关闭自动休眠
  • 【GESP真题解析】第 4 集 GESP一级 2023 年 3 月编程题 1:每月天数
  • c#队列及其操作
  • Redis缓存穿透、雪崩、击穿的解决方案?
  • WinFrom 使用 LiveCharts 实现动态折线图
  • 常用正则记录
  • 抽奖系统-奖品-活动
  • 外贸礼品禁忌
  • 【SSL证书系列】SSL证书工作原理解读
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(21):复习
  • 【测试开发知识储备】之Jacoco(Java Code Coverage)
  • SVNAdmin管理使用教程
  • Problem E: List练习
  • 力扣刷题(第二十六天)