现场只做出前三题w

  不过不管怎样这既是第一次认真打BC

  又是第一次体验用在线编译器调代码

  订正最后一题花了今天一整个下午(呜呜

  收获还是比较大的^_^


 Delete

wld有n个数(a1,a2,...,an),他希望进行k次删除一个数的操作,使得最后剩下的n−k个数中有最多的不同的数,保证1≤n≤100,0≤k<n,1≤ai≤n(对于任意1≤i≤n)

  比较简单的贪心...

  把出现一次以上的多于一次的部分都删除掉

  如果k依然>0就要删去k种不同的数


Multiple


wld有一个序列a[1..n], 对于每个1≤i<n, 他希望你求出一个最小的j(以后用记号F(i)表示),满足i<j≤n, 使aj为ai的倍数(即aj mod ai=0),若不存在这样的j,那么此时令F(i) = 0
保证1≤n≤10000,1≤ai≤10000 对于任意 1≤i≤n, 且对于任意1≤i,j≤n(i!=j),满足ai != aj

  n^1.5次的大暴力即可

  发现BC好多题目都是用这种方法...在此之前并不认为这样可以过

  对于每个数枚举它所有的因数,刷新它们的f[i]值


Code
wld有一个长度为n的序列a1..an
wld想要你给出下面这段c++代码的输出:
int calc()
{
int res=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
res+=gcd(a[i],a[j])*(gcd(a[i],a[j])-1);
res%=10007;
}
return res;
}
保证1≤n≤10000,1≤ai≤10000 (对于任意1≤i≤n)

  我的做法是n^1.5次的,但是发现题解是nlog(n)

  但上次莫比乌斯反演只看到一半...所以先弃疗吧

  讲讲n^1.5次的做法

  首先n^1.5的复杂度将每个数的因子打上标记

  我们可以枚举最大公约数d,如果有x个数有d这个因子

  那么就累计x*(x-1)次这个答案

  但是显然我们会发现问题

  如果两个数有4这个因子,那么在统计2的时候又会统计一次!

  解决方法很简单,我们可以预先处理出每个数应累计的答案f[i]

  枚举最大公约数d的同时,再枚举d的因子i,减去这个因子的答案

  注意:这里的答案也是处理过的答案,即f[i]

  最后单独累计i=j时的情况

  

  手速太慢...原因有好多个

  开始写的时候把+=看成了*=

  所以写了乘法逆元...然后调了半天输出了很多中间过程才发现错误

  然后还忘记了i=j的情况

  后来WA了一发,是因为枚举最大公约数的时候应枚举到a[i]的最大值而不是n

  刚开始没查出来,又开始证明算法的思路即f[i]的计算是否正确

  改来改去越来越离谱..突然发现是后面的问题

  然后就1h+辣> <


Lucky


wld有n个数(a1...an)
保证对于任意1≤i≤n,1≤ai≤n
wld有一个常数k保证2≤k≤2∗n
为了消除歧义保证k为奇数
他有m个询问
每个询问有参数l1,r1,l2,r2
保证(1≤l1≤r1<l2≤r2≤n)
对于每个询问你需要回答有多少个二元组(i,j)满足:
l1≤i≤r1且l2≤j≤r2且ai+aj=k
保证1≤n≤30000,1≤m≤30000

  

  恩..这道题在考场上确实是写不出来的..

  今天下午去学习了一下莫队算法...觉得很有趣...

  

  莫队算法就是建立在分块基础上,离线解决一系列区间询问问题

  首先这道题假设已知[l,r]中相加=k的对数

  那么我们可以通过复杂度不高的代价得知[l-1,r][l+1,r][l,r-1][l,r+1]的答案

  刚开始是打算用log级的倍增做的..但是交了一发TLE了

  这道题询问的是[l1,r1][l2,r2]中满足条件的对数

  如何转换成单个区间上面[l,r]中相加=k的对数呢

  假设题目中让我们求的是一个在区间A,一个在区间B的答案,我们假设为F(A,B),并且令F中统计的数对为有序的

  即只统计a[i]+a[j]=k且(i<j)的情况

  可以证明得出F(A,B) = F(A+C+B,A+C+B)-F(A+C,A+C)-F(B+C,B+C)+F(C,C)

  F(A+C+B,A+C+B)-F(A+C,A+C)-F(C+B,C+B)+F(C,C)

  = F(A,A)+F(A,C)+F(A,B)+F(C,C)+F(C,B)+F(B,B)-F(A,A)-F(A,C)-F(C,C)-F(C,C)-F(C,B)-F(B,B)+F(C,C)

  = F(A,B)

  转化成了4部分两区间相等的F,也就是可以用上面的莫队算法来解决了

  最后一个问题,就是转移的时候如何从log(n)转化成O(1)

  在执行莫队的同时,即l,r一位一位移动的时候,用一个数组记录当前区间内某个数出现的次数就可以了...

  


  涨了177w

  手速还是慢慢慢

  居然过了一个周末一下子就27号了呢

  居然再过两天又要回家了呢

  

  27/.Apr.

  

