03 2019 档案
摘要:A.数学等式 数据比较小,可以暴力+折半枚举。 #include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=2000
阅读全文
摘要:题意:给定一棵大小为N的点权树(si,pi),现在让你选敲好K个点,需要满足如果如果u被选了,那么fa[u]一定被选,现在要求他们的平均值(pi之和/si之和)最大。 思路:均值最大,显然需要01分数规划,但是后面怎么高效的做背包,我是不会的,我只会暴力的背包,O(N*K*K)。 还好队友会,叫“树
阅读全文
摘要:pro:给定N,M。输入N个物品,(si,vi)表示第i个物品体积为si,价值为vi,s<=300,vi<=1e9; N<1e6;现在要求,对于背包体积为1到M时,求出最大背包价值。 sol:显然直接跑背包会爆炸。 发现物品体积都比较小,我们先对相同体积的排序,对于体积相同的一起处理。 然后发现转移
阅读全文
摘要:题意:给出N个人,现在让你分P组,每组的工作效率是最小结束时间-最大开始时间,要求每一组的效率的正数,求最大效率和。N<1000 思路: 把包含至少一个其他的分到A组;否则到B组。 A组的要么单独分到一组,要么和它包含的某一个在一组(可以反证,假设已经分好组了,现在把不是单独分组的A加进去,如果分到
阅读全文
摘要:(由于先看的最后一题,然后又一直WA,导致这场有点爆炸,我背锅。 A .Fancy Antiques 题意: 选择最多k个商店,买n个物品,每个物品分别对应两个店售卖,求最小花费是多少。n<100,k=m<=40; 思路:搜索。。。。开始以为是个费用流,然后没法限制。加N多减枝,然后.... B.
阅读全文
摘要:题意:给定带点权边权的树,定义路径的花费=路径边权和e+起点点权w[s]*终点点权w[t]。N<2e5,e,w<1e6; 思路:首先,需要树分治。 然后得到方程dp[i]=min{ dis[i]+dis[j]+w[i]*w[j] },很显然需要斜率优化。 注意维护凸包的时候是需要保证w[j]是单调的
阅读全文
摘要:A .Assigning Workstations 题意:给定N个人的工作时间和工作时长,我们可以假设有无数台工作机器,如果一台机器超过M时间未使用就会关闭,那么我们怎么安排机器的使用,使得需要开启机器的次数最少。 思路:贪心,维护一个时间队列q,维护一个单调队列q1; 前者表示没有使用了但还没关闭
阅读全文
摘要:题意:如图,有N个柱子,每次我可以从高柱子X到低柱子Y,而且需要满足中间的柱子都小于X的高度。 思路:现在有Q次询问,每次给定(X,Y),(如果ht[X]<ht[Y],则交换XY),问X为起点,Y为终点的最长路径。 如果Y为0,你可以选择任一点为终点。 每次我们把当前dfs的区间最高的几个柱子(假设
阅读全文
摘要:题解见:http://ecustacm.cn/contest/11/announcements A #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn
阅读全文
摘要:前面的两场感觉质量不高,就没写题解 A .Around the Track pro:给定内多边形A和外多边形B,求最短路径,蛮子路径再A之外,B之内。 sol:如果没有B,就是求凸包,有了B,我们在做凸包的时候,有形如“a-b-c,b在内部,删去b,连接a-c的操作”,如果a-c和B不相交,直接删去
阅读全文
摘要:A .Regular Bracket Sequence 题意:给定“((” , “()” , “)(”, “))”四种,问是否可以组成合法括号匹配 思路:设四种是ABCD,B可以不用管,而C在A或者D存在时可以不考虑,然后就是A=D。 B .Discounts 题意:给定N个物品,Q次询问,每次询问
阅读全文
摘要:A .Little Pony and Expected Maximum pro:给定M,N,表示一个M面的骰子,甩N次,问出现的最大的数的期望。 sol:容斥,f(i)表示最大数<=i的期望,那么最大数=x的期望就是f(x)-f(x-1); B .Little Pony and Harmony Ch
阅读全文
摘要:有方程dp[i]=min(dp[i-1]+A,dp[j]+B);如果s[j+1,i]在s[i,j]中出现,所以我们就是要知道每个子串在s出现的第一个位置,这个可以hash实现或者sam,或者kmp实现。 pos[i][j]表示s[i,j]对应的sam的位置,occ[],表示第一次出现的位置。
阅读全文
摘要:A .Jzzhu and Chocolate pro:现在给定一个大小为N*M的巧克力,让你横着或者竖着切K刀,都是切的整数大小,而且不能切在相同的地方,求最大化其中最小的块。 (N,M,K<1e9) sol:如果横着切X刀,竖着切Y刀,那么最小的面积=(N/(X+1))*(M/(Y+1));一看这
阅读全文