自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

转载 因为我们是OIER

我们是OIer,所以我们不用在跑道上挥汗如雨;不用在球场上健步如飞;更不用在没事的时候,经受非人的体能训练……但是,我们却要把头脑高速运转,还要接受一大堆大学生也只是“了解即可”的知识,把一个个抽象的问题转化为一篇篇优美的代码,才能在F9按下以后获得欢呼。不要以为我们机房里没有风吹,没有日晒,就比勤劳的体育生们

2015-11-09 08:39:56 1017

原创 欧拉这个函数

1).开始的练习①bzoj2190.仪仗队有一个整齐的 n * n的方阵,现在站在左下角看这个方阵,最多能看到几个人我们想一下如果把这个正方形沿 y = x 这条线分开,分成两个三角形,这两个三角形上的可以看到的点是完全相同的,其实就是找横纵坐标互质的点,即求出∑ψ( 1 ) ~ ψ( n ) 就是一个三角形上的可以看到的点,再把答案乘以 2,但是对角线上的那个点被计算了两

2015-11-24 08:16:15 410

原创 vijos1144.小胖守皇宫(树形DP)

一棵树有 N 个节点,现在需要将所有节点都看守住,如果我们选择了节点 i,那么节点 i 本身,节点 i 的父亲和儿子都会被看守住,每个节点有一个选择代价,求完成任务所需要的最小的代价。显然这是一道树形DP。根据每个节点其实有只有三个状态:①被自己看守;②被儿子看守;③被父亲看守。我们设这三种状态分别为 F1,F2,F3。当然最终作为答案的根节点没有父亲就从 F1,F2里面选小的。接下来我们

2015-11-20 10:05:36 1543 1

原创 小小的模线性方程(组)

1).poj1006.生理周期已知四个数 p, e, i, d,求一个数a,满足 a % 23 = p,a % 28 = e,a % 33 = i,输出 a - d。特别地,a 不能超过 21252。因为 23,28,33 两两互质,所以这道题就是中国剩余定理。#include using namespace std;typedef long long LL;LL

2015-11-20 07:42:05 385

原创 简单的欧几里德与扩展欧几里德

1).扩展欧几里德的起手题——NOIP2012.同余方程其实就是模版。

2015-11-19 10:55:49 439

原创 UVA-OJ.关于数论的成长练习

1). UVA11582.Colossal Fibonacci Numbers! 求斐波那契数列第 ( a ^ b ) 项模 N 的值。斐波那契数列在模 N 的情况下会有循环节,也就是说当出现连续两项分别等于 F[ 0 ],F[ 1 ] 的时候我们就找到了循环节 T,所以循环节 T 一定在 N ^ 2 的长度内出现。因为 N 比较小,就可以先求出 F[ 1 ] ... F[ N ^ 2 ]

2015-11-18 16:21:46 470

原创 poj3696.The Luckiest number (阶 && 欧拉函数 && 欧几里德)

