![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基本算法
ZA139
这个作者很懒,什么都没留下…
展开
-
洛谷P2370 yyy2015c01 的 U 盘 二分答案+背包
洛谷P2370 yyy2015c01 的 U 盘 二分答案+背包 很简单但是很有意思的一道题 题意: n个文件,最小价值p,硬盘大小为s 设端口大小为每次传输文件大小的上限 求最少需要多大的端口可以传过去价值总和大于等于p的文件 如果没有则输出No Solution! 思路: 因为端口大小具有单调性,所以可以二分 对端口大小进行二分,check函数中进行01背包,判断能否装下价值总和大于等于p的文件即可 如果大小等于右端点也装不下,则无解 代码: #include<cstdio> #includ原创 2020-12-25 16:30:50 · 278 阅读 · 0 评论 -
2020ICPC上海站 B Mine Sweeper
题意: 给定两个扫雷n*m的矩阵A和B 在进行最多floor(n∗m/2)floor(n*m/2)floor(n∗m/2)次取反操作之后,把B中的所有非地雷格子的数字的和等于A中的值 (非地雷格子中的数字表示在以自己为中心的3x3的格子中有多少个地雷) 求出任意符合题意的翻转方案 思路 看到floor(n∗m/2)floor(n*m/2)floor(n∗m/2)次操作,想到取反 易证得,一个矩阵翻转后数字和不变 翻转后总有一个操作不超过floor(n∗m/2)floor(n*m/2)floor(n∗m/2)原创 2020-12-20 22:42:51 · 203 阅读 · 0 评论 -
Running Median 对顶堆
Running Median 对顶堆 题意: 给定一个数列,每次已经输入了奇数个数字的话,输出此时的中位数 思路: 对顶堆板子题 想象两个堆为一个三角形和一个倒三角形,组成的沙漏形状,即为对顶堆,两个堆相接之处则为答案 维护一个大根堆一个小根堆,保持这两个堆均分数组数据。询问时输出对顶即可 代码: 注意输出格式 #include<iostream> #include<algorithm> #include<queue> #include<vector> usi原创 2020-12-08 17:16:44 · 277 阅读 · 0 评论 -
七夕祭 (前缀和,排序)
七夕祭 (前缀和,排序) 题意是中文的就不重复了。。 思路: 列之间的交换并不会影响行的结果,相似的,行之间的交换并不会影响列的结果 首先我们进行可行性判断 即t个点可以被n行或者m列所均分 可以抽象为将t个点均分给n或m个人(类似题目[均分纸牌][https://ac.nowcoder.com/acm/problem/16739]) 以下以分给n个人为例 第i个人需要的纸牌数目为A[i]=row[i]−(t/n)A[i]=row[i]-(t/n)A[i]=row[i]−(t/n),为正则为需要纸牌,从i+原创 2020-12-08 15:51:50 · 332 阅读 · 0 评论 -
算法竞赛进阶指南0x01位运算题解
算法竞赛进阶指南0x01位运算题解 a^b 背景知识: 1.快速幂 已知任意数字均可由二进制表示,即为,给定一个十进制整数b,若其在二进制表示下有k位,则其可以被表示为b=∑i=0k−1ci2ib=\sum_{i=0}^{k-1}c_i2^{i}b=∑i=0k−1ci2i其中cic_ici为b在二进制表示下的第i位 根据幂次运算的运算律,同底数幂相乘,底数不变,指数相加,即basea+b=basea∗basebbase^{a+b}=base^a*base^bbasea+b=basea∗base原创 2020-10-28 19:55:01 · 235 阅读 · 0 评论 -
起床困难综合症
起床困难综合症 题意 给你N个门,每个门的操作为AND,XOR,OR中的一种,每个门有一个操作数,现在让一个[0,m]的数字x依次通过这n扇门,问最大的结果是多少 思路 位运算没有进位,所以可以每一位单独运算 所以我们让在[0,m]范围的每一位去通过这n道门,查看结果即可 因为x有[0,m]范围的限制,所以我们要尽可能的让x最小 即对于x的第i位当且仅当 x的第i位为0时通过n道门得到的结果不为1 且x的第i位为1时通过n道门得到的结果为1时 x的第i位才为1,否则都是0 最后获得x跑一边n道门就是答案啦原创 2020-10-23 20:16:42 · 446 阅读 · 0 评论 -
Codeforces DIV2 670C Cinema(离散化)
Codeforces DIV2 670C Cinema(离散化) 题意: 有n个科学家,每个科学家会一个语言。 有m个电影,每个电影有一个音频语言和一个字幕的语言 输出最多人能听懂的电影的索引,如果有多个电影有相同的人数能听懂,则输出在此条件下最多人能看懂的一个,如果还有多个电影符合,输出任意 思路: 可以直接用map写 这里用离散化。数据范围2e5个科学家,且每个人只会一种语言。但是数据大小为1e9,所以我们可以离散化到一个计数数组中,然后再根据题意对其排序,如果lower_bound返回的下标等原创 2020-12-08 12:37:26 · 96 阅读 · 0 评论