BestCoder Round #39 解题报告的更多相关文章

  1. BestCoder Round #86 解题报告

    A.Price List Sol 求和查询 Code #include<cstdio> #include<algorithm> #include<iostream> ...

  2. BestCoder Round #75 解题报告

    King's Cake [思路] 递推 公式:f(n,m)=f(max(m,n-m),min(m,n-m))+1,n>m [代码] #include<cstdio> #include ...

  3. BestCoder Round #76 解题报告

    DZY Loves Partition [思路] 贪心 [代码] #include <iostream> using namespace std; typedef long long ll ...

  4. BestCoder Round #40 解题报告

    这场是第一场没有米的BC... 大概也是想震一震那些一听说没米了就不打BC的人吧 这次的题目质量比以往高了许多 (然而我并没有打这一场BC 但是今天下午到现在做的过程中真的学到了不少知识呢 A题略水. ...

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

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

  6. 贪心 BestCoder Round #39 1001 Delete

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

  7. 浙江省队选拔 ZJOI2015 (Round 1) 解题报告

    最近莫名其妙地喜欢上了用这种格式写各省省选的全套题解= = 今年浙江省选的出题人是算法竞赛界传说级人物陈立杰,看样子他的出题风格很有特点……ABC三题难度是严格递减的,感觉如果在做第一题的时候被卡住的 ...

  8. Codeforces Round #300 解题报告

    呜呜周日的时候手感一直很好 代码一般都是一遍过编译一遍过样例 做CF的时候前三题也都是一遍过Pretest没想着去检查... 期间姐姐提醒说有Announcement也自信不去看 呜呜然后就FST了 ...

  9. BestCoder Round #39

    -------好久没更新博客了,发现还是需要不断总结才能进步,所以还是把最近打的一些比赛记录一下. T1:Delete (hdu 5210) 题目大意: 给出n个数,然后要删掉k个,要求剩下的数中 不 ...

随机推荐

  1. cf987f AND Graph

    #include <iostream> #include <cstdio> using namespace std; int n, uu, m; bool a[4500005] ...

  2. 什么鬼,又不知道怎么命名class了

    什么鬼,又不知道怎么命名class了 2015/10/25 · CSS · class 分享到:5 原文出处: 结一(@结一w3cplus)    相信写css的人都会遇到下面的问题: 糟糕,怎么命名 ...

  3. Jmeter学习(三)

    Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试.(来自百度) jmeter的特点: 开源免费. ...

  4. Wannafly挑战赛21:C - 大水题

    链接:Wannafly挑战赛21:C - 大水题 题意: 现在给你N个正整数ai,每个数给出一“好数程度” gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位 ...

  5. 机器学习/逻辑回归(logistic regression)/--附python代码

    个人分类: 机器学习 本文为吴恩达<机器学习>课程的读书笔记,并用python实现. 前一篇讲了线性回归,这一篇讲逻辑回归,有了上一篇的基础,这一篇的内容会显得比较简单. 逻辑回归(log ...

  6. [转]使用 Travis CI 部署你的 Hexo 博客

    之前使用Hexo的时候,都是在本地进行编译和部署的,平时使用的时候觉得没什么,只需要 hexo ghexo d 两步就可以把博客更新的内容推到GitHub Pages上.但是某些时候可能会遇到你的文件 ...

  7. HTML文档插入JS代码的几种方法

    在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内联,放置在< script>和标签对之间. 2.放置在由< script>标签的src属性指定的外部文件中 ...

  8. CSS position属性---absolute与relative

    详情请点击此链接 http://www.cnblogs.com/polk6/archive/2013/07/26/3214847.html

  9. arcgis的炸开多边形功能

    有时候我们使用dissolve工具,或其他操作会将空间不相连的多边形对应的属性合并到一起,如图: 在高级编辑工具中: 有这样一个工具,但是它能满足我的要求,但是他不是批量的,不过它使用起来比较方便. ...

  10. 多线程 调用多线程的方法 Runtime与ProcessBuilder

    一般我们使用Java运行其他类中的方法的时候,无论是静态调用还是动态调用,都是在当前的进程中执行的.也就是只有一个Java虚拟机实例在运行.有时候需要通过Java代码启动多个Java子进程,这样做会消 ...