- 博客(17)
- 收藏
- 关注
原创 Codeforces Problem - 13E Holes
Holes n个洞1~n,每个洞有一个power,a1~an。把球扔到第i个洞,它会蹦到第i+ai个洞去(一直往后蹦,直到n以外)。有m次操作,分为两种,0是询问把求扔到某个洞,最后能到达哪个洞以及会蹦多少次,1是修改某个洞的power。 这是在CF上一篇讲数据结构的博客上看到的题,学到了一个新的姿势。。方法是分块维护,每块的大小是sqrt(n)。对
2015-01-25 12:56:23 695
原创 Codeforces Round #287 (Div. 2) E
E. Breaking Good 题意:一个无向图,边长度都是1,有些边是失效的。现在需要找一条从1到n的最短路径,路径上失效的边需要修改为有效的,非路径边如果有效要修改为失效的。输出需要修改的边,使得修改量最少。 思路:问题很容易转化为求最短路,路径上的有效边尽可能多。方法是先SPFA求每个点到点1的距离,然后再次SPFA计算点1到每个点的最短路径
2015-01-25 01:03:17 668
原创 Codeforces Round #287 (Div. 2) C
507C - Guess Your Way Out! 题意:遍历一棵满二叉树,遍历方法是左右左右递归地遍历。树高度为h,最下层第n个节点是出口,问访问到出口前要访问多少个节点。 思路:按题目要求的顺序去递归遍历,判断出口在以当前节点为根的左子树还是右子树中,如果是在后访问的子树中,直接加上2^h,因为根加上另一颗子树刚好有2^h个节点,再往下递归。
2015-01-24 18:45:24 578
原创 Codeforces Round #286 (Div. 1) A
A. Mr. Kitayuta, the Treasure Hunter 题意:30001个点,下标为0~30000,有些点有宝藏。你从0往下标大的方向跳,第一步跳的距离为d。如果上一步跳的距离为l,这一步就可以跳l-1或l或l+1(距离必须大于0)。问最多拿到多少宝藏。 思路:dp。dp(i,j)表示当前位置i,上一步距离j能拿到的最大宝藏。但是j
2015-01-19 11:47:35 663
原创 Facebook Hacker Cup 2015 Round 1 解题报告
Homework 求一个区间[A,B]中素因数个数为K的数有多少个。做法是dp。对每个数i,找到它的某一个素因数d,i的结果就由i/d推得。找的方法是修改筛法。#include #include #include #include #include #include #include #include #include using namespace
2015-01-19 09:30:34 1368 1
原创 Codeforces Round #285 (Div. 1) B
B. Misha and Permutations Summation 题意:有两个0~n-1的排列p和q,设p是第x小的排列,q是第y小的排列,求0~n-1的全排列中第(x+y)mod(n!)小的排列。 思路:很容易想到康托展开。。但是n太大了,无法真正康托展开。所以用树状数组统计p和q中每个数后面有多少个比它小的数,然后求和,进位(最后一位满1进
2015-01-14 16:53:24 604
原创 Codeforces Round #257 (Div. 2) D
D. Jzzhu and Cities 题意:n个城市,首都在城市1,城市之间有n条公路和k条铁路(铁路一端必为首都)连接。问最多能够撤掉多少条铁路,使得首都到所有城市的最短路不增加。 思路:这个题我用了各种方法,比如先用公路求最短路,然后贪心加入铁路,不是WA就是TLE。。然后看了别人的题解,方法是跑一遍最短路(优先选择公路),记录每个点的前驱边,
2015-01-14 14:12:15 580
原创 Codeforces Round #285 (Div. 2) C
C. Misha and Forest 题意:一个无环的无向图,知道每个点连的边数和相邻点的异或和,求所有的边。 思路:模拟。弄一个队列维护叶子(度为1的点),删叶子维护异或和,新的叶子入队。#include #include #include #include #include #include #include #inc
2015-01-12 20:34:52 491
原创 Codeforces Round #267 (Div. 2) D
D. Fedor and Essay 题意:一篇文章由m个单词组成,你需要重写这篇文章。有n组同义词(x,y),x能用y代替,反过来不行。重写文章使得文章中含有最少的'r',且总字符数尽量少。 思路:先把所有大写字母转换成小写,然后用map把每个不同的单词转化成一个整型,建图,再用tarjan强连通缩点(因为可能有环)。。然后在缩点后的新图中dfs求解(
2015-01-11 23:03:08 651
原创 Codeforces Round #256 (Div. 2) C
C. Painting Fence 分治。每次有两种决策,要么全部竖着刷,要么横着刷刷满最低的栅栏(因为如果不刷满,还不如竖着刷)。如果横着刷,整个栅栏可能被切为若干部分,继续对每一部分这样求解。#include #include #include #include #include using namespace std;const i
2015-01-07 20:52:00 631
转载 一些存档。。。
#include #include #include #include #include #include #include #include #include #include using namespace std; const int NUM=7;//0~7的阶乘 int factory[NUM]={0,1,2,6,24
2015-01-06 20:32:43 647
原创 Codeforces Round #276 (Div. 1) B
B. Maximum Value 题意:给n(至多200000)个数a1~an,数的范围是1~1000000,找出最大的aimodaj,要求ai>=aj。 思路:对1~1000001中的每个数,找出比它小且最接近它的ai。然后枚举每个不同的aj,对每个数枚举它在1000000内的倍数,答案就可能出现在比这个倍数小的最大的ai上。#incl
2015-01-06 14:58:19 545
原创 Codeforces Round #278 (Div. 1) B
B. Strip 题意:n个数,需要把他们切割成尽量少的部分,每部分连续,长度至少为l,其中最大数与最小数的差不能超过s。 思路:首先,预处理每个区间内的最大数和最小数(spare table),然后就可以用dp的方法解决这个问题。dp的时候,利用预处理,对每个位置i找到以i为结尾,最左边能在哪个地方切割(二分查找,位置记为j),所以以i
2015-01-04 17:17:08 500
原创 poj 2823 Sliding Window
题意:n个数,求每连续k个数中的最大最小值。 思路:单调队列模板题。。以最大数为例,开一个队列,每个数按顺序入队,需要保证队列单调递减,如果入队时前面比当前的数大,就让前面的出队。如果队首到队尾的元素位置差超过k,就让队首出队。 为什么可以这样做呢,因为“窗口”的大小是k,晚来的一定晚走,如果晚来的比先来的大,那么先来的就没有存在的意义了;如果晚来的比先来的小,
2015-01-04 14:09:11 447
原创 hdu 5154 Harry and Magical Computer
题意:问拓扑排序是否能成功排序。 思路:dfs。使用两种节点标记,1表示开始进行排序,2表示已经排序完成。如果搜到了标记为1的点,说明失败。#include #include #include #include #include #include #include #include #include #include using namespace std
2015-01-03 22:52:22 568
原创 hdu 5155 Harry And Magic Box
题意:一个n*m的网格,每行每列都有珠宝。问有多少种不同的珠宝摆放方式能满足要求。 思路:dp。dp(i,j)表示n=i,m=j时的答案。因为n和m等价,可以设i>=j。显然,当j=1时,dp(i,j)=1,然后根据dp(i,j)可以推出dp(i,j+1)。比如你现在要计算dp(i,j),并且珠宝的放置时一列一列放的,你现在已经放好了前j-1列,需要摆放最后一列,前面的每一列肯定
2015-01-03 22:42:14 616
原创 Codeforces Round #284 (Div. 1) B
B. Name That Tune 题意:在T秒时间内按顺序听n首歌,辨认歌名。每一秒有一次辨认的机会,如果第i首歌上一秒没认出来,这一秒认出来的概率为pi。对于第i首歌,连续听ti秒时一定能认出来。求T秒总共辨认出歌名数的期望。 思路:概率dp。dp(i,j)表示已经辨认出i首歌,且第i首在第j秒辨认出来。朴素的状态转移需要O(n*T)会超时。。所以我
2015-01-02 14:23:00 610
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人