随笔分类 -  多校联合比赛

摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4403题意:给定 一个 数字字符串 ,在这些 字符间添加 一个 加号 和 多个 等号 求 有多少种 方法 得到 等式 使得左右相等 如 1212可以 分解为 12=12" and "1+2=1+2".题解 : 暴力枚举 ,因为i额 数据并不大 最多 15 位数 所以 枚举就可以1#include<cstdio>2#include<cstring>3#include<cmath>4#include<iostream>5#include 阅读全文
posted @ 2012-09-23 10:49 Szz 阅读(275) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4289题意: 有n个城市,有个小偷想从其中一个城市逃到另一个城市,警察想要堵截这个小偷,知道了在每个城市堵截的成本,问如何安排在哪些城市堵截可以使得 小偷一定会被抓住,而且成本最低。题解 : 最大流 ; 将每一个点 查分成两个 ,x 和x+n 他们之间的流量为 在 x 点的花费 ,对于 右边相连的x,y l连接 x +n 到 y 和 y +n到 x 流量值 为 inf ,(这样保证了 流量 只受拆点边的限制) 最后 求 s 到 e+n 的 最值 即可 dinic 算法:1#include<cstdio& 阅读全文
posted @ 2012-09-21 22:11 Szz 阅读(468) 评论(1) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4292题意:给出n个人喜欢的饮料种类以及食物种类,每个人只能取其中一种且数量为1,现在给出有f中食物以及d种饮料,以及他们各自的数量,问如何安、排食物以及饮料,使得最多的人得到一个食物以及一瓶饮料题解 :最大流 + 拆点 ;为了 保证 每一个人只有 一个 食物和 饮料 ,我们 要将 一个人 拆分成 2 个 ,他们之间 连线 流量 为 1 ;1#include<cstdio>2#include<cstring>3#include<cmath>4#include<iost 阅读全文
posted @ 2012-09-20 20:42 Szz 阅读(596) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4293题意:有 n 个人,可任意分成若干组,然后每个人各提供一个信息,表示他们组前面有多少个人,后面有多少个人。问最多有多少个信息是不冲突的。题解: dp;首先 我们 可以将 这 n 个人的 位置 看作是 区间 1---n 这样 说 每一个人说 其所在的组 前面 有 a 个人 后面 有 b 个人 那么 他的 组就 就在 a+1 到 n - b ;我们将 说的情况相同的 人数 记录下来 (按照 其端点大小排序),这样 问题就变为了 在 1--n 这个区间上 不相交的 (带权 )区间的 的 和的 权值 最大为 多 阅读全文
posted @ 2012-09-19 20:52 Szz 阅读(266) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4291 题意:A Short problemTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 739Accepted Submission(s): 277Problem Description According to a research, VIM users tend to have shorter fingers, compared with Emac.. 阅读全文
posted @ 2012-09-19 18:39 Szz 阅读(341) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4288题意:给出一个有序集合,3种操作。插入一个数,删除一个数,都保证序列有序。以及求和 其中求和是将下标%5==3的所有数求和;题解: 线段树 + 离散化 + 离线处理一开始也是想的 线段树 ,但是 这个和以前的 做过的 一个线段树 不同的 是 ,如果 我们 删除 一个 元素后 ,那么 他的 下标 将会 改变 ,比赛是 不知 如何下手 。。。。。同样 是 用 5棵线段树 维护 ,s[0]表示 %5 == 1 的 下标,其他 依次类推 cnt,记录 子树的 元素个数。想要得到该区间内所有模5等3所有元素的和. 阅读全文
posted @ 2012-09-18 21:49 Szz 阅读(360) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4272题意:题意:长度为n(n<=1000)的栈,栈顶元素可以与下面1~5个数中相同的元素消去,问最后能都完全消去。题解:状态压缩 dp 如何判断一个 物品 是否可以 被删除 ,首先 最坏的 情况是 2 0 0 0 0 1 1 1 1 2 假如我们要消除 栈顶的 2 ,0表示已经被删除了。我们要 知道 包括 本身在内的 10 个 数位 dp[h][i] 表示 高度 为 h 状态 为 i 能否 全部 消除 1 表示可以 0表示 不可以 1#include<cstdio>2#include< 阅读全文
posted @ 2012-09-14 20:00 Szz 阅读(530) 评论(1) 推荐(1)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4284题意:题目:给出一些城市,从1出发,旅游一圈回到1,由于花费可能不够,所以选择一些城市打工,打工之前需要花费d买一个证,工资为c。选中的城市必须去工作一次,而且只能工作一次,问能不能完成旅行这道 题 比赛是想的是 先 floyd 在 暴搜 ,结果 tle 赛后 看到 有人 暴搜 过了 ,,,,好无语(自己 考虑的 情况太多了)。。。。。。 题解:首先 因为 我们 要用到的 只有 H 个点,所以我们先用 floyd 处理一下 ,构建一个 新图 ,在新图上处理,枚举 所有状态首先 暴搜 的 时间复杂度为 O 阅读全文
posted @ 2012-09-12 18:12 Szz 阅读(242) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4267转自:http://blog.csdn.net/acm_cxlove/article/details/7854526 题目:给出n个数,每次将一段区间内满足(i-l)%k==0 (r>=i>=l) 的数ai增加c http://acm.hdu.edu.cn/showproblem.php?pid=4267 比较容易往线段树上想的。但是由于更新的是一些离散的点,比较麻烦 可以考虑这些点的共性,总是隔几个,更新一个,那窝萌把区间内的数关于k的余数分组 这样每次更新的都是其中的一组,而且是连续的。 阅读全文
posted @ 2012-09-10 22:08 Szz 阅读(678) 评论(0) 推荐(0)
摘要:NumberTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 867Accepted Submission(s): 280Problem Description Here are two numbers A and B (0 < A <= B). If B cannot be divisible by A, and A and B are not co-prime numbers, we define A as a special n 阅读全文
posted @ 2012-09-10 20:45 Szz 阅读(302) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4268这道题把,比赛时想到了是贪心 ,而且是 贪的方法 和看的解题报告差不多 但是,比赛时,我们找到了 几个 例子觉的不对,就没有 往下想 ,汗。。。。。。。。。。。。明显的贪心 :先按第一维排序,然后第二维然后对a的每个i,找出小于a[i].h的b.h,将对应的w塞到集合里刚才已经保证了第一维满足了然后贪心的从集合里面找a[i]能覆盖的最大的w1#include<cstdio>2#include<cstring>3#include<cmath>4#include<i 阅读全文
posted @ 2012-09-09 10:11 Szz 阅读(519) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4394题意:M^2%10^x=N (x=0,1,2,3....),给你一个N,求M,x为0,1,2,3....其中一个数就行了。找不到M输出None 也就是求N是某个数的平方的后缀(包括本身)。题解 : bfs 搜素每一种可能的情况 ,首先搜索 个位,然后十位 等等。。。。 1#include<cstdio>2#include<cstring>3#include<cmath>4#include<iostream>5#include<algorithm> 阅读全文
posted @ 2012-08-24 21:38 Szz 阅读(285) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4391题意:刷墙, 以开始 有 n个节点,每个节点有一种颜色 ,m 次询问m次 输入 a,l,r,z 如果 a=1 将 l到 r 刷为 z 颜色,如果 a=2 询问 l 到 r 有 多少个 和 z 相同的 节点官方题解是: 分段哈希,自己一开始想写 一下 ,单写着写着 就 觉得很麻烦 ,各中判断条件。。。。。后来改为 线段树 优化了下 ,就是加了 个 mi mx 判断 查询的颜色 是否在这里面。。。。。1#include<cstdio>2#include<cstring>3#inclu 阅读全文
posted @ 2012-08-24 17:43 Szz 阅读(444) 评论(1) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4393题意:n 个人赛跑,每个人有两个参数 第一秒能走的距离 f 和 第二秒 及以后 的 速度 ,求 每一秒的 冠军 (若 距离值相同 输出序号 小的)题解:直接暴力查找每秒最大值的n^2的做法会超时。 法一 考虑Fi最大只有500,所以501s之后只有 speed 对排名有影响(此时如果F也相同,则按ID顺序),排序即可。前501s暴力查找,然后直接按照排序结果输出。 法二 当 way 和 speed 呈二维不递增序列时,排名不会发生变化。排序后暴力查... 阅读全文
posted @ 2012-08-24 14:24 Szz 阅读(240) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4396题意:求 从 一点s 到 e 至少经过k 条边求 最短的值是?(可以走重边);题接:二维最短路 ,d[i][k] 表示 从 s 到 i 点经过 k 条边 的最小值 ,(对于 大于k边数的值 ,并入到 dp[i][k]里 面 )1#include<cstdio>2#include<cstring>3#include<cmath>4#include<iostream>5#include<algorithm>6#include<set>7 阅读全文
posted @ 2012-08-24 09:31 Szz 阅读(417) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4385状态压缩需要好好理解啊; 又是一道 状态压缩的题 ,一开始觉的和 poj 的一道题有点像 ,特地先做了一下那个题 再回来做的这道题,结果还是没做出来 这到,最后看了 解题报告:题意:一个人在搬砖,初始位置在(x0,y0),目的地也是(x0,y0),给你n(n<=20)块砖的位置(xi,yi),规定两点之间时间耗费为欧几里德距离的平方,此人一次可以搬不超过两块砖,问你最少的时间花费并给出方案.官方题解:简单状态DP.需要注意的是,由于耗费的时间是路长的平方,所以一次性取两点的代价并不一定比分两次取小 阅读全文
posted @ 2012-08-22 21:40 Szz 阅读(322) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4353 题意: 给你n个点,m个雷 找一个多边形,使得多边形的面积除以这个多边形内雷的个数的比值最小 仔细想想,其实就是找一个比值最小的三角形就OK了,因为其他的三角形的比值都比它大,组合成多边形后势必会将比值变大 所以可以直接暴力O(n^3)枚举三角形,再计算三角形内的雷的个数求比值即可 雷得个数的话预处理一个数组吧,画张图就懂了 cnt= (i k上方的点 )- ( i j上方的点 + j k上方的点) 当然还要取绝对值1#include<cstdio>2#include<cstring 阅读全文
posted @ 2012-08-22 16:01 Szz 阅读(238) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4380题意: 给出 n个房子的位置 。和 m个 金矿的位置 ,从 n 个房子里选出三个(组成三角形),求出有多少种选法 是 三角形 内的金矿数为 奇数?题解:预处理 枚举 从 n 个房子里 选出 2个i,j 记录 在其上方的 金矿数dp[i][j],枚举所有的三角形 那么 三角形 内的点为 fabs(dp[i][k] - dp][i][j] - dp[j][k]);1#include<cstdio>2#include<cstring>3#include<cmath>4#in 阅读全文
posted @ 2012-08-22 15:59 Szz 阅读(411) 评论(0) 推荐(0)
摘要:acm.hdu.edu.cn/showproblem.php?pid=4374题意:有n层,每层有m个part。在一层中你只能向着一个方向移动(左或者右),最多能移动T步, 经过每个部分是都能得到这个部分的分数。起始位置在x位置,从第一层到最顶层能得到最多的分数题解:dp + 单调队列 ;对于 左边我们可以得到 dp[i][j] = max( dp[i - 1][k] + sum(k, j)) j - t <=k <= j;我们的队列 要维护的 就是dp[i - 1][k] + sum(k, j)由于 sum (k ,j) 单调队列要维护的状态必须是和 现在的状态 无关(或着说是 阅读全文
posted @ 2012-08-17 17:05 Szz 阅读(443) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4370题解: http://page.renren.com/601081183/note/866168965好一道转换思维的题啊,由一道,让人 不知如何下手的题,转换为了 最短路,问题,经典。。。。 我们没有想到啊,看了题解才知道,,思维有点局限啊。。。。 1001 (已更新)显然,题目给的是一个0/1规划模型。 解题的关键在于如何看出这个模型的本质。 3个条件明显在刻画未知数之间的关系,从图论的角度思考问题,容易得到下面3个结论: 1.X12+X13+...X1n=1 于是1号节... 阅读全文
posted @ 2012-08-17 10:21 Szz 阅读(415) 评论(0) 推荐(0)