-------好久没更新博客了,发现还是需要不断总结才能进步,所以还是把最近打的一些比赛记录一下。

T1:Delete (hdu 5210)

题目大意:

给出n个数,然后要删掉k个,要求剩下的数中 不同的数个数最多。

题解:

贪心水题,尽可能先删出现次数多的。数据范围很小直接暴力就好。如果n更大的话可以用堆。


T2:Mutiple (hdu 5211)

题目大意:

给出一个长度为n(<=10000)的数列,数列中元素互不相同且都小于等于n。对于每个数Ai,求出它右边第一个满足Aj是Ai的倍数的j.

题解:

看到n的范围,我就感觉是n*sqrt(n)来做的。于是可以从右往左,用Ci表示当前满足Ak是i的倍数的最小的k.碰到一个数,求出他的所有约数,然后更新约数的C.对于Ai的答案,就是C[Ai].

看了官方题解,才发现可以nlogn来做。

从右向左查看序列
维护一个数组p[1..10000]表示该数上一次出现的位置
遇到一个数就暴力查看它的所有倍数,取最小值即可。

T3:Code (hdu 5212)

题目大意:

给出一个长度为n的数列A,求sigma( gcd(A[i],A[j])*(gcd(A[i],A[j])-1) )  mod 10007.  n<=10000

题解:

这题比赛的时候没想出来,实在是太弱了..

官方题解看不懂,看了大神们的代码,和官方题解毛关系都没有。

思路是枚举gcd=x,然后看有多少对gcd=x计算总和。

f[i]表示gcd是i的倍数的有多少对,g[i]表示gcd=i的有多少对。

那么f[i]=(cnt[i]+cnt[i*2]+cnt[i*3]...)2,cnt[i]表示数列中i的个数。

g[i]=f[i]-g[i*2]-g[i*3]-g[i*4]...

求出了g[i],累加即可。


T4:Lucky (hdu 5213)

题目大意:

给出长度为n的数列A和一个数K,有m个询问,询问有多少对l1<=i<=r1,l2<=j<=r2满足Ai+Aj=K. n,m<=30000;

题解一:O(m*sqrt(n)*log(n))

主要思想是分块.f[x][y]表示i在第x个块中,1<=j<=y的答案,这个很容易预处理出来.那么可以O(1)得到i在第x个块中,

l<=j<=r的答案(f[x][r]-f[x][l-1])。

对于询问l1,r1,l2,r2. 利用f数组搞出l1,r1之间的块的答案,然后对于两端不完整的块在[l2,r2]中的线段树中暴力计算。

写个可持久化线段树就好啦。

然后我代码写的丑,被卡常数了...于是照着大神的代码打,把块的大小从sqrt(n)改成100,写个读入优化,把数组扣的小一点,就可以卡过去了。

题解二:O(m*sqrt(n))

复杂度好代码好写秒杀前面的方法.

把一个询问拆成4个询问.

Ans(l1,r1,l2,r2)=Ans(1,r1,1,r2)-Ans(1,l1-1,1,r2)-Ans(1,r1,1,l2-1)+Ans(1,l1-1,1,l2-1);

把Ans(1,L,1,R) 看成区间[L,R]的一个询问,就可以莫队了.


人太水,比赛的时候只A了前2题,Rating掉了.发现BC的题目还是挺不错的,以后会坚持做下去。

BestCoder Round #39的更多相关文章

  1. 暴力+降复杂度 BestCoder Round #39 1002 Mutiple

    题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...

  2. 贪心 BestCoder Round #39 1001 Delete

    题目传送门 /* 贪心水题:找出出现次数>1的次数和res,如果要减去的比res小,那么总的不同的数字tot不会少: 否则再在tot里减去多余的即为答案 用set容器也可以做,思路一样 */ # ...

  3. [HDOJ 5212] [BestCoder Round#39] Code 【0.0】

    题目链接:HDOJ - 5212 题目分析 首先的思路是,考虑每个数对最终答案的贡献. 那么我们就要求出:对于每个数,以它为 gcd 的数对有多少对. 显然,对于一个数 x ,以它为 gcd 的两个数 ...

  4. BestCoder Round #39 解题报告

    现场只做出前三题w 不过不管怎样这既是第一次认真打BC 又是第一次体验用在线编译器调代码 订正最后一题花了今天一整个下午(呜呜 收获还是比较大的^_^ Delete wld有n个数(a1,a2,... ...

  5. hdu4932 Miaomiao&#39;s Geometry (BestCoder Round #4 枚举)

    题目链接:pid=4932" style="color:rgb(202,0,0); text-decoration:none">http://acm.hdu.edu ...

  6. BestCoder Round #89 02单调队列优化dp

    1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01  HDU 5944   水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...

  7. BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元

    BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy  Init函数 然后统计就ok B. 博弈 题  不懂  推了半天的SG.....  结果这 ...

  8. bestcoder Round #7 前三题题解

    BestCoder Round #7 Start Time : 2014-08-31 19:00:00    End Time : 2014-08-31 21:00:00Contest Type : ...

  9. Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp

    Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

随机推荐

  1. ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片

    以下介绍两种方法:1.利用WebRequest,WebResponse 类 WebRequest wreq=WebRequest.Create("http://www.xueit.com/e ...

  2. 一个Json结构对比的Python小工具兼谈编程求解问题

    先上代码. jsondiff.py #!/usr/bin/python #_*_encoding:utf-8_*_ import argparse import json import sys rel ...

  3. AtCoder Beginner Contest 050 ABC题

    A - Addition and Subtraction Easy Time limit : 2sec / Memory limit : 256MB Score : 100 points Proble ...

  4. MVC 中aspx的增删改查

    先看总体结构 LInQ #pragma warning disable 1591 //--------------------------------------------------------- ...

  5. Web的Ajax应用开发模式(三)——Ajax的开发

    Ajax是XMLHttpRequest对象和JavaScript.CSS.HTML.DOM等多种技术的结合. 此处重点强调XMLHttpRequest的以下特点,所以测试人员在测试到WEB的Ajax应 ...

  6. Python3基础 index 返回一个元素在列表中第一次出现的索引值

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  7. hadoop2.0初识1.0

    1.给普通用户设置sudo权限 编辑:[root@life-hadoop /]# nano /etc/sudoers 在文件头部加入:yanglin ALL=(root)NOPASSWD:ALL 保存 ...

  8. 十五、JDBC操作数据库

    1.数据库特点 实现数据共享.减少数据的冗余度.数据的独立性.数据集中控制.数据的一致性和可维护性. 2.数据库种类和功能 (1)层次型数据库:类似于树结构,是一组通过链接而互相联系在一起的记录. ( ...

  9. Oracle的使用

    启动: 1.win+R ---> cmd  -----> sqlplus "/as sysdba"  //以sysdba身份登录(此时可以创建用户,分配权限等) win ...

  10. GZFramwork数据库层《前言》Demo简介

    本系列旨在熟悉GZFramwork数据库层操作,对数据库表进行增删改查,单据编号生成等: 详细见图: 普通单表操作: 数据库建模: 创建表脚本: from sys.sysreferences r jo ...