随笔分类 - OJ_Codeforces
摘要:题目链接:http://codeforces.com/problemset/problem/732/F 题意: 给出一个有n个点m条边的无向图,保证联通,现在要求将所有边给定一个方向使其变成有向图,设f(x)为点x能到达的点的个数,要求使最小的f(x)最大,并输出方案。 思路: tarjan一下,答
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/627/A 题意: 告诉你s 和 x,a + b = s a xor b = x a, b > 0。 让你求符合条件的a b有多少对 思路: a + b = s , a ^ b = x ==> s - x =
阅读全文
摘要:题目链接:http://codeforces.com/contest/161/problem/B 题意: 有n个商品和k辆购物车,给出每个商品的价钱c和类别t(1表示凳子,2表示铅笔),如果一辆购物车中有凳子,那么这辆购物车中最便宜的那个物品的价格能减少50%,问你如何放这些物品才能使总价钱最少。
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/161/D 题意: 给你一棵树,问你有多少对点的距离为k。 思路: dp[i][j]表示离i节点距离为j的点个数,2次dfs,一次从底向上,另一次从顶向下。
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/27/E 暴力
阅读全文
摘要:题目链接:http://codeforces.com/contest/219/problem/D 树dp
阅读全文
摘要:题目链接:http://codeforces.com/contest/479/problem/E 题意: 给定一个启示的楼层a,有一个不能去的楼层b,对于你可以去的下一个楼层必须满足你当前楼层x与下一个要去的楼层y的距离小于x到b的距离。求出走k趟的方案数。 题解: dp[i][j] 表示第i趟 在
阅读全文
摘要:题目链接:http://codeforces.com/contest/558/problem/E 题意:有一串字符串,有两个操作:1操作是将l到r的字符串升序排序,0操作是降序排序。 题解:建立26棵线段树,类似计数排序思想。
阅读全文
摘要:题目链接:http://codeforces.com/contest/583/problem/D 给你t个长度为n的数组。问你最长不下降子序列的长度。 一开始用第一个n数组的lis和最后一个n数组的lis和中间最多相同的数字出现的个数相加。这是错的,比如5 6 3 4 1 2 可以发现数组的长度很小
阅读全文
摘要:题目链接:http://codeforces.com/contest/543/problem/D 给你一棵树,初始所有的边都是坏的,要你修复若干边。指定一个root,所有的点到root最多只有一个坏边。以每个点为root,问分别有多少种方案数。 dp[i]表示以i为子树的root的情况数,不考虑父节
阅读全文
摘要:题目链接:http://codeforces.com/contest/467/problem/C 求k个不重叠长m的连续子序列的最大和。 dp[i][j]表示第i个数的位置个序列的最大和。 前缀和一下就好了。空间可以优化,滚动数组就好了。
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/687/C 题目大概说给n个各有价值的硬币,要从它们中选出若干个组合成面值k,而要求的是各个方案里这些选出的硬币能组合出来的面值有哪些。 dp[i][j][k]表示到第i个硬币,组成面值为j,包含面值为k的方
阅读全文
摘要:题目链接:http://codeforces.com/contest/118/problem/D 有n个步兵和m个骑兵要排成一排,其中连续的步兵不能超过k1个,连续的骑兵不能超过k2个。 dp[i][j][x][y]表示表示用i个步兵和j个骑兵,末尾有连续的x个步兵,或者有连续的y个骑兵。 所以x
阅读全文
摘要:题目链接:http://codeforces.com/contest/444/problem/C 给定一个长度为n的序列,初始时ai=i,vali=0(1≤i≤n).有两种操作: n≤10^5,1≤x≤10^6. 感觉这是一个比较好的考察线段树区间更新的性质。 当区间的a[i]一样时,区间更新即可,
阅读全文
摘要:题目链接:http://codeforces.com/contest/719/problem/E 题意:操作1将[l, r] + x; 操作2求f[l] + ... + f[r]; 题解:注意矩阵可以是a*(b + c) = a*b + a*c ,还有update的时候传入矩阵
阅读全文
摘要:题目链接:http://codeforces.com/contest/712/problem/D A初始有一个分数a,B初始有一个分数b,有t轮比赛,每次比赛都可以取[-k, k]之间的数,问你最后A比B大的情况有多少种。 dpA[i][j]表示第i轮获得j分的情况数。因为第i轮只和第i-1轮有关,
阅读全文
摘要:题目链接:http://codeforces.com/contest/682/problem/D 给你两个字符串,求两个字符串中顺序k个的相同子串 长度之和。(注意是子串) dp[i][j][k][0] 表示a[i] == a[j]时,a字符串前i个和b字符串前j个,顺序k个相同的子串 长度之和 d
阅读全文
摘要:题目链接:http://codeforces.com/gym/101064/problem/D 问你两个数组合相加的第k大数是多少。 先sort数组,二分答案,然后判断其正确性(判断过程是枚举每个数然后二分)。
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/707/E 给你nxm的网格,有k条链,每条链上有len个节点,每个节点有一个值。 有q个操作,操作ask问你一个子矩阵的和是多少,操作switch将第i条链上的值0变原来的数or原来的数变0。 比较明显的二
阅读全文
摘要:题目链接:http://codeforces.com/contest/600/problem/E 给你一棵树,告诉你每个节点的颜色,问你以每个节点为根的子树中出现颜色次数最多的颜色编号和是多少。 最容易想到的是n*n的暴力,但是会超时。所以这里用到类似并查集的合并,对于每个子树颜色种数少的合并到颜色
阅读全文