这次比赛从名字就可以看出非常水,然鹅因为第一次打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的差的最小值

  1. #代码后面有时间再补

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代码很简单

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cstdlib>
  4. #include<iostream>
  5. #include<algorithm>
  6. using namespace std;
  7. const int N=2e5+5;
  8. int n;
  9. long long tot;
  10. struct node
  11. {
  12. long long x,v;
  13. }a[N];
  14. bool cmp(node x,node y)
  15. {
  16. return x.x<y.x;
  17. }
  18. int main()
  19. {
  20.  
  21. scanf("%d",&n);
  22. for(int i=1;i<=n;i++)
  23. scanf("%lld",&a[i].x);
  24. for(int i=1;i<=n;i++)
  25. scanf("%lld",&a[i].v);
  26. sort(a+1,a+n+1,cmp);
  27. for(int i=2;i<=n;i++)
  28. {
  29. for(int j=1;j<i;j++)
  30. {
  31. if(a[i].v>=a[j].v)
  32. {
  33. tot+=a[i].x-a[j].x;
  34. }
  35. }
  36. }
  37. printf("%lld",tot);
  38. return 0;
  39. }

  

因为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]的个数而这可以用树状数组优化。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cstdlib>
  4. #include<iostream>
  5. #include<algorithm>
  6. using namespace std;
  7. const int N=2e5+5;
  8. int n,m,pos,v[N];
  9. long long tot,s[N][2];
  10. struct node
  11. {
  12. long long x,v;
  13. }a[N];
  14. bool cmp(node x,node y)
  15. {
  16. return x.x<y.x;
  17. }
  18. int lowbit(int x)
  19. {
  20. return x&(-x);
  21. }
  22. void update(int x,int val)//更新数组
  23. {
  24. while(x<=n)
  25. {
  26. s[x][0]++;
  27. s[x][1]+=val;
  28. x+=lowbit(x);//从x往上更新所有q,p数组有关a[x]的值
  29. }
  30. }
  31. long long getsum(int x,int flag)//获取数组1~x的和
  32. {
  33. long long res=0;
  34. while(x)
  35. {
  36. res+=s[x][flag];
  37. x-=lowbit(x); //从x往下加故是减号
  38. }
  39. return res;
  40. }
  41. int main()
  42. {
  43.  
  44. scanf("%d",&n);
  45. for(int i=1;i<=n;i++)
  46. scanf("%lld",&a[i].x);
  47. for(int i=1;i<=n;i++)
  48. {
  49. scanf("%lld",&a[i].v);
  50. v[i]=a[i].v;
  51. }
  52. sort(a+1,a+n+1,cmp);
  53. sort(v+1,v+n+1);
  54. m=unique(v+1,v+n+1)-v-1;
  55. for(int i=1;i<=n;i++)
  56. {
  57. pos=lower_bound(v+1,v+m+1,a[i].v)-v;
  58. tot+=getsum(pos,0)*a[i].x-getsum(pos,1);//s[][0]代表p[i],s[][1]代表q[i]
  59. update(pos,a[i].x);
  60. }
  61. printf("%lld",tot);
  62. return 0;
  63. }

  

CODEFORCES ROUND#624 DIV3的更多相关文章

  1. 【赛时总结】◇赛时·V◇ Codeforces Round #486 Div3

    ◇赛时·V◇ Codeforces Round #486 Div3 又是一场历史悠久的比赛,老师拉着我回来考古了……为了不抢了后面一些同学的排名,我没有做A题 ◆ 题目&解析 [B题]Subs ...

  2. Codeforces Round #624 (Div. 3)(题解)

    Codeforces Round #624 (Div.3) 题目地址:https://codeforces.ml/contest/1311 B题:WeirdSort 题意:给出含有n个元素的数组a,和 ...

  3. 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 ...

  4. 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 ...

  5. 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 ...

  6. 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 ...

  7. 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 ...

  8. CodeForces Round#480 div3 第2场

    这次div3比上次多一道, 也加了半小时, 说区分不出1600以上的水平.(我也不清楚). A. Remove Duplicates 题意:给你一个数组,删除这个数组中相同的元素, 并且保留右边的元素 ...

  9. Codeforces Round #624 (Div. 3) F. Moving Points 题解

    第一次写博客 ,请多指教! 翻了翻前面的题解发现都是用树状数组来做,这里更新一个 线段树+离散化的做法: 其实这道题是没有必要用线段树的,树状数组就能够解决.但是个人感觉把线段树用熟了会比树状数组更有 ...

随机推荐

  1. Apache Hudi 0.5.1版本重磅发布

    历经大约3个月时间,Apache Hudi 社区终于发布了0.5.1版本,这是Apache Hudi发布的第二个Apache版本,该版本中一些关键点如下 版本升级 将Spark版本从2.1.0升级到2 ...

  2. Commvault Oracle备份常用命令

    在进行Oracle数据库备份的配置.发起和恢复的过程中,需要用到许多Oracle数据库本身的命令.在此章节中进行命令的梳理,供大家参考. Oracle用户和实例相关命令 Linux/Unix平台 # ...

  3. 解决SpringMvc后台接收json数据中文乱码问题

    原因分析 使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码 其实乱码问题出现的原因,就是由于默认的tomcat配置,接收请求是以ISO-8859-1来转码,导致中文出 ...

  4. tomcat性能优化梳理

    tomcat性能优化 Tomcat本身优化 Tomcat内存优化 启动时告诉JVM我要一块大内存(调优内存是最直接的方式) 我们可以在 tomcat 的启动脚本 catalina.sh 中设置 jav ...

  5. nginx之基础安装

    前言 nginx的安装方式可能不同,具体取决于操作系统:对于Linux,可以使用nginx.org的nginx软件包.在FreeBSD上,可以从软件包或通过端口系统安装nginx. 端口系统提供了更大 ...

  6. Git详解之特殊配置与钩子应用

    前言 到目前为止,我阐述了 Git 基本的运作机制和使用方式,介绍了 Git 提供的许多工具来帮助你简单且有效地使用它. 在本章,我将会介绍 Git 的一些重要的配置方法和钩子机制以满足自定义的要求. ...

  7. SUSE Linux Enterprise 11 离线安装 DLIB 人脸识别 python机器学习模块

    python机器学习模块安装 我的博客:http://www.cnblogs.com/wglIT/p/7525046.html 环境:SUSE Linux Enterprise 11 sp4  离线安 ...

  8. 8、OSPF

    OSPF ---最短路径优先 用于在单一自治系统(Autonomous System-AS)内决策路由 自制系统(AS)AS: 执行统一路由策略的一组网络设备的组合可适应大规模的网络: ·    路由 ...

  9. 05讲基础篇:某个应用的CPU使用率居然达到100%,我该怎么办

    小结 CPU 使用率是最直观和最常用的系统性能指标,更是我们在排查性能问题时,通常会关注的第一个指标.所以我们更要熟悉它的含义,尤其要弄清楚用户(%user).Nice(%nice).系统(%syst ...

  10. CCF_201312-1_出现次数最多的数

    水. #include<stdio.h> int main() { ,a[]={},num[]={}; scanf("%d",&T); ;i < T;i+ ...