上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页
摘要: 题意: 给一个N(n<=1e4), M个数字(长度为1),问最小的数x(x%n=0) 不包含这m个数。思路: 直接求,没想出解法. 对于一个数 x%n = m, 则 x` = x*10+i , 有 m` = (m*10+i)%n 我们可以利用 除了M个数字外的 数来构造这个 X. 因为需要最小的, 则其长度与字典序排列皆最小. 通过BFS进行搜索. 每一个 模n的余数之取第一次出现的,因为之后再出现的. 只可能更长或者更大. 必定不是最优解. 搜索节点,保存三个信息: 当前x的最后一位, 当前x%n的余数, 当前节点的父亲节点. 结果输出利用记忆父亲节点 ,然后递归输出即可.Vi... 阅读全文
posted @ 2013-04-24 17:07 yefeng1627 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 题意: 定义 f(x) = { num | a*b| x } , 求 \sum { f(x) } , x <= 10^11思路: 题目等价于求 a*b*c <= n 的数量. 假定 a <= b <= c. 则 a <= n^(1/3) , b <= n^(1/2) 所以我们可以通过枚举 a,b 计算出数量,时间复杂度未 O(n^(2/3)) 对于枚举的 a, b, c; 有三种情况 1 . 三个相等 a, a, a 则只需要计算一次 , 数量为: n^(1/3) 2. 二个相等, a, a, b or a, b, b 则需要计算 C(1,3) = 3 次 阅读全文
posted @ 2013-04-24 15:15 yefeng1627 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 首先是对于概率的计算,负二项分布: 物品A取与不取概率为,p,1-p, 共取 k+r次,最后一次取A ,且取A总次数为 r 次概率为: 则这里两个盒子取也可转换成此模型, 则期望公式为: 然后是公式的计算, 这里有两个问题. 1. 组合数 \binom{ 2n }{ n } 太大,会上溢 2. p^n 太小会下溢.对于问题一: 排列过大,考虑到 y = logx 函数, log(n!) 也不会很大. 又 令 f(x) = log( x! ),则有 预处理出 函数f() 就可以 O(1)求出 log( \binom{n}{m} )了. 然后 再求个 exp( x ... 阅读全文
posted @ 2013-04-24 13:48 yefeng1627 阅读(1236) 评论(0) 推荐(0) 编辑
摘要: 解题报告转摘自其它博客。最好看这里http://acmicpc.info/archives/1229A 这题非常简单,全场所有队都过了。B此题只需要枚举每个盒子还剩了几个糖,算出其概率就可以了,不过需要推一会儿公式。 i = 0,1,...,nC 分两部分处理。首先计算出周长为L的本质不同三角形个数,可以O(n)递推;而后对于原问题可以直接枚举n的约数来处理。源代码主干如下: for(int i=1; i<ran; i++)a[i]=add(a[i-2],i/3-i/4);for(int i=1; i<ran; i++)for(int j=i+i; j<ran; j+=i)a 阅读全文
posted @ 2013-04-23 22:57 yefeng1627 阅读(282) 评论(0) 推荐(0) 编辑
摘要: #include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int inf = 0x3f3f3f3f;const int N = 101;int n, m; struct Matrix{ int mat[N][N]; Matrix(){ memset(mat,0,sizeof(mat)); } void input(){ for(int i = 0; i < m; i++) for(i... 阅读全文
posted @ 2013-04-22 22:48 yefeng1627 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题意: 有N个顶点,每个顶点由M*M矩阵构成, 对于顶点 A, B,C, 若 A*B = C,则存在一条路 (a,c)路径为1, K次询问,问 (x,y)最短路径。 N,M 《= 100解法: 用矩阵乘法 暴力找出 顶点间关系, 然后Floyd跑一次。 好久没写矩阵乘法了。顺便当模板敲一次。View Code #include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int inf = 0x3f3f3f3f;cons 阅读全文
posted @ 2013-04-22 22:47 yefeng1627 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 乱搞.#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>#include<stack>using namespace std;const double Pi = acos(-1);const double eps = 1e-8;char str[310][10];int n, m;int sign(double x){ return x<-eps?-1:(x>eps);}stack<dou 阅读全文
posted @ 2013-04-22 21:18 yefeng1627 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题意: N个顶点(N<=10000),N-1条边,每条边含有一个权值,有T个基地,需要删除K条边,形成K+1个连通块,使每个连通块包含至少一个基地. 求最小花费.解法: 还是太弱. 看完题没敢想 O(N^2)的算法,最初想建模求最小割,后面又想到点分治,但是O(N^2)的空间复杂度。。。。。 其实题目给了10S, 将所有边从小到大排序后, 尝试删除该边,若此边两端 联通快,都包含基地,则删除. 处理出来K+1个联通块就是答案了.View Code #include<cstdio>#include<cstdlib>#include<cstring>#in 阅读全文
posted @ 2013-04-22 20:02 yefeng1627 阅读(140) 评论(0) 推荐(0) 编辑
摘要: Splay 的属性 1 struct Splay{2 int rt, cnt;3 int ch[N][2], pre[N], sz[N];4 LL sum[N], add[N], val[N];5 }Splay 的操作主要集中在 1. Rotate( x, d ) 旋转分为 左旋(d=0), 右旋(d=1) 2. Splay( x, goal ) 将节点x 旋转到 节点goal下 3. Rotate_To( k, goal ) 将左数第k个节点旋转到 节点goal 下 1 void rotate(int x,int d){ 2 int y = ... 阅读全文
posted @ 2013-04-17 12:59 yefeng1627 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题意 N个骑士,分别有个名字和战斗值。现在一个擂台上PK,第一个人上,之后的人一个一个上。若出现替换,则次数加1. 然后M次询问,每次一个K,问替换次数为K的序列,方案总数,以及字典序(骑士名)最小的方案输出。解题思路 DP优化总方案数 假定 p_1 < p_2 < ... < p_n 状态dp[i][k],表示前i个骑士已经分配完策略,这个时候放 j = [ i+1, n ] 中任一个。 当 p_j 放到 i+1 位置时, [ i+2, p-1 ] 中任意一个其实都不能替换掉 p_j , 则其在 [ i+2, n ] 这些位置可以随意放。 则我们得出转移方程... 阅读全文
posted @ 2013-04-16 21:18 yefeng1627 阅读(198) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页

Launch CodeCogs Equation Editor