
算法竞赛
文章平均质量分 56
_osayes_
E = mC^2
展开
-
[hdu2665 Kth number]区间第k大数
题意:给n个数,m次询问(l, r, k),每次询问区间[l, r]内的第k大数是多少 想法:区间问题。 * 暴力做法,将数据提取出来,然后套O(n)O(n)的划分,总复杂度O(mn)O(mn) * 在线段树上保存信息。比如归并树,保存归并排序的整个过程并对应到每个节点区间。或者像划分树那样,保存划分的结果,并维护一下进入到子区间的数的个数,这个信息可以在查询的时候用来确定第k大数被划到了左边原创 2015-12-28 23:50:33 · 630 阅读 · 0 评论 -
几道有趣的思维题
problem 1从1~n里选出一些数乘起来构成完全平方数,求能得到的最大完全平方数,结果对1e9+7取模,n<=106n<=10^6思路如果从判断哪些能选这个角度来做这个题那么就会陷入死胡同,不妨看哪些不能选,把n!表示成小于等于n的质数的幂的乘积,然后对于幂为奇数的,需要去掉一些数让它的幂变成偶数,怎么去呢?去掉这个质数就ok。那么问题就是对于n!=pc11pc22...pcttn!=p_1^{原创 2016-10-31 21:07:09 · 1944 阅读 · 0 评论 -
hdu5942 Just a Math Problem
题意令f(i)f(i)为i的不同质因子的个数,求∑2f(i)[1<=i<=n]\sum 2^{f(i)}[1<=i<=n]思路如果i=pc11pc22...pcf(i)f(i)i=p_1^{c_1}p_2^{c_2}...p_{f(i)}^{c_{f(i)}},则满足 PQ=i,gcd(P,Q)=1PQ=i,gcd(P,Q)=1的(P,Q)(P,Q)有序对的个数为2f(i)2^{f(i)},因为原创 2016-10-31 18:51:52 · 2050 阅读 · 0 评论 -
2017京东笔试编程题-保卫方案 | Codeforces Beta Round #5 E.Bindian Signalizing
cf上的原题,地址在:http://codeforces.com/contest/5/problem/E题意大意是给你围成了一个环的序列,要求所有的点对(i,j),满足i思路如果这个序列不是环形的,那么仅仅维护一个非增队列就可以统计答案了,然而对于对于环形序列,队首和队首之前的点还可以通过“另一条路”和当前点配对,对于这一部分答案,如果我们维护下队首和队首之前的数的非降序列,那么答案在非降序列上形成原创 2016-09-07 02:40:52 · 1847 阅读 · 0 评论 -
2016 USP Try-outs Gym101064
link:http://codeforces.com/gym/101064Gym 101064A. Renzo and the lost artifact题意给你一张大地图和一张小地图,大地图和小地图上面所表示的是某个地方的同一块区域,然后以大地图的左下角为原点建系,告诉你小地图的四个点的坐标,这四个点依次是小地图正面所示时的左下角沿逆时针方向的四个点。然后让你求某个坐标位置,大地图和小地图上表示的原创 2016-08-27 03:59:22 · 1821 阅读 · 0 评论 -
2015 USP Try-outs Gym101047
link:http://codeforces.com/gym/101047Gym 101047D. Random walks in Thailand题意给你n个城市,u和v之间距离为CuvC_{uv},单位距离花费为1,另外还可以选择坐飞机,但是目的地是随机的,也就是说飞机在每个城市降落的可能性一样,坐一次飞机花费为k。求从城市1到n的最小花费的期望值。思路令fif_i原创 2016-08-27 03:13:20 · 1340 阅读 · 0 评论 -
“高教社杯”第三届福建省大学生程序设计竞赛
FZU OJ主页:http://acm.fzu.edu.cn/index.phpProblem B. Bin & Jing in wonderland @FZU2103题意1-n共n个id,每个id给定一个概率,表示从中随机抽一个抽到它的概率。现在让你有放回地随机抽取k次,把这k个id排序后最大的r个id与给定的r个id一样的概率。思路根据题意,有r个id是确定的,另外 k-r 个id可以这样确定原创 2016-08-26 23:38:27 · 1339 阅读 · 0 评论 -
hdu5779 Tower Defence
题意: 求满足【n个点编号1-n,从1出发到各个点的最短路长度不等于k】的图有多少种,所有边长都为1,没有重边和自环,不连通则距离为无穷大思路题目中“不等于k”可以换成“小于k或者无穷大”。为了将小于k和无穷大分开,将所有点分为两类,第一类与1连通,第二类与1不连通,即为无穷大。分类后,第二类点和第一类点之间没有边,第二类点相互之间的边怎样连接也没有限制,问题简化为求第一类点中满足条件的方案数。原创 2016-08-02 00:08:14 · 882 阅读 · 2 评论 -
hdu5780 gcd
题意: 已知x和n,求∑gcd(xa−1,xb−1)(1≤a,b≤n)∑gcd(x^a−1,x^b−1) (1≤a,b≤n)思路记T(t)=1+x+x2+...+xt−1T(t)=1+x+x^2+...+x^{t-1} xa−1=(x−1)(1+x+x2+...+xa−1)=(x−1)∗T(a)x^a-1 = (x-1)(1+x+x^2+...+x^{a-1})=(x-1)*T(a) 则原创 2016-08-02 02:24:54 · 1710 阅读 · 0 评论 -
网易2017校园招聘数据挖掘笔试题编程题 分田地
题目: 牛牛和15个朋友玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成16份,作为领导干部,牛牛总是会选择其中总价值最小的一份田地,作为牛牛最好的朋友,你希望牛牛取得的田地的价值和尽可能大,你知道这个值最大可以是多少吗?输入描述 每个输入包含1个测试用例。每个测试用例的第一行包含两个整数n和m(1 <= n,m <原创 2016-08-04 10:15:22 · 2353 阅读 · 0 评论 -
codeforces-675D Tree Construction
大致题意:输入n个不相同的数,依次插入bst中,输出最后每个数对应节点的父亲思路一:bst的中序遍历是有序的,所以每一棵子树对应有序序列的一个区间。先将原序列排序,按插入顺序取没有处理的节点,找到它在有序序列里的位置p,假定它的父亲所表示子树的范围是[l,r],那么[l,p-1]和[p+1,r]分别成为p的左右子树,[l,p-1]和[p+1,r]的父亲由p的父亲更改为p。所以需要一个支持区间修改的数原创 2016-06-06 11:53:07 · 510 阅读 · 0 评论 -
几道题(hdu5671 && hdu5672 && hdu5673)
hdu5671 Matrix 思路 * 所有操作都是整行或整列,所以矩形的两个维度可以独立处理 * 对于交换我们用一个映射表表示当前的第i行(列)是原矩形的第多少行(列),对于加数我们用一个数组记录原矩形第i行加了多少,为什么是原矩形呢?因为对现矩形的所有操作本质上是对原矩形的操作 代码#include <bits/stdc++.h>using namespace std;const i原创 2016-04-24 04:08:50 · 557 阅读 · 0 评论 -
2016百度之星资格赛
Problem A度熊手上有一本字典存储了大量的单词,有一次,他把所有单词组成了一个很长很长的字符串。现在麻烦来了,他忘记了原来的字符串都是什么,神奇的是他竟然记得原来那些字符串的哈希值。一个字符串的哈希值,由以下公式计算得到: H(s)=∏i≤len(s)i=1(Si−28) (mod 9973)H(s)=\prod_{i=1}^{i\leq len(s)}(S_{i}-28)\ (mod\ 9原创 2016-05-15 04:15:26 · 3233 阅读 · 1 评论 -
第七届蓝桥杯本科B组省赛
煤球数目有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), …. 如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。思路:推出第i层有i*(i+1)/2个煤球,累加到100层即可,答案为171700原创 2016-03-26 21:11:27 · 2762 阅读 · 2 评论 -
[hdu5654 xiaoxin and his watermelon candy]区间内不同数的个数
原题 思路: 首先求得所有合法的三元组(ai,ai+1,ai+2a_i, a_{i+1}, a_{i+2}),这样的三元组数量是O(n)的,然后离散化成1-n的序列,不合法的用0表示,得到新的序列bib_i。令pip_i为bib_i这个数上一次出现的位置,则求a的[L,R]之间有多少个不同的合法三元组等价于求p的[L,R-2]之间有多少个值小于L。考虑到有不合法的三元组,需要对它们的p做一些特殊原创 2016-03-31 02:52:16 · 565 阅读 · 0 评论 -
[hdu4285 circuits] 插头dp
题意:一个n*m的01矩阵,用刚好k个回路覆盖所有的1,回路之间不能相互包含、交叉,求方法总数。 思路:又1个回路问题,与单回路和多回路问题不同,这题限制了回路个数,那么把回路个数加进状态里面,在转移的时候维护下即可。具体来说,采用8进制表示连通性,用用最小表示法将状态编码,dp时用hash保存一个阶段的所有状态。#include <bits/stdc++.h>using namespace s原创 2015-12-21 03:24:05 · 603 阅读 · 0 评论 -
HashTable和HashMap
在平常的应用中,经常遇到一些需要查询某个元素的情况,一般来说就有3种不同复杂度的做法:把元素简单放进线性表中,这样每次查询需要遍历一遍线性表,复杂度是O(n)的把元素放进平衡树中,这样每次查询复杂度是O(logn)的把元素放进hash表中,这样查询的均摊复杂度变为O(1) 实际应用中一般不采用1,而采用2和3。平衡树的优点是查询稳定,缺点是查询次数多时较慢;hash表的优点是查询的平均时间短原创 2015-12-20 22:19:01 · 470 阅读 · 0 评论 -
[hdu1890 Robotic Sort]Splay Tree
题意:n个数排成一列,每次选择序列中的最小值(如果有多个,取原始位置最小的),把它和它前面的所有数翻转,然后把这个数从序列中删去。输出每次选择的最小值的下标。 思路: * Splay Tree是一棵平衡树,在平衡的基础上加上独有的伸展操作,Splay能快速实现诸如区间翻转,区间切割等等普通数据结构力不从心的操作。一棵二叉树,如果用作数据检索,会把数据作为key,中序遍历后得到全部数据的有序排列,原创 2015-12-29 02:47:38 · 1303 阅读 · 0 评论 -
51NOD 1674 区间的价值 V2
题意给n个数a1a_1~an(1≤ai≤1e9)a_n(1\leq a_i\leq1e9),求∑[1≤l≤r≤n][al&al+1&...&ar][al|al+1|...|ar]\sum[1\leq l\leq r\leq n][a_l \verb'&'a_{l+1}\verb'&'...\verb'&'a_r][a_l\verb'|'a_{l+1}\verb'原创 2016-11-01 11:03:28 · 1026 阅读 · 0 评论