Educational Codeforces Round 1(远古edu计划)

2024-02-13 09:36

本文主要是介绍Educational Codeforces Round 1(远古edu计划),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

A.

高斯求和,如果2次幂小于n就减2次

#include<bits/stdc++.h>
#define INF 1e9
using namespace std;
typedef long long ll;
const int N=2e5+9;
int a[N];
int f[N],vis[N];
ll sn(ll a1,ll an,ll num){return (a1+an)*num/2;}
void init(){f[1]=1;for(int i=2;i<=32;i++){f[i]=f[i-1]*2;}
}
void lan(){ll n;cin>>n;ll ans=0;ans=sn(1,n,n);int pos=1;while(f[pos]<=n){ans-=f[pos]*2;pos++;}cout<<ans<<'\n';}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);init();int q;cin>>q;while(q--){lan();}return 0;
}

B.

知道周期是r-l+1,模拟一下就好了,超过周期mod一下

学到了一个rotate(起始点的前一个,终止点,旋转到这个点的后面,之前的片段删除)

#include<bits/stdc++.h>
#define INF 1e9
using namespace std;
typedef long long ll;
const int N=2e5+9;
char t[N];
string s;
void work(int l,int r,int k){//模拟过程int len=r-l+1;//周期是长度for(int i=l;i<=r;i++){t[(i-l+k)%len]=s[i];//模拟移动超过k回到l自然modlen}for(int i=l;i<=r;i++){s[i]=t[i-l];//转移}return;
}
void lan(){cin>>s;int m;cin>>m;while(m--){int l,r,k;cin>>l>>r>>k;//l从1开始,s从0开始要对应索引work(l-1,r-1,k);// rotate(s.begin()+l-1,s.begin()+r-k,s.begin()+r);}cout<<s<<'\n';
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int q=1;while(q--){lan();}return 0;
}

C.

极角排序,找最小的差值即可

1.atan

#include<bits/stdc++.h>
using namespace std;
typedef long double ld;//防止精度问题
const int N=2e5+9;
const ld pi=acos(-1);//arccos-1==pi,cos(pi)==-1
struct node{int x,y,id;ld ang;//弧度
}a[N];
bool cmp(node a,node b){return a.ang<b.ang;//极角排序
}
ld calc(node x){ld xi=abs(x.x),yi=abs(x.y);if(x.x>=0&&x.y>=0) return atan(xi/yi)*180/pi;//第一象限if(x.x>=0&&x.y<0) return atan(yi/xi)*180/pi+90;//第二象限if(x.x<0&&x.y<0) return atan(xi/yi)*180/pi+180;//第三象限if(x.x<0&&x.y>=0) return atan(yi/xi)*180/pi+270;//第四象限
}
void lan(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].x>>a[i].y;a[i].id=i;}for(int i=1;i<=n;i++){a[i].ang=calc(a[i]);}sort(a+1,a+1+n,cmp);int pos=n;ld ans=min(a[n].ang-a[1].ang,360-a[n].ang+a[1].ang);for(int i=1;i<=n-1;i++){ld res=min(a[i+1].ang-a[i].ang,360-a[i+1].ang+a[i].ang);if(res<ans){//找差值小的ans=res;pos=i;}}cout<<a[pos].id<<" "<<a[pos%n+1].id<<'\n';
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int q=1;while(q--){lan();}return 0;
}

2.atan2

#include<bits/stdc++.h>
#define INF 1e9
using namespace std;
typedef long double ld;
vector<pair<ld,int> > a;
int n,ansx,ansy;
ld sum=INF;
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);int n;cin>>n;for(int i=0;i<n;i++){ld x,y;cin>>x>>y;a.push_back({atan2(y,x),i+1});//辐角}sort(a.begin(),a.end());//排序a.push_back(a[0]);for(int i=0;i<n;i++){ld x=a[i+1].first-a[i].first;if(x<0)x+=2*acos(-1);//加一个周期if(x<sum)sum=x,ansx=a[i].second,ansy=a[i+1].second;//找最小差值}printf("%d %d",ansx,ansy);return 0;
}

这篇关于Educational Codeforces Round 1(远古edu计划)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705156

相关文章

Codeforces Round #240 (Div. 2) E分治算法探究1

Codeforces Round #240 (Div. 2) E  http://codeforces.com/contest/415/problem/E 2^n个数,每次操作将其分成2^q份,对于每一份内部的数进行翻转(逆序),每次操作完后输出操作后新序列的逆序对数。 图一:  划分子问题。 图二: 分而治之,=>  合并 。 图三: 回溯:

Codeforces Round #261 (Div. 2)小记

A  XX注意最后输出满足条件,我也不知道为什么写的这么长。 #define X first#define Y secondvector<pair<int , int> > a ;int can(pair<int , int> c){return -1000 <= c.X && c.X <= 1000&& -1000 <= c.Y && c.Y <= 1000 ;}int m

Codeforces Beta Round #47 C凸包 (最终写法)

题意慢慢看。 typedef long long LL ;int cmp(double x){if(fabs(x) < 1e-8) return 0 ;return x > 0 ? 1 : -1 ;}struct point{double x , y ;point(){}point(double _x , double _y):x(_x) , y(_y){}point op

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

Codeforces 482B 线段树

求是否存在这样的n个数; m次操作,每次操作就是三个数 l ,r,val          a[l] & a[l+1] &......&a[r] = val 就是区间l---r上的与的值为val 。 也就是意味着区间[L , R] 每个数要执行 | val 操作  最后判断  a[l] & a[l+1] &......&a[r] 是否= val import ja

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

Claude Enterprise推出计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/ 今天推出的Claude Enterprise计划,专为企业打造安全的

为备份驱动器制定备份计划:维护数据的3大方法

时间:2014-02-26 14:49 来源:网管之家 字体:[大 中 小]   您可能已经对您的电脑进行了备份,但其实这样还是远远不够的,其并非如您所认为的那样安全。您企业备份驱动器上的文件可能与您的主系统上的文件一样,容易受到灾难的影响。根据最近流行的恶意软件CryptoLocker的感染途径显示,连接到PC的外置驱动器——辅助硬盘驱动器,例如,用于备份的外部USB硬盘驱动器,可以像

IEEE会议投稿资料汇总http://cadcg2015.nwpu.edu.cn/index.htm

最近投了篇IEEE的顶级会议文章,一下是比较有用的一些资料,以供参考。 1.会议主页:http://cadcg2015.nwpu.edu.cn/index.htm     (The 14th International Conference on Computer-Aided Design and Computer Graphics (CAD/Graphics 2015)) 2.I

Codeforces Round 971 (Div. 4) (A~G1)

A、B题太简单,不做解释 C 对于 x y 两个方向,每一个方向至少需要 x / k 向上取整的步数,取最大值。 由于 x 方向先移动,假如 x 方向需要的步数多于 y 方向的步数,那么最后 y 方向的那一步就不需要了,答案减 1 代码 #include <iostream>#include <algorithm>#include <vector>#include <string>