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

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(); 
}

相关文章:

  • Doris与ClickHouse深度比较
  • vue 去掉右边table的下拉条与下面的白色边框并补充满
  • 数据库基础复习笔记
  • 如何实现一个运动会计分系统?(C语言版)
  • 首个专业AI设计Agent发布-Lovart
  • 鸿蒙OSUniApp制作一个小巧的图片浏览器#三方框架 #Uniapp
  • 深入浅出入侵检测系统(IDS)的工作原理与应用场景
  • 第二章:CSS秘典 · 色彩与布局的力量
  • 如何开发一款 Chrome 浏览器插件
  • 通过泛域名解析把二级域名批量绑定到wordpress的指定页面
  • Java 大视界——Java 大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
  • 分布式1(cap base理论 锁 事务 幂等性 rpc)
  • .Net HttpClient 使用代理功能
  • elpis-core: 基于 Koa 实现 web 服务引擎架构设计解析
  • 应用层协议简介:以 HTTP 和 MQTT 为例
  • STM32 实时时钟(RTC)详解
  • HTTP GET报文解读
  • 胶片转场视频剪辑思路
  • 国产 ETL 数据集成厂商推荐—谷云科技 RestCloud
  • Axure设计之内联框架切换页面、子页面间跳转问题
  • A股午后拉升,沪指收复3400点:大金融发力,两市成交超1.3万亿元
  • 国际能源署:全球电动汽车市场强劲增长,中国市场继续领跑
  • 王毅谈中拉论坛第四届部长级会议重要共识
  • 中保协发布《保险机构适老服务规范》,全面规范保险机构面向老年人提供服务的统一标准
  • 福建厦门市副市长、市公安局局长陈育煌出任吉林省公安厅厅长
  • 新闻1+1丨婚姻登记服务,如何跑出幸福加速度?