CodeForces
文章平均质量分 66
HouseFangFZC
oo
展开
-
Codeforces Round #310 (Div. 1) A B C D题
本题解包含题目:555ACase of Matryoshkas555BCase of Fugitive555CCase of Chocolate555DCase of a Top Secret原创 2015-07-10 09:55:06 · 977 阅读 · 0 评论 -
CodeForces 487A Fight the Monster
题意:打怪兽游戏 我的血量hpy、攻击atky、防御defy 怪兽的血量hpm、攻击atkm、防御defm 每秒我损失血量max(0,atkm-defy) 怪兽损失血量max(0,atky-defm) 如果某一时刻我活着怪兽死了 算我胜利 购买1点hp花费h购买1点atk花费a购买1点def花费d 问最少多少花费能保证胜利 题目中数字均小于100思路:数字很小想到原创 2014-11-26 11:25:07 · 998 阅读 · 0 评论 -
CodeForces 487C Prefix Product Sequence
题意:构造一个1~n的排列 使得n个前缀积%n是一个0~n-1的排列思路:首先确定n一定放最后 要不然会有%n会有多个0 这时n-1位置的前缀积为(n-1)!接着讨论n n为合数时只有n=4有解 因为如果n为合数一定可以拆成p*q的形式 明显pq|(n-1)!然后构造ai=(i+1)*inv[i] 因为(i+1)*inv[i] == (j+1)*inv[j]时原创 2014-11-26 11:51:58 · 1840 阅读 · 7 评论 -
CodeForces 487D Conveyor Belts
题意:n*m(10^5*10)的棋盘 每个格子有个箭头表示行走方向 有q(10^5)个操作 更改操作即改变某个位置的箭头 更改最多10^4次 查询操作即询问从(x,y)位置开始走最后走到哪 或者 死循环思路:我们发现n大m小 联想到可能3进制状压什么的 如果不更新明显dp一下就好 更新少 联想到分块搞因为分块有个很好的性质 “走出这一块,就不归我这一块管了”原创 2014-11-26 12:02:36 · 1062 阅读 · 0 评论 -
CodeForces 486C Palindrome Transformation
题意:n(10^5)个字符 光标停在第pos个字符上 光标可以左右任意移动 而且可以从最左移到最右也可以从最右移到最左 在光标处的字符可以按字母顺序或倒序更改 更改也可以a->z或者z->a 光标移动和字符更改都需要1s 问最短几s能把串变成回文的思路:最后的状态是一定的 因此更改的次数和策略无关 扫一遍就可以知道更改最少需要几s光标移动需要一定的策略 容易想到原创 2014-11-21 21:07:29 · 860 阅读 · 0 评论 -
CodeForces 486D Valid Sets
题意:给定一棵n(2000)个节点的树 每个节点上有个数字 问 有多少棵子树满足树中最大数字与最小数字的差不超过d思路:根据数据猜复杂度可能为n^2 想到尝试树形dp假如枚举现在树中的最大值 那么最小值可以求出 这时不在数值范围内的节点都可以标记掉那么假设这个最大值的点我一定选取 那么就可以dp出一定选这个点的情况下子树的种类数假设u是父节点 v是子节点原创 2014-11-21 21:22:05 · 931 阅读 · 0 评论 -
CodeForces 486E LIS of Sequence
题意:n(10^5)个数字的序列a 求每个位置i 它是不出现在任何LIS中 还是 出现在一些LIS中 还是 出现在所有LIS中思路:比赛时候唯一没做出的题… 赛后还是不会做… - -b 看了别人的代码觉得好精妙!!首先以O(nlogn)复杂度求出LIS然后我们倒序扫描序列a 对于位置i 如果lis[i]=LIS或者a[i]<big[lis[i]+1] (big[x]表示lis=x的a的最大值 这里的意思是 如果a[i]是某个LIS的最后一个 或者 能与某个LI原创 2014-11-21 21:29:15 · 1039 阅读 · 0 评论 -
CodeForces 490A Team Olympiad
题意:编号为1、2、3的同学分成一组 问 最多形成多少组 并输出方案思路:模拟3个栈暴力代码:#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef lon原创 2014-11-24 10:15:43 · 1363 阅读 · 0 评论 -
CodeForces 490B Queue
题意:一个队列 每个人记录了自己前面和后面的人 求队列顺序思路:明显站在奇数位置上的人记录了前后两个偶数位置的人 站在偶数位置上的人同样所以对于偶数位置 只要从0往后找就可以了对于奇数位置 只要先找到第一个人 然后往后找就可以了代码:#include#include#include#include#include#include#include原创 2014-11-24 10:19:16 · 1285 阅读 · 0 评论 -
Codeforces Round #274 (Div. 2)
昨天打了场div2 成绩不错AK了 希望以后还能有5:00的比赛…479A Expression 给你3个数字 不让换顺序 中间填+或*使结果最大 把情况写出来就好了…#include#include#include#include#include#include#include#include#include#include#include#i原创 2014-10-20 09:05:29 · 1182 阅读 · 0 评论 -
CodeForces 487B Strip
题意:n(10^5)个人分组 每组最少L个人 每组的差异为组中人最大价值-最小价值 要求差异均不超过S 问最少分几组思路:假设已经知道组的区间[l,r]那么计算差异就是简单的rmq问题 可以用线段树搞我们可以用dp[i]表示到i位置产生的最少组数假设从i位置开始分一组 会影响到哪些dp呢 我们可以利用二分+rmq找到这个组最远延伸到哪里 从L到最远点这个区间的d原创 2014-11-26 11:36:08 · 1843 阅读 · 0 评论 -
CodeForces 425D Sereja and Squares
题意:平面上有n个点 问 最多能组成多少个边与坐标轴平行的正方形思路:这是一个通过不断二分查找乱搞的题…首先枚举左下角 然后分别往上往右找左上角和右下角这时如果发现边长不想等就通过长边长度在短边的方向二分查找最接近的值 不停往上往右延伸如果发现边长想等了 那么要判断一下对应的左上角坐标出是不是有一个点怎么判断呢 通过将所有点hash出一个值 然后二分…反正这题就是各种二分乱搞 - -b 复杂度不好算 大概是n*(同x的点数+同y的点数)原创 2014-07-17 20:46:30 · 1772 阅读 · 0 评论 -
CodeForces Round #257 (Div. 2)
题目:A Jzzhu and Children ------ CodeForces 450AB Jzzhu and Sequences ------ CodeForces 450BC Jzzhu and Chocolate ------ CodeForces 449AD Jzzhu and Cities原创 2014-07-20 15:39:39 · 1272 阅读 · 0 评论 -
CodeForces 451D Count Good Substrings
题意:一个只包含a和b的字符串 问 它有几个长度为偶数和长度为奇数的“压缩回文串” 压缩的概念是 相邻的相同字符压缩成一个字符思路:串经过压缩一定满足如下形式 ……ababab…… 那么这样只要两端的字符相同则中间一定是回文的 因此对于一个a它作为左端点形成的回文串个数就等于它右边的a的个数 那么长度是奇数还是偶数呢 可以这么判断 如果a在奇数位置上和它匹配的a也在奇原创 2014-08-09 19:28:59 · 992 阅读 · 0 评论 -
Codeforces Round #262 (Div. 2) (460A 460B 460C 460D)
460A Vasya and Socks题意:n个物品每天用一个 m天得一个 问 最多连续用几天思路:没思路… 就是暴力…代码:#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){原创 2014-08-26 15:59:10 · 1158 阅读 · 0 评论 -
CodeForces 482C Game with Strings
题意:n个长为m的字符串 等概率的藏起来一个串 然后游戏者来猜藏起来的串是什么 每一步游戏者可以等概率的询问字符串的一个位置 再不断的知道一些位置后 游戏者就可以确定藏起来的串是什么 问 游戏者的期望步数思路:可以说是一道概率题 也可以说是期望题 总之感觉题目不错…首先如果我们枚举藏起来的串是哪个(复杂度n) 然后利用状压去dp维护猜某些位的状态的概率 以及对原创 2014-10-31 18:40:25 · 1953 阅读 · 2 评论 -
CodeForces 484B Maximum Value
题意:a序列有n(2*10^5)个数字 问在a[i]>=a[j]的情况下 a[i]%a[j]的最大值是多少思路:感觉是一道挺乱来的题……我们可以将ans表示为a[i]-k*a[j] 这样我们枚举k只要知道比k*a[j]大但是不到(k+1)*a[j]的值就好了 考虑到a[i]只要10^6大 因此可以用一个last数组记录小于等于i的数组中的数字 因此只要拿出last[(k原创 2014-11-19 19:37:06 · 1045 阅读 · 0 评论 -
CodeForces 484A Bits
题意:10000个询问 每个询问输入L和R(10^18) 输出在区间内二进制表示下1最多的数字 如果1个数相同输出最小的思路:YY一下 觉得后几位全是1的时候能保证1的个数多 那么如何构造出这个数字呢??将L和R都变成二进制 从高位到低位 L和R相同的那几位一定是不变的 因为要保证构造出的数字在区间内 然后分两种情况一是L和R一直相同 那就没什么好说的了原创 2014-11-19 19:24:31 · 845 阅读 · 0 评论 -
CodeForces 484D Kindergarten
题意:将含有n(10^6)个元素的序列a划分成几段 每段为连续的一些元素 每段的价值为段中最大值减去最小值 总价值为所有段的价值和 求 最大的总价值思路:不难想到一个dp的转移方程 dp[i] = max( dp[j] + max(a[j+1]...a[i]) - min(a[j+1]...a[i]) ) 但是dp是n^2的会TLE注意观察转移方程 其中的max-mi原创 2014-11-20 13:38:11 · 835 阅读 · 0 评论 -
CodeForces 490C Hacking Cypher
题意:一串数字 从某个地方分开成两个数字 要求前面的数字被A整除 后面的被B整除 求分开的两个数字思路:假设我们将原串S这样分成两个数字XY 则X%A==0 Y%B==0那么我们可以处理从头到i这个位置%A的值为多少 这样很容易判断第一个条件对于第二个条件我们可以这样理解 S % B == ( X % B * 10^|Y| % B ) + Y % B如果Y%B原创 2014-11-24 10:29:47 · 1594 阅读 · 5 评论 -
CodeForces 490D Chocolate
题意:2块矩形巧克力 如果边长可以整除2 则可以从一半出掰开 吃掉一半 如果可以整除3 则可以从1/3处掰开 吃掉1/3 问 最少吃几次 能使得2块面积相同 输出最后时刻的边长思路:面积最多只有10^18 因此形成的面积的种类数最多几万种 我们可以利用面积来暴搜出所有状态 然后找面积相同时的最少步数PS:数论的方法更好代码:#include原创 2014-11-24 10:35:53 · 860 阅读 · 0 评论 -
Codeforces 508C Anya and Ghosts
题意:m只鬼要来 你需要在鬼来的时候点起至少r根蜡烛 每根蜡烛点亮需要耗时1s并且持续亮ts 不能同时点多根蜡烛 问最少需要多少蜡烛思路:贪心即可 每当鬼来之前保证r根蜡烛亮着 用一个队列维护点蜡烛的时间 如果出现“不能点亮足够r根蜡烛”或者“鬼来的时候蜡烛有些熄灭了不如r根”则判定为失败代码:#include#include#include#include原创 2015-01-29 13:25:46 · 814 阅读 · 0 评论 -
Codeforces 508E Arthur and Brackets
题意:给出括号序列中每个右括号可能离对应左括号多远 求这个括号序列思路:记忆化搜索解决 用f[l][r]表示对于第l个左括号到第r个左括号区间最前面的左括号与其对应右括号的距离状态只有n^2个 不用担心TLE求f[l][r]的方法为 如果最前的左括号可以包住l+1~r个括号就尝试包起来 否则将l~r分治为l~x和x+1~r两个子问题代码:#include#i原创 2015-01-29 13:34:48 · 1159 阅读 · 0 评论 -
CodeForces 501D Misha and Permutations Summation
题意:n(2*10^5)个元素的排列有n!种 用Perm(x)表示字典序第x的序列(从0开始) 用Ord(排列y)表示排列y的字典序 现在输入排列p和q 求 Perm([Ord(p)+Ord(q)]%n!)思路:容易想到 对于第i位p[i] 如果它是第d小的数字 那么说明比它小的d-1个数字所产生的全排列都已经计数过了例子 35142 第4位是4 它是第2小的原创 2015-01-12 21:08:02 · 1444 阅读 · 0 评论 -
CodeForces 501C Misha and Forest
期末复习各种事 好久没做题了… 还好有ChineseRound题意:n(2^16)个点组成的森林 给出每个点的度以及相邻点的异或和 求 输出所有边思路:因为是森林 所以最多n-1条边 那么我们直接从叶子开始bfs 因为叶子度为1 它的所记录的异或和就是旁边的点复杂度O(n) 唯一需要注意的就是以d[u]==1进入队列的点不一定有边要输出 例如 1-2 这棵原创 2015-01-12 20:53:29 · 1356 阅读 · 0 评论 -
CodeForces 520C DNA Alignment
题意:一段DNA序列(10^5长度) 定义h函数为两序列相同碱基个数 p函数为分别移动两个DNA序列后所有可能的h函数之和 问使p最大的序列有多少个思路:根据p函数的定义 我们发现p这个函数其实就是A序列每个碱基和B序列每个碱基比较再乘一个n因此可以贪心构造B序列 即每次新加一个碱基必定是A序列中出现次数最多的碱基那么最后的答案就是A序列中出现次数最多的碱基种类数的n原创 2015-03-02 22:33:35 · 1243 阅读 · 0 评论 -
CodeForces 520D Cubes
题意:二维平面内有一个图形由n(10^5)个标有0~n-1的方块组成 保证它是稳定的 即每个方块要么落在地面上 要么下面(边或点相交)有至少一个方块支撑 现在两个人轮流拆这个图形 要求拆的过程中图形仍稳定 拆下的方块上的数字会形成一个n进制的数 先手想让这个数最大 后手想最小 问最后这个数字是几思路:简单的贪心思路 在不毁坏稳定性的前提下 先手拿大数字 后手拿小原创 2015-03-02 22:42:54 · 1294 阅读 · 0 评论 -
Codeforces Round #200 (Div. 2)
打算从200开始刷到现在的 谢谢思路就好了A:和上一次输入不一样就ans++B:每次找两个最大的匹配一些C:假设现在电阻为x/y 串连时变为(x+y)/y 并联时变成 y/(x+y) 可见同样消耗1个电阻 形成的新值互为倒数 这个结论允许我们将电阻值的分子分母随意换(不影响使用电阻总数) 明显电阻值>1的时候 我们采取串联一定整数的电阻 因此可以得出方法 电阻>1时原创 2015-03-14 10:42:25 · 768 阅读 · 0 评论 -
CodeForces 555E Case of Computer Network
题意:n(2*10^5)个点m(2*10^5)条边的无向图 要求给无向边定向 使得最后的有向图满足q(2*10^5)个指令 每个指令表示为s->e 即s到e有通路 问 是否有可能思路:假设无向图中有圈 那么定向时一定也定成圈 因此想到连通分量概念 容易分析出只有桥的定向才值得讨论 因此可以先对图做边连通分量缩点由于题中提示图可能不连通 因此得到了森林我们要原创 2015-07-10 16:39:39 · 1084 阅读 · 0 评论 -
Codeforces 508D Tanya and Password
题意:n(10^5)个串每个串3个字符 两个串abc、xyz能拼在一起前提是b=x&&c=y 它们能拼成ab(x)c(y)z 求n个串品在一起的串思路:将串abc变成ab->bc的一条边 则原题变成了有向图的欧拉路径问题有向图欧拉路径算法就是遍历 因为欧拉路径其实就是“每条边走一遍”代码:#include#include#include#include#i原创 2015-01-29 18:50:14 · 959 阅读 · 0 评论 -
CodeForces 484E Sign on Fence
题意:n(10^5)个模板形成的栅栏 q(10^5)个询问 每个询问要求在[u,v]木板区间内摆放一个宽度为w的矩形 问矩形最大的高是多少思路:对于每个询问 可以通过logn的二分来将求解最大h的问题转化为当前h‘情况下的判定问题为什么可以二分呢 因为如果我们将木板排序 从大到小的依次放置它们的位置上 那么对于某一时刻 线段上连续的1就代表了矩形的宽 同时这时原创 2014-12-03 21:56:06 · 775 阅读 · 0 评论 -
CodeForces 490E Restoring Increasing Sequence
题意:一个严格递增序列 某些数字的某些位被盖住了 求 恢复后的序列思路:贪心 让每个数在大于前一个的基础上尽量的小先讨论数字长度len[i]len[i]>len[i-1] 除了第一位如果是?就填1以外 其他?全填0len[i]==len[i-1] dfs搜索num[i]格式下大于num[i-1]的最小的数代码:#include#include#in原创 2014-11-24 10:42:58 · 1085 阅读 · 0 评论 -
CodeForces 490F Treeland Tour
题意:一棵树 对于原创 2014-11-24 10:48:36 · 1382 阅读 · 2 评论 -
CodeForces 487E Tourists
题意:n(10^5)个点的图 旅行者在每次旅行都要买纪念品 每次旅行为u->v的任意简单路径 购买的纪念品为路径上最便宜的纪念品 有q次询问 每次询问要么改变一个点的纪念品价格 要么询问一次旅行所买的纪念品价格思路:很明显要先做点双连通(一个连通块内随便走) 然后缩点 形成了一棵树 这棵树上的路径具有“割点-非割点-割点-非割点…”这种规律然后因为是树上路径的问题原创 2014-11-27 15:11:56 · 2226 阅读 · 0 评论 -
CodeForces 478E Wavy numbers
题意:如果一个数它的每一位(除了最高最低位)都大于或小于它两边的数字 则这个数字叫波浪数 输入n和k (10^14) 求%n==0的第k小的波浪数 如果没有或者大于10^14就输出-1思路:这也算是一种分治的搜索策略吧 meet-in-mid由于数字最多14位 因此可以暴力高7位和低7位(均为80+w种) 然后枚举高位和低位去拼这题对于代码书写要求较高!!原创 2014-11-06 21:53:54 · 1222 阅读 · 0 评论 -
CodeForces 489D Unbearable Controversy of Being
题意:n(3000)个点m(30000)条边的有向简单图 统计题目中所画的菱形数目思路:我们将菱形可以看作a->c点距离为2的两条路 那么假设我们枚举i j两点同时知道i->j距离为2的路径条数 就可以用简单的组合数计算如果暴力计算路径条数则是n^3的 不过我们可以利用距离为2这个特点 我们同时用邻接表和邻接矩阵存储图 通过邻接表枚举所有边m 这时知道i->k距离为1原创 2014-12-02 21:22:10 · 1191 阅读 · 0 评论 -
CodeForces 489E Hiking
题意:数轴上有n(1000)个点 每个点有个距离源点的距离xi和美观值bi 主人公站在源点 他希望每步步长len 但每一步必须落在n个点其中一个上 且行进方向唯一 走到点n后可以计算旅行的价值对于所有走过的点i val = sum( sqrt( abs(x[i]-x[i-1]-len) ) / b[i] ) 目标val尽量小 打印路径方案思路:第一次做分数规划题原创 2014-12-02 21:42:27 · 1133 阅读 · 0 评论 -
CodeForces 489F Special Matrices
题意:n(500)*n的矩阵 每行每列只有两个1 现在给出前m行 问 有几种合法的矩阵思路:只需要考虑每列上有几个1 然后按行扫描 每次维护行内只有2个1 这样就能构造出合法矩阵那么我们定义dp[i][j][k]表示扫描到第i行有j列是包含1个1的有k列是包含2个1的 这时500^3数组开不下 于是滚动i那么对于dp[i][j][k]如果n-j-k>=2原创 2014-12-03 13:02:18 · 1117 阅读 · 0 评论 -
CodeForces 492E Vanya and Field
题意:n*n的矩形内有m(10^5)个点 从任一点开始以速度向量(dx,dy)移动 直到走到曾经走过的位置 问 从哪里开始 可以经过最多的点数 dx和dy均与n互素思路:很容易想到以dx,dy移动的话 走的一定是一个圈 不会是出现“蝌蚪形”然后循环 注意题意最后一句 而且每个x坐标一定只经过一次那么对于m个点 我们可以求出它是(0,y)这个点可以到达的原创 2014-12-03 15:31:50 · 1127 阅读 · 0 评论 -
CodeForces 425A Sereja and Swaps
题意:一串数字 最多可以做k次交换数字 求 最大连续和是多少思路:n^2暴力枚举所有区间 那么如果要换数字 一定是从区间外拿大数换区间内的小数 优先队列可以完成操作原创 2014-07-17 20:02:04 · 1121 阅读 · 0 评论