4月14日

       这两天打了两场比赛,补了补题,看了一点博客,第一场比赛b题排序的时候要把小数末尾的0给去除,没想到会在这个上面卡数据。吉姆的奇思妙想,也是看了赛后解析才有思路的,先要预处理出来所有前i个deg方*freq的和,前i个freq的和。然后二分找出最大j的取值t,使(a*deg【j】方<b*m),然后答案就可以求出来了,不过不能用公式直接求会爆,要用二分。然后题解用了upper_bound()这个函数,用二分也能实现。今天这一场,主要是两个区间的题,要进行预处理,一个数组存储区间的和,一个数组存储前n个区间和的最大值,然后暴力查找就好了,我证明就早没想到呢。然后广搜那道题,虽然题目简单,坑还是不少的,要用两次广搜,然后没有钥匙不能过终点的格子,如果以每个钥匙搜会超时。还有就是股市这道题,发现是杨辉三角的第m前n项求和,算法少了个预处理,超时了。看博客,倒是有很多有意思的题,如hdu5014,给出n,然后给出一个数字串,长度为n + 1, 范围在[0, n - 1].然后要求你找出另外一个序列B,满足上述的要求,并且使得t = A0^B0 + Ai + 1 ^ Bi + 1 + ... + An ^ Bn 最大。对于n来说,找到n对应二进制的取反对应的数x,从x~n之间的数都可以对应,然后x-1也是这么推。还有hdu5480,题意大概是: 在一个n*m的棋盘上,有K辆车,每辆车都可以开过他所在的一整行或者是一整列,给出Q个询问,每个询问都会有一个矩形,问这个矩形的每个格子是否都能被车跑过。a[i]表示第i行是否被占用,row[i]是行a[]的前缀和;同样的。另一列前缀和为col[i],如果从第i到j行都被占用,那么行前缀和要等于[i,j]总的行个数,列也同样。我发现这个题居然可以用并查集写,主要思路是把连续的能攻击的行和列并起来,矩阵的所有棋子要被攻击到,要么矩阵内所有行都有车,要么所有列都有车,要么两者都成立。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值