2022/7/18 cf训练
Posted 钟钟终
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022/7/18 cf训练相关的知识,希望对你有一定的参考价值。
Mocha and Railgun
本题是思路想错了,但是计算的方式是对的。还是应该回到长度最大是多少这个点来思考。点 Q绕原点旋转,从而使得电磁炮方向竖直向上(即 y 轴正方向),AB在OQ所对应的线段上。
代码:
#include <bits/stdc++.h>
#define int long long
#define endl '\\n'
using namespace std;
double r,x,y,d;
signed main()
int t;cin>>t;
while(t--)
scanf("%lf%lf%lf%lf",&r,&x,&y,&d);
double dis=sqrt(x*x+y*y);
double ans=r*((acos((dis-d)/r))-acos((dis+d)/r));
printf("%.12f\\n",ans);
return 0;
B. Difference of GCDs
看错题意了,我说怎么检查为什么都是错。我以为l~r区间中每个数字只能使用一次,所以开了unordered_map来记录是否出现,强行给题目上了难度。。。可能是因为这段时间有难度的题目看多了
#include<bits/stdc++.h>
#define int long long
#define endl '\\n'
#define pii pair<int,int>
using namespace std;
const int N=1e6+6;
unordered_map<int,int>mp;
int n,l,r,ans[N];
signed main()
int t;cin>>t;
while(t--)
mp.clear();
cin>>n>>l>>r;
int flag=0;
for(int i=1;i<=n;i++)
int k=l/i;
while(mp[k*i]||k*i<l)
k++;
if(k*i<=r&&!mp[k*i])
ans[i]=k*i,mp[k*i]=1;
else
flag=1;break;
if(flag)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
for(int i=1;i<=n;i++)
cout<<ans[i]<<" ";
cout<<endl;
return 0;
ac代码:上述代码注释掉写的多余的map即可
#include<bits/stdc++.h>
#define int long long
#define endl '\\n'
#define pii pair<int,int>
using namespace std;
const int N=1e6+6;
//unordered_map<int,int>mp;
int n,l,r,ans[N];
signed main()
int t;cin>>t;
while(t--)
//mp.clear();
cin>>n>>l>>r;
int flag=0;
for(int i=1;i<=n;i++)
int k=l/i;
while(k*i<l)
k++;
if(k*i<=r)
ans[i]=k*i;
else
flag=1;break;
if(flag)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
for(int i=1;i<=n;i++)
cout<<ans[i]<<" ";
cout<<endl;
return 0;
A. Difference Operations
1.第一个数字若是1,则一定可以满足;
2.若后面2~n的每个数字都是a[1]的倍数也可以实现2 ~n全为0.
#include<bits/stdc++.h>
#define int long long
#define endl '\\n'
#define pii pair<int,int>
using namespace std;
const int N=1e6+6;
//unordered_map<int,int>mp;
int n,a[N];
signed main()
int t;cin>>t;
while(t--)
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
if(a[1]==1)
cout<<"YES"<<endl;
else
int flag=0;
for(int i=2;i<=n;i++)
if(a[i]%a[1]!=0)
flag=1;break;
if(flag)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
return 0;
以上是关于2022/7/18 cf训练的主要内容,如果未能解决你的问题,请参考以下文章