- 博客(10)
- 收藏
- 关注
原创 CF895C: Square Subsets题解
题目链接http://codeforces.com/contest/895/problem/C题意从n个数中选取不少于1个数, 使得这些数的乘积为平方数的方案数.分析注意到这n个数都为不超过70的正整数, 由算数基本定理可得这n个数一共最多需要19种素数来构造, 如: 17 = 17 36 = 2 * 2 * 3 * 3 70 = 2 * 5 * 7 注意到, 若
2018-02-03 20:05:03 308
原创 CF918D: MADMAX 题解
题目链接: http://codeforces.com/contest/918/problem/D分析定义DP[u][v][c]: 表示自己当前在u点, 对手在v点, 下一步走的边的权值需要大于等于c时的胜负情况, 1表示自己胜, 0表示自己负. 若u点当前能转移到的所有点中, 有一点x, 能使得DP[v][x][xc] = 0 (其中xc表示u到x这条边的权值), 即说明当前的状
2018-02-01 20:50:19 271
原创 CF917A: The Monster 题解
题目链接: http://codeforces.com/contest/918/problem/C分析一个长度为|s|的字符串是pretty的充要条件如下: 1. |s| is even. 2. 0 ≤ s[1..i].count(‘(‘) + s[1..i].count(‘?’) - s[1..i].count(‘)’) for each 1 ≤ i ≤ |s|. 3. 0 ≤
2018-02-01 19:26:18 433
原创 HYSBZ - 1503 : 郁闷的出纳员 (Treap 平衡树)
题目链接https://vjudge.net/problem/HYSBZ-1503分析此题中描述的各种命令可以用Treap来高效实现. 对于I k命令, 直接调用Treap的插入操作即可. 对于F k命令, 也可直接调用Treap的查询第k小的操作. 对于A k和S k命令, 假如直接暴力修改整棵树的结点, 那么会超时. 其中一个优化方法就是将结点中存的绝对工资改为相对工资, 再
2018-01-25 22:26:46 275
原创 codevs1985: GameZ游戏排名系统(Treap)
题目 GameZ为他们最新推出的游戏开通了一个网站。世界各地的玩家都可以将自己的游戏得分上传到网站上。这样就可以看到自己在世界上的排名。得分越高,排名就越靠前。当两个玩家的名次相同时,先上传记录者优先。由于新游戏的火爆,网站服务器已经难堪重负。为此GameZ雇用了你来帮他们重新开发一套新的核心。 排名系统通常要应付三种请求:上传一条新的得分记录、查询某个玩家的当前排名以及返回某个区段内的排名
2018-01-22 15:37:38 698
原创 最大化平均值 - 二分搜索
题意有n个物品的重量和价值分别是xix_i和viv_i. 从中选出k个物品使得单位重量的价值最大. 1<=k<=n<=10410^4, 1<=wiw_i, viv_i<=10610^6.题解1(二分搜索)分析 check(x): 可以选择使得单位重量的价值不小于x.二分搜索的难点在于check函数的编写和边界的移动.代码#include<set>#include<map>#includ
2017-04-13 21:17:33 300
原创 POJ - 1064
题意有N条绳子, 他们的长度分别为LiL^i. 如果从它们中切割出K条长度相同的绳子的话, 这K条绳子每条最长能有多长? 答案保留到小数点后两位. 解法1(二分搜索)分析定义check函数: check(x): floor(LiL^i/x)的总和是否大于等于K.这道题需要注意的是输出的处理, 假如我们用%.2f直接输出r, 那么会WA, 因为%.2对r的小数点第三位的处理是四舍五入. 此外
2017-04-13 19:38:17 647
原创 POJ - 3254
题意农夫在一块M*N的农田上种庄稼,其中有些能种,有些不能种,且要求所种庄稼不能相邻,现求种田方案数. 1<=M,N<=12. input 2 3 1 1 1 0 1 0 output 9题解1(状压DP)分析每一行的状态都可以用一个整数来描述.所以有: dp[i][j]: 前面i+1行, 且第i行的状态为j 的方案数.首先初始化dp数组为全0, 然后先判断第0行的1<< n个状
2017-04-11 19:37:25 230
原创 POJ - 1321
题意略题解1(状态压缩DP)分析之前所用的DP数组下标都是整数的形式, 为了用DP求解, 就需要将题目所给的棋盘抽象成整数. 注意到一行棋子的可能状态可以用1<代码#include<set>#include<map>#include<cmath>#include<queue>#include<cctype>#include<cstdio>#include<vector>#includ
2017-04-11 16:12:44 229
原创 C程序设计大赛B题
题意第一行输入T, 代表T组样例, 接下来输入T行, 每行给出n, k. (1<=T<=100, 1<=n<=1e6, 1<=k<=100).求解1-n这n个数中, 有多少个数的数位和是k的倍数.题解1(数位DP)分析状态定义 DP[i][j]: 代表从低位向高位数i位, 数位和%k等于j的满足题意的个数.数位DP多用记忆化搜索实现, 不用递推式的原因是转移方程难以写出.这道题的搜索方向是从高
2017-04-11 13:18:21 315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人