23.3.9打卡 AtCoder Beginner Contest 259

news/2024/11/15 1:31:03/

A题

A

题解

对于x特判一下就好

代码

void solve()
{ll x,d;cin>>n>>m>>x>>t>>d;if(n>m){n=min(n,x);if(n<m){cout<<t;return;}cout<<(m-n)*d+t;}else{m=min(m,x);cout<<(m-n)*d+t;}return;
}

B

B
三角函数全还给高中老师了哭

题解

上图!
B题解
根据上图的结论, 可以得到

 x=a*cos(d)-b*sin(d);y=a*sin(d)+b*cos(d);

代码

void solve()
{cin>>n>>m>>cnt;double s=2.0*M_PI*cnt/360;double x,y;x=1.0*n*cos(s)-1.0*m*sin(s);y=1.0*n*sin(s)+1.0*m*cos(s);// cout<<<<endl;printf("%.8lf %.8lf",x,y);return;
}

C

翻译的题面有点错误, 这里就不放图了

题意

给出两个串a和b, 可以在a中任意两个相同的字符中插入一个相同的字符, 问是否可以使得a==b

题解

双指针
从下标0开始, a和b串都直接向后找不同的字符并记录相同的字符串有多少个
假设a向后找到第一一个与前面不同的字符为a1
       b向后找到第一一个与前面不同的字符为b1
a中相同的字符数量为a2
b中相同的字符数量为b2

  1. a1!=b1 显而易见 此时再怎么操作也不可能使得a==b
  2. a2=0且b2=0 不需要操作
  3. a2>0且b2>0且a2<b2 将a2操作到a2==b2为止即可
  4. a2=0且b2>0 无法操作但却需要操作的情况
  5. a2>0&&b2>0&&a2>b2 操作只能添加不能减少
  6. 最后需要特判b的指针是否走到了终点

1 4 5都是错误的, 6需要额外判断

代码

写的什么一坨屎, 没有技巧只有特判是吧

void solve()
{cin>>s1>>s2;cnt=s2.size();ll j=0;for(int i=0;i<s1.size();i++){ll a,b;a=b=0;while(i<s1.size()-1&&s1[i]==s1[i+1]){a++;i++;} while(j<s2.size()-1&&s2[j]==s2[j+1]){b++;j++;}// cout<<i<<s1[i]<<' '<<j<<s2[j]<<endl;if(s1[i]!=s2[j]) {noreturn;}if(a==0&&b>0){noreturn;}if(a>b){noreturn;}j++;}if(j!=s2.size()) {noreturn;}yesreturn;
}

D

D

题意

有n个圆, s点和t点都在某两个圆上, 问s0是否能通过圆周走到t位置

题解

暴力n2n^{2}n2求每两个圆之间是否连通, 使用并查集存储连通的状态
有点像kruskal但并不需要求最小只需要连通 (那不就是单纯的并查集吗)

代码

ll find(ll x)
{if(x!=arr[x]) arr[x]=find(arr[x]);return arr[x];
}ll cal(ll x)
{return x*x;
}void solve()
{cin>>n;ll sx,sy,tx,ty,ans1,ans2;cin>>sx>>sy>>tx>>ty;rep(i,1,n) cin>>x[i]>>y[i]>>r[i];rep(i,1,n){arr[i]=i;if(cal(x[i]-sx)+cal(y[i]-sy)==cal(r[i])) ans1=i;if(cal(x[i]-tx)+cal(y[i]-ty)==cal(r[i])) ans2=i;}rep(i,1,n)rep(j,i+1,n){if(cal(x[i]-x[j])+cal(y[i]-y[j])>cal(r[i]+r[j])) continue;if(cal(x[i]-x[j])+cal(y[i]-y[j])<cal(r[i]-r[j])) continue;ll a,b;a=find(i);b=find(j);arr[a]=b;}if(find(ans1)==find(ans2)) yeselse noreturn;
}

e题只能说是看都没看


http://www.ppmy.cn/news/31400.html

相关文章

【springmvc】执行流程

SpringMVC执行流程 原理图 1、SpringMVC常用组件 DispatcherServlet&#xff1a;前端控制器&#xff0c;不需要工程师开发&#xff0c;由框架提供 作用&#xff1a;统一处理请求和响应&#xff0c;整个流程控制的中心&#xff0c;由它调用其它组件处理用户的请求 HandlerMa…

堆的应用(topk问题)

文章目录1.堆排序1.1代码实现2. TOP-K问题2.1原理2.2实例分析1.堆排序 堆排序即利用堆的思想来进行排序&#xff0c;总共分为两个步骤&#xff1a; 1.建堆 升序&#xff1a;大堆 降序&#xff1a;小堆 2.利用堆删除思想来排序 1.1代码实现 void Heapsort(int* a, int n) {f…

Volatile关键字

Volatile关键字和JMM内存模型一JUC并发包API 包介绍二JMM&#xff08;Java Memory Model&#xff09;三 volatile关键字3.1.可⻅性3.1.1.问题演示3.1.1.1案例代码3.1.1.2.案例分析3.1.2.volatile 保证可见性演示3.1.2.1对number添加了volatile修饰3.1.2.2运⾏结果是&#xff1a…

Echarts数据可视化图表设计 学习笔记 python

&#x1f4e3; 概况 Echarts 是一个由百度开源的数据可视化&#xff0c;凭借着良好的交互性&#xff0c;精巧的图表设计&#xff0c;得到了众多开发者的认可。而 Python 是一门富有表达力的语言&#xff0c;很适合用于数据处理。当数据分析遇上数据可视化时&#xff0c;pyechar…

【GNN/深度学习】常用的图数据集(资源包)

【GNN/深度学习】常用的图数据集&#xff08;图结构&#xff09; 文章目录【GNN/深度学习】常用的图数据集&#xff08;图结构&#xff09;1. 介绍2. 图数据集2.1 Cora2.2 Citeseer2.3 Pubmed2.4 DBLP2.5 ACM2.6 AMAP & AMAC2.7 WIKI2.8 COCS2.9 BAT2.10 EAT2.11 UAT2.12 C…

C++基础——C++面向对象之数据封装、数据抽象与接口基础总结

【系列专栏】&#xff1a;博主结合工作实践输出的&#xff0c;解决实际问题的专栏&#xff0c;朋友们看过来&#xff01; 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实…

从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell

从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell 一、MongoDB基本概念二、文档三、集合1.动态模式2.命名四、数据库五、MongoDB shell1.运行shell2.连接远程MongoDB数据库3.shell中的基本操作六、数据类型1.基本数据类…

Java开发 - 消息队列前瞻

前言 学完了Redis&#xff0c;那你一定不能错过消息队列&#xff0c;要说他俩之间的关联&#xff1f;关联是有的&#xff0c;但也不见得很大&#xff0c;只是他们都是大数据领域常用的一种工具&#xff0c;一种用来提高程序运行效率的工具。常见于高并发&#xff0c;大数据&am…