CODEFORCES ROUND#624 DIV3
这次比赛从名字就可以看出非常水,然鹅因为第一次打codeforces不太熟悉操作只来的及做签到题(还错了一次)
A,B,C都是签到题考点思维就不写了
D题
https://codeforces.ml/problemset/problem/1311/D
题目大意是:有t组数据每组数据给你三个数,a,b,c每次一个数加一或
者减一都算一次操作(不能为变负数),问最小的操作次数构造出A,
B,C使b%a==0,c%b==0。
t<1000,a,b,c<1e4 时限2s
首先想到是找b的倍数与a,c最近的数再直接加减
再一看时限两秒。。。果断暴力
然后就枚举这样的数对A,B,C,答案就是其a,b,c的差的最小值
#代码后面有时间再补
E题:
https://codeforces.ml/contest/1311/problem/E
奈何本人没文化,题目没怎么懂,日后有时间再补(flag)
接下来才是重头戏
F题
https://codeforces.ml/problemset/problem/1311/F
题目大意:给你n(<2e5)个点a1,a2,...,an在同一个数轴上,保证坐标不会重复, 每个点有一个固定的速度(-1e8到1e8),对某一个t时刻,某两个点距离最小,输出这些最小值之和(min d(i,j)i<j之和)
容易先想到将a按坐标排序,xi<xj,vi<vj那d(i,j)肯定不会减小则min d(i,j)=xj-xi,如果vi>vj 则min d(i,j)=0
暴力n^2代码很简单
- #include<cstdio>
- #include<cstring>
- #include<cstdlib>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- const int N=2e5+5;
- int n;
- long long tot;
- struct node
- {
- long long x,v;
- }a[N];
- bool cmp(node x,node y)
- {
- return x.x<y.x;
- }
- int main()
- {
- scanf("%d",&n);
- for(int i=1;i<=n;i++)
- scanf("%lld",&a[i].x);
- for(int i=1;i<=n;i++)
- scanf("%lld",&a[i].v);
- sort(a+1,a+n+1,cmp);
- for(int i=2;i<=n;i++)
- {
- for(int j=1;j<i;j++)
- {
- if(a[i].v>=a[j].v)
- {
- tot+=a[i].x-a[j].x;
- }
- }
- }
- printf("%lld",tot);
- return 0;
- }
因为ans+=xi⋅cnt−sum可以将每次枚举看成从当前新建的数组中添加一个元素,因为从小到大遍历的所以速度小于i而x大于i的一定还没有被加入新建的数组所以此想法可以算出满足条件的num和tot。
具体做法是新建两个数组q,p开始都为空,第一个数组q[i]代表a[1~i].v中速度为q的a[1~i].x(坐标)的和,第二个数组p[i]代表速度为p[i]的个数而这可以用树状数组优化。
- #include<cstdio>
- #include<cstring>
- #include<cstdlib>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- const int N=2e5+5;
- int n,m,pos,v[N];
- long long tot,s[N][2];
- struct node
- {
- long long x,v;
- }a[N];
- bool cmp(node x,node y)
- {
- return x.x<y.x;
- }
- int lowbit(int x)
- {
- return x&(-x);
- }
- void update(int x,int val)//更新数组
- {
- while(x<=n)
- {
- s[x][0]++;
- s[x][1]+=val;
- x+=lowbit(x);//从x往上更新所有q,p数组有关a[x]的值
- }
- }
- long long getsum(int x,int flag)//获取数组1~x的和
- {
- long long res=0;
- while(x)
- {
- res+=s[x][flag];
- x-=lowbit(x); //从x往下加故是减号
- }
- return res;
- }
- int main()
- {
- scanf("%d",&n);
- for(int i=1;i<=n;i++)
- scanf("%lld",&a[i].x);
- for(int i=1;i<=n;i++)
- {
- scanf("%lld",&a[i].v);
- v[i]=a[i].v;
- }
- sort(a+1,a+n+1,cmp);
- sort(v+1,v+n+1);
- m=unique(v+1,v+n+1)-v-1;
- for(int i=1;i<=n;i++)
- {
- pos=lower_bound(v+1,v+m+1,a[i].v)-v;
- tot+=getsum(pos,0)*a[i].x-getsum(pos,1);//s[][0]代表p[i],s[][1]代表q[i]
- update(pos,a[i].x);
- }
- printf("%lld",tot);
- return 0;
- }
CODEFORCES ROUND#624 DIV3的更多相关文章
- 【赛时总结】◇赛时·V◇ Codeforces Round #486 Div3
◇赛时·V◇ Codeforces Round #486 Div3 又是一场历史悠久的比赛,老师拉着我回来考古了……为了不抢了后面一些同学的排名,我没有做A题 ◆ 题目&解析 [B题]Subs ...
- Codeforces Round #624 (Div. 3)(题解)
Codeforces Round #624 (Div.3) 题目地址:https://codeforces.ml/contest/1311 B题:WeirdSort 题意:给出含有n个元素的数组a,和 ...
- CodeForces Round #527 (Div3) B. Teams Forming
http://codeforces.com/contest/1092/problem/B There are nn students in a university. The number of st ...
- CodeForces Round #527 (Div3) D2. Great Vova Wall (Version 2)
http://codeforces.com/contest/1092/problem/D2 Vova's family is building the Great Vova Wall (named b ...
- CodeForces Round #527 (Div3) D1. Great Vova Wall (Version 1)
http://codeforces.com/contest/1092/problem/D1 Vova's family is building the Great Vova Wall (named b ...
- CodeForces Round #527 (Div3) C. Prefixes and Suffixes
http://codeforces.com/contest/1092/problem/C Ivan wants to play a game with you. He picked some stri ...
- CodeForces Round #527 (Div3) A. Uniform String
http://codeforces.com/contest/1092/problem/A You are given two integers nn and kk. Your task is to c ...
- CodeForces Round#480 div3 第2场
这次div3比上次多一道, 也加了半小时, 说区分不出1600以上的水平.(我也不清楚). A. Remove Duplicates 题意:给你一个数组,删除这个数组中相同的元素, 并且保留右边的元素 ...
- Codeforces Round #624 (Div. 3) F. Moving Points 题解
第一次写博客 ,请多指教! 翻了翻前面的题解发现都是用树状数组来做,这里更新一个 线段树+离散化的做法: 其实这道题是没有必要用线段树的,树状数组就能够解决.但是个人感觉把线段树用熟了会比树状数组更有 ...
随机推荐
- Apache Hudi 0.5.1版本重磅发布
历经大约3个月时间,Apache Hudi 社区终于发布了0.5.1版本,这是Apache Hudi发布的第二个Apache版本,该版本中一些关键点如下 版本升级 将Spark版本从2.1.0升级到2 ...
- Commvault Oracle备份常用命令
在进行Oracle数据库备份的配置.发起和恢复的过程中,需要用到许多Oracle数据库本身的命令.在此章节中进行命令的梳理,供大家参考. Oracle用户和实例相关命令 Linux/Unix平台 # ...
- 解决SpringMvc后台接收json数据中文乱码问题
原因分析 使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码 其实乱码问题出现的原因,就是由于默认的tomcat配置,接收请求是以ISO-8859-1来转码,导致中文出 ...
- tomcat性能优化梳理
tomcat性能优化 Tomcat本身优化 Tomcat内存优化 启动时告诉JVM我要一块大内存(调优内存是最直接的方式) 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 jav ...
- nginx之基础安装
前言 nginx的安装方式可能不同,具体取决于操作系统:对于Linux,可以使用nginx.org的nginx软件包.在FreeBSD上,可以从软件包或通过端口系统安装nginx. 端口系统提供了更大 ...
- Git详解之特殊配置与钩子应用
前言 到目前为止,我阐述了 Git 基本的运作机制和使用方式,介绍了 Git 提供的许多工具来帮助你简单且有效地使用它. 在本章,我将会介绍 Git 的一些重要的配置方法和钩子机制以满足自定义的要求. ...
- SUSE Linux Enterprise 11 离线安装 DLIB 人脸识别 python机器学习模块
python机器学习模块安装 我的博客:http://www.cnblogs.com/wglIT/p/7525046.html 环境:SUSE Linux Enterprise 11 sp4 离线安 ...
- 8、OSPF
OSPF ---最短路径优先 用于在单一自治系统(Autonomous System-AS)内决策路由 自制系统(AS)AS: 执行统一路由策略的一组网络设备的组合可适应大规模的网络: · 路由 ...
- 05讲基础篇:某个应用的CPU使用率居然达到100%,我该怎么办
小结 CPU 使用率是最直观和最常用的系统性能指标,更是我们在排查性能问题时,通常会关注的第一个指标.所以我们更要熟悉它的含义,尤其要弄清楚用户(%user).Nice(%nice).系统(%syst ...
- CCF_201312-1_出现次数最多的数
水. #include<stdio.h> int main() { ,a[]={},num[]={}; scanf("%d",&T); ;i < T;i+ ...