这次比赛从名字就可以看出非常水,然鹅因为第一次打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. Qt Installer Framework翻译(7-2)

    包文件夹 安装程序包含的组件,要么是内嵌的,要么可以从远程存储库加载.在这两种情况下,都需要为组件使用一种安装程序可以读取的文件格式和结构. 包文件夹结构 将所有组件放在相同的根文件夹中,即包文件夹. ...

  2. SQLException:The server time zone

    报错信息如下: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represen ...

  3. DISCUZ 如何为主题帖列表页添加头像,显示发帖者头像

    只显示名字的代码 ```php<em style=" font-size:14px;"> <!--{if $thread['authorid'] &&am ...

  4. 1759: 学生信息插入(武汉科技大学结构体oj)(已AC)

    #include<stdio.h>struct student { long no; char name[9]; int score;} t;void input(struct stude ...

  5. "@阅后即焚"上线了!

    前一阵发现了一个有趣的网站,他可以让你的文字在显示一次后销毁. 直到我把网站发给一个朋友,网站打不开了,于是就想着开发一个. 前端用的bootstrap这个框架,后端用PHP写的,没有后台,现在还不需 ...

  6. 一道面试题引发的对 Java 内存模型的一点疑问

    一道面试题引发的对Java内存模型的一点疑问 问题描述 如上图所示程序,按道理,子线程会通过 num++ 操作破坏 while 循环的条件,从而终止循环,执行最后的输出操作.但在我的多次运行中,偶尔会 ...

  7. Python用WMI模块获取windowns系统信息

    安装vmi https://pypi.org/project/WMI/#history 脚本如下: #!/usr/bin/env python #coding:utf- import wmi impo ...

  8. ffmpeg常用数据结构

    from :http://my.oschina.net/u/555701/blog/56748 AVCodecContext 这是一个描述编解码器上下文的数据结构,包含了众多编解码器需要的参数信息,如 ...

  9. [实用分享]Kindle电子书格式AZW3转换为MOBI

    [实用分享]Kindle电子书格式AZW3转换为MOBI 思路:先拆解成源文件再转换成 MOBI 推荐首选这种方法.此方法的思路是,首先用 KindleUnpack 把 azw3 文件拆解成源文件,然 ...

  10. Comet OJ Contest #0 解方程(暴力)

    题意: 给定自然数n,求满足$\displaystyle \sqrt{x-\sqrt{n}}=\sqrt{z}-\sqrt{y}$的x,y,z,输出解的个数以及所有解 xyz的和 n<=1e9, ...