随笔分类 - ACM/算法笔记
摘要:"题目链接 Mirror and Light " 题意 一条直线代表镜子,一个入射光线上的点,一个反射光线上的点,求反射点。(都在一个二维平面内) 题解 找出入射光线关于镜子直线的对称点,然后和反射光线连边,与镜子的交点即是所求点。 用这题来测测板子。然后wa了一下,因为没注意要保留3位小数。这种输
阅读全文
摘要:"BUPT 2017 summer training (16) 2C" 题意 n个卡片可以支撑住的长度是1/2+1/3+1/4+..+1/(n+1)个卡片长度。现在给出需要达到总长度,求最小的n。 题解 模拟加起来,直到长度不小于给定的总长度。 我也写了个java代码^_^ 代码 java impo
阅读全文
摘要:"BUPT 2017 summer training (16) 2B" 题意 有一些二维直角坐标系上的整数坐标的点,找出严格包含这些点的只能八个方向走出来步数最少的路径,输出最少步数。 题解 这题要求严格包含的路径。实际上答案就是不严格包含的+4步。 也可以加上每个点上下左右的四个点再跑凸包。 最少
阅读全文
摘要:"BUPT 2017 summer training (16) 2 A" 题意 有一个玩具盒,被n个隔板分开成左到u右n+1个区域,然后给每个玩具的坐标,求每个区域有几个玩具。 题解 依次用叉积判断玩具在每个隔板左边还是右边。 知识 设$\vec a=(x_1,y_1),\vec b=(x_2,y_
阅读全文
摘要:"BUPT 2017 summer training (for 16) 1I" 题意 字符串s(1 ≤ |s| ≤ 10 000),有m(1 ≤ m ≤ 300)次操作,每次给l,r,k,代表将r位置插入l位置前,执行k(1 ≤ k ≤ 1 000 000)次。输出最后的s。 题解 等价与将字符串的
阅读全文
摘要:"BUPT 2017 summer training (for 16) 1H" 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点。求一条路径使得所有点变成黑色。 题解 dfs时每个节点的孩子处理完,这时候如果颜色是白色,那么再去一下父亲节点再回来,就变成黑色了。 如果是1号
阅读全文
摘要:"BUPT 2017 summer training (for 16) 1G" 题意 每个人有一个懒惰值,每个任务有个难度,一开始每个人的任务和懒惰值都为$a_i$,完成任务时间是懒惰值乘以难度,现在重新分配任务,问花费的时间最小是多少。结果模10007。 题解 显而易见,最好的分配方法是最懒的人做
阅读全文
摘要:"BUPT 2017 summer training (for 16) 1F" 题意 依次有n (1 ≤ n ≤ 200) 个车要修理,每个车希望在s[i]时刻开始修理,时长d[i],如果s[i]后面没有那么多空的时间,那么就选最小的可行的起点。$s_i, d_i (1 ≤ s_i ≤ 10^9,
阅读全文
摘要:"BUPT 2017 summer training (for 16) 1E" 题意 找到匹配要删除的文件名们但不匹配其它文件名们的表达式。其中?匹配所有字符,其它字符匹配本身。 题解 如果某个位置出现两个及以上的不同字符,那就要用?。再看是否会匹配其它文件名。注意长度不同一定不匹配。 代码 cpp
阅读全文
摘要:"BUPT 2017 summer training (for 16) 1D" 题意 找到n个数里面有多少对具有倍数关系。$1 ≤ n ≤ 10^4,2 ≤ a_i ≤ 10^6$ 题解 枚举一个数,和它的倍数。 代码 cpp include include int n,t,b[1000001];
阅读全文
摘要:"BUPT 2017 summer training (for 16) 1C" 题意 A new computer scientist is trying to develop a new memory management system called "spiral memory manageme
阅读全文
摘要:"BUPT 2017 summer training (for 16) 1B" 题意 Alex is repairing his country house. He has a rectangular metal sheet of size a × b. He has to cut two rect
阅读全文
摘要:"AtCoder Regular Contest 078 D Fennec VS. Snuke" 题意 给一个树,1是白色,n是黑色,其它没有颜色。Fennec每次可以染白色点的直接邻居为白色。Snuke则染黑色点的邻居为黑色。谁先不能动就输了。问谁赢。 题解 先找出1到n的唯一路径path[1..
阅读全文
摘要:题意 300个点的无环图,开始都是白色,每次改变某个节点的颜色(黑/白),问有多少对白点之间存在只有白点的路径。 题解 类似floyd,求出两点之间的路径条数。然后白到黑就删去对应路径,黑到白就增加对应路径。再扫一遍路径数大于0的白点对。 代码 cpp include include define
阅读全文
摘要:"BUPT2017 wintertraining(15) 9A" 题意 有n个纪念品,购买区间是$[l_i,r_i]$。求每i(1~m)站停一次,可以买到多少纪念品。 题解 每隔d站停一次的列车,一定能买到购买区间的长度≥d的纪念品。 长度比d小但包含了d的倍数的纪念品也可以买到。 所以,如果按长度
阅读全文
摘要:"BUPT2017 wintertraining(15) 8H" 题意 求组合数C(n,i),i从0到n,里面有几个奇数。 题解 直接打表的话可能就直接发现规律了。 规律是n的二进制里有几个1,答案就是2的几次方。 证明: lucas定理有:C(n,m)%p=C(n/p,m/p) C(n%p,m%p
阅读全文
摘要:"BUPT2017 wintertraining(15) 8G" 题意 给一个数组a,有n个数,m次操作。$N, M ≤ 10^5, |A i| ≤ 10^9, 1 ≤ l ≤ r ≤ N, |d| ≤ 10^4$ 操作有四种, C l r d:更新区间[l,r],值都加上d,并且时间前进1 Q l
阅读全文
摘要:"BUPT2017 wintertraining(15) 8F" 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了。 现在给n( define N 1001 typedef long long ll; ll dp[N]; bool com[N]; int cnt; int
阅读全文
摘要:"BUPT2017 wintertraining(15) 8E" 题意 长度为n($n include include using namespace std; typedef long long ll; const int Times=10; ll gcd(ll a, ll b){ while(b
阅读全文
摘要:"BUPT2017 wintertraining(15) 8D" 题意 给你x轴上的N个线段,M次查询,每次问你[l,r]区间里最多有多少个不相交的线段。(0 include include define N 100005 using namespace std; struct Seg{ int s
阅读全文