给定一个正整数 L ,问至少多少个 8 连在一起组成的正整数可以是 L 的倍数N 个 8 组成的自然数是 (10 ^ N - 1) / 9 * 8。原题即为求最小的 N 满足 (10 ^ N - 1) / 9 * 8 = k * L。设 t = gcd(L, 8)。上式即为8(10 ^ N - 1 ) /  t = 9kL。显然 8/t, 9L/t 都是整数,且 gcd(8

2015-11-17 20:43:13 479

原创 usaco.section1.5 && 2.1

(section1.5) SuperPrime Rib找出N 位的特殊质数,如 7331 就是一个特殊质数,因为 7331 是质数,733 是质数,73 和7 也是质数,按升序输出算法1:通过打表观察, 1 位的质数只有 2,3,5,7,而后面的只能在末尾添加 1,3,7,9这几个数。所以我们先确定 1 位的,然后 DFS 后面的,每次 O( sqrt(n) ) 判

2015-11-13 09:04:55 371

原创 bzoj1787.紧急集合(倍增LCA)

有一棵树有 N 个结点,共有M 次查询,每次询问树上三个点到树上哪个点汇合距离最近,输出这个汇合点和最短距离倍增 LCA,每次询问两两求LCA ,三个 LCA 深度最深的点是集合点。#include #include using namespace std;const int MAX_N = 500005;struct node{ int v, w, next;}

2015-11-12 16:24:10 957

原创 bzoj1088.扫雷Mine (模拟 || DP)

像经常玩的扫雷有一样,只不过场地变成了 n * 2 的,且保证第二列没有雷,现在告诉你第二列的数字,求合法的方案数感觉自己智商没救了,只想着怎么 DP,怎么转移,竟然没有发现如果前两个确定了整个的就都确定了这个简洁优美的性质!!这样只用枚举前两个是什么就可以了啊!另外我真的看不懂劼老司机的 DP 是怎么做到的,各位也可以去看看,大神们懂了求教我。#include #include

2015-11-12 11:40:54 441

原创 bzoj1022.小约翰的游戏John(博弈论 NIM游戏)

有 n 堆石子,每次可以在任意一堆中取 1 个 或若干个或把这一堆全部取完,但是不能一个不取,先取完算输,问先手获胜还是后手获胜膜 DZY 大神:http://dzy493941464.is-programmer.com/posts/39629.html#include using namespace std;int n, x;int main(){ int T; sc

2015-11-12 10:07:53 507

原创 usaco.section1.4 && 1.5(2015.11.12)

(usaco.sectiorn1.4)Mother‘s Milk有 A, B, C 三个桶,每个桶有一定的容量,起初A, B 中没有任何东西,而 C 中装满了牛奶。可以将 C 中的奶倒入A 或 B 中,要么把被倒桶装满,要么把倒入桶倒完,问当 A 中为空时,C中可能有多少牛奶。直接暴力搜索#include #include using namespace std;

2015-11-12 08:41:29 485

原创 bzoj1003.物流运输(最短路 && DP)

有 M 个点、 e 条边的无向图,要走 N 次,每次一次都有一些点因为各种原因而不能走,所以不得不改变线路,每次改变线路的花费K,而总代价 = 每次走的路径长之和 + 改变线路的次数 * K, 最小化这个总花费。因为数据比较小,枚举计算 g[ i ][ j ] 代表从第 i 次 到第 j 次,不经过任何这几次不能用的点( 只要不能用过就算)的最短路,这个可用spfa 求之。

2015-11-11 20:46:26 661

原创 bzoj1935.园丁的烦恼 (离散化 && 树状数组)

(SHOI2007) 平面内有N 个点,有 M 个查询,每次询问一个以 ( Ai, Bi ) 为左下角,( Ci, Di ) 为右上角的矩形内有多少个点这种问题首先想到的应该是二维线段树或者树状数组,但是这道题中N, M 都是 500000,二维的肯定为超出空间限制,这能用一维。同时这道题中没有中途修改操作,所以可以离线做。把这些点离散化,询问的点也算在内,按 X 为第一关键字,是

2015-11-11 16:09:28 676

原创 usaco.section1.4.Arithmetic Progressions(枚举)

一个等差数列是一个能表示成 a, a + b, a + 2b, ..., a + n * b ( n = 0,1,2,3,... ) 的数列。在这个问题中a 是一个非负的整数, b 是正整数。写一个程序来找出在双平方数集合(双平方数集合是所有能表示成p 的平方 + q 的平方的数的集合,其中 p 和 q 为非负整数) S 中长度为 n 的等差数列。枚举公差和初值,然后判断

2015-11-11 10:23:59 434

原创 usaco.setion1.3.skidesign(枚举)

有 N 座山峰做滑雪场,每个的高度为 Hi ( Hi 因为山峰的高度都很小,我们可以枚举所有差值为 17 的数 l, r ,此时当有山峰大于 r 或 小于 l 的话就改变这个山峰,得到一个费用来更新答案。#include #include using namespace std;const int MAX_N = 1005;int N, al[MAX_N];int doi

2015-11-11 10:15:08 471

原创 usaco.section1.3 wormhole(枚举)

有 N 个虫洞,将这些虫洞两两分组,同组的两个虫洞可以互相到达,使得奶牛从坐标系某个位置出发,一直沿+x 方向走时会陷入无限循环因为 N 比较小,可以枚举所有的两两连接情况,然后判断可行不可行#include using namespace std;const int MAX_N=12;int N, x[MAX_N + 1], y[MAX_N + 1];int next

2015-11-11 10:10:13 455

原创 usaco.section1.3.Combination Lock(暴力模拟)

有一个三维密码锁,每一维是 ( 1, n )  之间的一个数,现在有两个预设密码,求在所有的可能组合而成的密码中,有多少每一维上的数字与两个预设密码中的任意一个相差 2 ,注意密码锁是环形,即 n 后面是 1。暴力模拟#include #include using namespace std;int n, a, b, c, d, e, f;void init(){

2015-11-10 10:26:41 528

原创 usaco.section1.3.Prime Cryptarithm

有 n 个(1, 9) 的数字,用这些数字填满一个三位数成两位数的乘法竖式,满足竖式上的所有数都是所给数字构成,且竖式成立,相乘结果只能为四位数,求方案数。暴力枚举,然后模拟#include using namespace std;int n, a[15], p1[6005], p2[6005], b[5], tot1 = 0, tot2 = 0, ans = 0;bool

2015-11-10 09:19:57 367

原创 usaco.section1.3.Barn Repair

在长度为 s 的排成一行的牛棚中,有n 个需要被木板覆盖,但是只有 m 块任意长度的木板,最小化所需木板总长度贪心,先将 n 个需要覆盖的牛棚用一块木板覆盖,这样的话其中比存在覆盖了多余的一些空白区域,然后按从大到小的顺序依次删除m 个空白,就得到了答案。正确性显然,要总的最小,就把最大的 m 个删掉。还有一种动态规划的算法,没有想到,但是 nocow  的题解上有写,可以借鉴

2015-11-10 08:49:20 344

原创 bzoj1271.秦腾与教学评估

有 n 个检查小组,在一个( 0 , 2 ^ 31 - 1 ) 的区间中检查,每个小组的分布情况我们这样描述:s 代表起点,e 代表终点,d 代表从起点开始每隔d 个位置安排一个人到终点结束。询问整个区间中有没有一个位置为奇数个人。有输出这个位置和位置上的人数,否则输出 " Poor QIN Teng:( ";很机智的方法,用前缀和表示奇偶,然后二分答案。我一心想着线段树,结果还没搞出

2015-11-09 19:44:17 754

原创 bzoj1207.雷涛的小猫

有 n ( 5000 ) 棵柿子树,每棵上面都有若干柿子且每棵树高度均为H ( 5000 ),现在要从树顶开始吃柿子,每次可以使自己的高度下降 1 ,但是所在的树没变,或者换到任意一棵树上,但是高度会降低delta,问到达地面 ( 高度为 0 ) 时,最多能吃多少柿子读题之后,首先想到一个最朴素的DF:设 F[ i ][ j ] 表示当高度为j 时,在第 i 棵树上能吃到的最大的柿

2015-11-09 14:53:20 409

原创 usaco.section1.2.Dual Palindromes

找到 n 个 比s 大的,在两种或两种以上的进制( 2 - 10 进制 )下是回文串的数,并输出出来#include using namespace std;int main(){ freopen("dualpal.in", "r", stdin); freopen("dualpal.out", "w", stdout); int n, s, t = 0, num; sc

2015-11-09 11:48:03 318

原创 usaco.section1.2.Palindromic Squares

判断 1 - 300 (十进制)之间,其平方数在 k 进制下为回文串的数,输出其在 k 进制下的结果,和其平方在k 进制下的结果#include using namespace std;int k;char code[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',

2015-11-09 11:21:02 496

原创 poj1014.Dividing (暴力 && 搜索)

有价值为 1 - 6 的物品分别为 N1 - N6 件,问能否平分这些物品使得两部分的价值和相同。网上基本都说是多重背包,但是我没写过不太会,就写了个暴力水了水。#include using namespace std;int n[7], sum, t = 0;bool flag = 0;void dfs(int v, int x){ if(flag) return;

2015-11-06 09:53:12 463

原创 hdu1058.Humble Numbers

找出自然数中第 n 个质因子中只含 2,3,5,7 的数。/*纯模拟*/#include #include #include using namespace std;const int MAX_N = 6000;int n;long long f[MAX_N];void doit(){ f[1] = 1; f[2] = 2; f[3] = 3; for(int i

2015-11-05 14:44:45 290

原创 矩阵覆盖那点事儿

用 1 * 2 的小矩形完全覆盖 3 * n 的矩形有多少种方案。显然的,当 n 为奇数的时候无法完全覆盖,即此时的答案是0;当 n 为偶数的时候,首先我们以 2 为一个单位,每个 3 * 2 的矩形完全覆盖共有 3 个方法,以 4 为一个单位,每个3 * 4 的矩形完全覆盖共有2种方法,...依次类推。这样得到方程:F[ i ] = 3 * F[ i - 2 ] + 2 * ( F[ i -

2015-11-05 13:47:04 1494

原创 bzoj1008.越狱(排列组合 && 快速幂)

有 n 个有信仰的人,信仰共 m 种,每个人只有一种信仰,当两个相同信仰的人遇到一起,他们便会逃走,求有多少中排列方式使得可能有人逃走, 即存在两个相同信仰的人相邻,答案对 100003 取模。第一种:首先我我们考虑 f [ i ] 代表前 i 个连续的人可能逃走的可能方案。当前面 i - 1 个人中已经会有人逃跑了,第 i 个人的信仰就无关紧要,可以是m 中的任意一种,则 f [ i

2015-11-05 11:13:00 424

原创 poj3921.Destroying the bus stations( 迭代加深搜索 && BFS )

有一张 n 个点, m 条边的有向图,要你删除最少的点使得 1 -> n 的路径长度大于 k ,两点之间路径长均为 1 ,1 号点和 n 号点不能被删除。因为数据规模比较小,直接搜索(迭代加深),枚举删除的点数同时也作为深度,先 BFS 找到一条从 1 到 n 的路径,然后依次删除上面的点,分别进行 BFS 再次寻找路径,看能否大于k。#include #include using

2015-11-05 09:54:54 344

原创 bzoj4291.Kieszonkowe(大根堆 && 贪心)

(PA2015)给定n 个数, 请从中选出若干个,使得总和为偶数,求最大的总和首先因为数据都是正数,所以偶数都加进去,把奇数放入大根堆中,然后每次取最大的前两个奇数加入答案,知道堆中没有数,或只剩下一个奇数。#include #include using namespace std;const int MAX_N = 1000005;int n, a[MAX_N];pr

2015-11-04 10:11:19 613

原创 bzoj3211.花神游历各国(线段树)

一个序列,有两个操作:1、将一段区间的数开方; 2、求一段区间的和;        因为开平方不支持区间修改,只能进行单点修改,这样的话复杂度就会变成 O(n^2);如何优化?因为是开平方,所以10 ^ 9 的数最多进行6 - 7次左右就会变成 1 或 0,就没有必要在开方了,这里就打一个标记就可以了。不知道网上为什么那么多人要写并查集,可能会更快,还没想到。/*Author: JDD

2015-11-04 09:00:50 588

原创 bzoj4318.osu!(期望DP)

有 n 个操作,有 Ai 的概率成功,连续成功 x 次 对答案的贡献是 x ^ 3,断掉就要重新记,求期望的答案         ( 期望DP )这道题和 bzoj3450 一样,不过要注意的是平方的期望不等于期望的平方!#include #include using namespace std;const int MAX_N = 100005;int n;double

2015-11-03 21:19:44 973

原创 bzoj3450.Easy(期望DP)

( tyvj1952 ) 有一个字符串,由 ' o ', ' x ', ' ? ' 组成,连续的 Y 个  ' o ' 对答案的贡献是 Y ^ 2,而 ' x ' 不会产生贡献,' ? ' 代表有 50% 的几率代表 ' o ',另一半代表 ' x ',求期望的贡献。        当第 i 位为 ' x ' 时,贡献为 0; 当第 i 位为 ' o ' 且前面有 Y 个连续的 ' o ' 时

2015-11-03 20:57:13 700

原创 bzoj2793.Vouchers(调和级数)

(poi2012)有 n 次访问,每次来 Xi ( 1         用一个数组 MX[ x ] 记录x的倍数中最小的能取的数是哪个,每次累加 x;这样复杂度就是 n(n / 1 + n / 2 + n / 3 + ... + n / n) = nlogn ( 调和级数 )./*Author: JDDPROG: bzoj2793.vouchersDATE: 2015.11.03*

2015-11-03 14:34:53 586

原创 bzoj2789.Letters(贪心 && 逆序数)

有两个长度为 n 的由大写英文字母组成的字符串A, B,问最少需要多少次交换( 相邻两个交换 )才能使 A 变为 B ( 保证可以实现 )首先的一个想法就是:要想总交换次数最小,A , B 中的相同字母要相距的距离最小( 贪心 )。然后就可以根据 A 中每个字母的位置, 把 B 对应成一个序列,求这个序列的逆序数。/*Author: JDDPROG: bzoj2789.letters

2015-11-03 10:46:37 475

原创 POJ1742.Coins(背包DP && 男人八题)

有 n 种硬币,面值为 Ai ( 1        本来是在找网络流的题做,一位同学推荐这道题,然而思考了半天我才发现!这位仁兄的题号写错了!(我说怎么这题越看越像DP呢...)然后才知道这是LTC的男人8题之一。       言归正传,读题后首先想到的算法就是 O (n * m * sum( Ci )) 的最基本的DP:for( int i = 1; i    for(int

2015-11-02 15:18:02 416

博弈论——取石子游戏

通过取石子游戏,基本认识理解博弈,掌握基本模型和解题思路

2015-11-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除