07 2017 档案
摘要:Linux中,新建dp.sh,内容如下: 执行 。 gen 是生成数据的程序,bruteforce 是暴力的程序,my 是我要测试的程序。 diff 的参数 是忽略空格引起的变化, 是使用并列格式输出, 是在并列格式中不印出公共行。 ps.来源是学长们留下的板子上的,然后我加上了参数。
阅读全文
摘要:fread可以加快读入速度,尤其是读特大的二进制文件。 ps. 向lyg要的代码。处理负数需要自己加上去。
阅读全文
摘要:1001 Add More Zero(签到题) "题目链接 HDU6033 Add More Zero" 找出最大的k,使得。 直接取log, 1可以忽略不计。 1002 Balala Power!(贪心) "题目链接 HDU6034 Balala Power!" 26
阅读全文
摘要:"BUPT 2017 Summer Training (for 16) 6C" 题意 n个点,完全图减去m条边,求生成树个数。 题解 注意可能会给重边。 然后就是 "生成树计数" 了。 代码 cpp include include include define N 101 define eps (1
阅读全文
摘要:"题目链接 POJ 3608 Bridge Across Islands" 题意 依次按逆时针方向给出凸包,在两个凸包小岛之间造桥,求最小距离。 题解 旋转卡壳的应用之一:求两凸包的最近距离。 找到凸包 p 的 y 值最小点 yminP 和 q 的 y 值最大点ymaxQ,然后分别做切线如图。 那么
阅读全文
摘要:"题目链接B Sports Festival" 题意 n(1~300)个人m(1~300)个活动,表示i第j喜欢的活动,每个人选择在举办的活动里最喜欢的,因此可以通过选择一些活动来举办,使得最多人参加的活动的参加人数最少,求这个最小值。 题解 每次找到最多人参加的活动,置为不举办的,
阅读全文
摘要:"题目链接A Getting Difference" 题意 有n(1~)个数 (1~),每次选两个数,将它们的差的绝对值加入这堆数。问k(1~)是否可能出现在这堆数中。 题解 因为选择的数的差一定是这两个数的gcd的倍数,因此可以令g为所有数的gcd,那
阅读全文
摘要:"BUPT 2017 Summer Training (for 16) 3G" 题意 摆好的多米诺牌中有n个关键牌,两个关键牌之间有边代表它们之间有一排多米诺牌。从1号关键牌开始推倒,问最后倒下的牌在哪里,以及时刻。 题解 注意最后倒下的可能不是关键牌,而是关键牌之间的牌。 dfs找出每个关键牌最早
阅读全文
摘要:"BUPT 2017 Summer Training (for 16) 3A" 题意 给你三个矩形,需要不重叠不留空地组成一个正方形。不存在输出 1,否则输出边长和这个正方形(A,B,C表示三个不同矩形)。 题解 我的做法是直接枚举三个是否旋转90度,然后考虑两种组成,|||和=|,枚举3的排列。
阅读全文
摘要:"题目链接 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" 题意 每个人有一个懒惰值,每个任务有个难度,一开始每个人的任务和懒惰值都为,完成任务时间是懒惰值乘以难度,现在重新分配任务,问花费的时间最小是多少。结果模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个数里面有多少对具有倍数关系。 题解 枚举一个数,和它的倍数。 代码 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个纪念品,购买区间是。求每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次操作。 操作有四种, 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
阅读全文
摘要:"BUPT2017 wintertraining(15) 8C" 题意 求第n(n include define ll long long int t; const int N=1LL 1; if(m (ll)sqrt(m)
阅读全文
摘要:"BUPT2017 wintertraining(15) 8B" 题意 给出每个黄金的坐标、价值及耗时,同一方向的黄金只能依次取,求T时间内收获的最大值。 题解 同一方向,物品前缀和构成的组合,相当于是一个分组的物品。 然后分组背包: for i:1~p个分组 for j:T~1的时间(背包容量)
阅读全文
摘要:"BUPT2017 wintertraining(15) 8A" 题意 n( include include using namespace std; define N 105 define inf 0x3f3f3f3f struct edge{ int to,next; }e[N
阅读全文
摘要:"BUPT2017 wintertraining(15) 5I" 题意 输出序列A[1..n]的第n 1阶差分(一个整数)。 题解 观察可知答案就是 需要用大整数。 代码 Java代码 C++代码 cp
阅读全文
摘要:"BUPT2017 wintertraining(15) 7FMinimax Tree " 题意 给你一棵多叉树,非叶子节点中分配k个为子节点的min函数,剩下的是max函数。 现在求根节点(1)的最大值和最小值。 题解 因为最大值和最小值求法对称,以求最小值为例。 要让尽量小的上来,可以贪心选择一
阅读全文
摘要:"BUPT2017 wintertraining(15) 7E" 题意 把数组A划分为k个区间,每个区间不超过L长度,每一个区间异或和之和为S。现在求:S不超过X,区间个数的最大值。 且A是这样给你的:A[1], P, Q。A[i]=(A[i 1] P+Q)%M。M为。 题解 容易想
阅读全文