Bubble Cup 8 finals G. Run for beer (575G)】的更多相关文章

题意: 给定一个带权无向图,每条边的代价为边权/当前速度,每次到达一个新节点,速度都会除以10. 求0号点到n-1号点的最小代价,如果多解输出点数最少的解,输出代价.路径点数.路径经过的点. 1<=边数<=10^5, 1<=点数<=10^5, 0<=边权<=9 题解: 比较有趣的一道题…难度不算太高,但一些地方比较容易想错… 这题的边代价可变本身并不是什么大问题,因为是图中所有边一起变大, 但是一开始就会遇到一个问题,就是总代价数字过大,没有办法直接存储和比较. 观察到…
Bubble Cup 11 - Finals [Online Mirror, Div. 1] 一场很好玩的题啊! I. Palindrome Pairs 枚举哪种字符出现奇数次. G. AI robots 对\(r\)从大到小排序,然后cdq分治. 注意要对\(q-k,q+k,q\)进行离散化 B. Space Isaac 对原序列做差分,b[i]=a[i]-a[i-1] 如果我们要凑出\(x\),那么集合A中小于\(x\)的数字,要关于\(x/2\)对称,大于\(x\)的数字要关于\((x+m…
Bubble Cup 12 - Finals Online Mirror, unrated, Div. 1 C. Jumping Transformers 我会状压 DP! 用 \(dp[x][y][mask]\) 记录到达 \((x,y)\),之前清楚的排骨龙集合为 \(mask\) 的最小耗费. 如果到达 \((x,y)\) 时,本应遭遇的排骨龙没了,那么想想:这只排骨龙是何时遭到放逐? 很自然地设计出状态:\(dp[x][y][len][0/1]\) 表示当前在 \(x\) 行, \(y\…
题目链接: http://codeforces.com/contest/575/problem/B 题解: 把链u,v拆成u,lca(u,v)和v,lca(u,v)(v,lca(u,v)是倒过来的).这样就只要考虑自下而上的线性结构了,可以用前缀和的思想来做成段更新. 代码: #include<cstdio> #include<vector> #include<cstring> #include<iostream> #include<algorithm…
来自FallDream的博客,未经允许,请勿转载,谢谢. 组了个菜鸡队打cf上的ACM比赛 比较快做完了8题但是菜的抠脚罚时巨多,所以最后被顶到了19名(居然没出首页) 自己的号自从上次疯狂掉分就没动过了,感觉像是红名橙名大佬中的一股清流. A.奇怪的贪心,我写了一发结果挂了,题解见大爷博客 B.dp方程很容易列出来,然后写个矩阵乘法就行了. C.每个点的位置决定了两边的白色小三角形的面积,这个面积是关于位置的一次函数,所以排序之后贪心就行了. D.二分+网络流判定 E.dp方程容易列出,然后换…
B. Neural Network country time limit per test 2 seconds memory limit per test 256 megabytes Due to the recent popularity of the Deep learning new countries are starting to look like Neural Networks. That is, the countries are being built deep with ma…
比赛的时候开G开了3h结果rose说一句那唯一一个AC的是羊的心态就崩了.. 这套题感觉质量挺好然后就back了下 A: AI robots 有三个限制条件:相互能够看见和智商的差.使用主席树,可以维护两个状态,分别是其中一个“看见”和“智商”,这样的做法就无法利用K<=20的条件了. 利用扫描线+线段树,可以解决相互看见的约束(大概是我做过最神的扫描线了)对于一个点,处理出它能够看见的最前和最后点,和它的位置一起当做一条线,最前点加入这个点的位置,最后点删除这个点的影响,点的位置的线相当于一个…
题意: 有一个正方形区域, 要求支持两个操作: 1.放置三角形,给定放置方向(有4个方向,直角边与坐标轴平行),直角顶点坐标,边长 2.查询一个点被覆盖了多少次 1<=正方形区域边长n<=5000 1<=询问数<=10^5 保证输入合法,三角形被正方形区域完全包含. 题解: 嗯这是一道数据结构题… 一开始我想起来之前做过但没做出来的一道三角形修改三角形查询的分块题… 然后…GEOTCBRL说,是k-d tree呀,CF上面有标程代码长度限制的… 然而我并不会用k-d tree做这个…
题意: 简单来说就是生成一棵树,要求根到每个叶子节点上的路径颜色排列不同, 且每条根到叶子的路径恰有n条蓝边和n条红边. 求生成的树的节点个数. 1<=n<=10^6 题解: 简单计数. 显然,前n层的边的颜色是任意的,所以第i层就是2^i个点. 对于后n层,可以直接由上一层转移. 因为已经知道上一层合法的个数,那么如果现在每个点扩展两条边, 那么上一层的状态中,某种颜色的个数已经达到n的情况就有一条边不可扩展, 所以要减去2*C(i-1,n). 1 2 3 4 5 6 7 8 9 10 11…
题意: 给定初始位置,查询n次区间,每次查询前可以花费移动距离的代价来移动, 查询时需要花费当前位置到区间内最近的点的距离,求最小代价. 1<=n<=5000,1<=所有位置<=10^9 题解: 可以用O(n^2)的暴力DP碾过去… 不过实际上可以O(n)贪心. 贪心的想法是比较明显的,就是每次找最近的,需要考虑的就是移动不移动. 比如有多个连续的在当前位置左边的区间, 这时往左会让这些区间的答案都减小,而增大的代价至多是移动距离*2. 不过这样子考虑会比较麻烦,观察到这题的特点,…
题意: 一个长宽是100000单位的球场上有很多暴动的观众,每个观众都有一个速度v, 在一秒内,观众会等概率地移动到与原位置的曼哈顿距离<=v的地方(不会移动到界外). 你需要选取三个位置,这三个位置要求满足在一秒之后可能会出现观众. (这里不需要考虑概率大小,只要概率不为0就是满足的) 然后过这三点作圆,请选取在初始状态一秒后圆内观众数的期望值最大的方案输出. 如果有多种,输出半径最大的方案. 题解: 第一眼看起来非常可怕… 什么每秒移动速度呀…什么期望呀…先被吓死就做不了了… 其实是假装要扯…
题意: (无输入,纯输出题) 一个城市用1000列2行的格子表示,一个小偷藏在城市的某一处. 在每一小时的开始, 在(X, Y)位置的小偷可以移动到 (X - 1, Y), (X + 1, Y),(X - 1, Y - 1), (X - 1, Y + 1), (X + 1, Y - 1), (X + 1, Y + 1)中的任意一个位置. 在每一小时中,警察可以控制搜索两个格子,如果小偷藏在这个格子就会被发现. 请输出一种方案, 使得在2015小时内,对于小偷的初始位置和移动方法的所有可能情况都能…
题意: 给定n个人,分两天晚上去夜总会开派对,要求每天恰好有n/2个人去,且每人去的夜总会各不相同. 每个人对不同的晚上不同的夜总会有不同的满意度,求一个方案使得所有人的满意度之和最大. 夜总会数量=人的数量=n,2<=n<=20,且n是偶数. 0<=每一项满意度<=10^6. 时间限制2s,空间限制4MB. 题解: 在这题上卡了很久… 初看这题觉得是费用流…写完发现图建错了… 然后改成暴力枚举哪些人在第一天晚上去再跑费用流… 每个人只和对应晚上的夜总会连边,然后两天晚上的夜总会再…
题意: 给定一棵n个点和有向边构成的树,其中一些边是合法边,一些边是非法边, 经过非法边需要1的费用,并且经过之后费用翻倍. 给定一个长为m的序列,问从点1开始按顺序移动到序列中对应点的总费用. 1<=n<=10^5, 1<=m<=10^6 题解: 还是比较水的… 正解是各种方法求LCA,在点上打标记,最后DFS一遍就可以得到答案. 用tarjan求LCA可以做到总复杂度O(n*α)… 我傻傻地见树就剖,强行O(n log n log n)碾过去了… 每次把起点终点之间的路径的经过…
题意: 定义类循环序列为 长度无限,且除了有限个元素外,均满足s[i] ≡ s[i mod N] (i≥N). 现在有数列F,定义为 F[i] = s[i-2]*F[i-1] + s[i-1]*F[i-1],特别的,F[0] = 0, F[1] = 1. 给定正整数K,P,N代表要求输出的答案为F[k] mod P,类循环序列s的长度为N. 接下来给出s[0]..s[n-1]. 然后是一个正整数M,代表不满足循环条件的元素个数. 接下来M行每行两个正整数j,v表示s[j] = v,保证所有j不同…
H. Bots Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/H Description Sasha and Ira are two best friends. But they aren’t just friends, they are software engineers and experts in artificial intelligence. They are…
D. Tablecity Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/D Description There was a big bank robbery in Tablecity. In order to catch the thief, the President called none other than Albert – Tablecity’s Chief o…
F. Bulbo Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/575/problem/F Description Bananistan is a beautiful banana republic. Beautiful women in beautiful dresses. Beautiful statues of beautiful warlords. Beautiful stars in…
题目传送门 题意:在1000*2的格子里,在每个小时能派出两个警察在两个地点搜查小偷,求在2015小时内能抓住小偷的方案. 分析:首先每次扫过一列即i1 i2从左往右扫,这样会漏掉小偷正好从间隙穿过的情况,那么在1000的列再扫一次,从右往左扫,因为小偷每一次都要移动一格,改变奇偶性之后一定能抓住. 收获:原谅我智商低.... 详细解释 代码: #include <cstdio> #include <algorithm> #include <cstring> using…
题意略,题解生成函数练习题,1+(q-ai)x卷积即可,线段树优化(类似分治思想) //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pragma GCC optimize("unroll-loops") //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("O…
题意:定义两个数\(a,b\)是朋友,如果:\(gcd(a,b)\),\(\frac{a}{gcd(a,b)}\),\(\frac{b}{gcd(a,b)}\)能构成三角形,现在给你一个正整数\(n\),问你\(1-n\)中有多少数没有朋友. 题解:首先考虑合数,设\(a=b*c\),\(b\ge c\),\(b\ge 2,c\ge 2\),我们知道:\(gcd(b,b-1)=1\),那么:\(gcd(b*c,(b-1)*c)=c\),则对于:\(b*c\),\((b-1)*c\),\(gcd(…
传送门  Problem - 1600J - Codeforces 题目   题意 给定n行m列, 求每个连通块由多少格子组成,并将格子数从大到小排序输出 对于每个格子都有一个数(0~15),将其转化为二进制(四位数),比如1010 表示北为1,不可通:东为0,可通:南为1,不可通:西为0,可通. 即 1表示墙,不可通,四位数字依次表示为北东南西 [注意:比如样例9到14去,只需判断9东边是否可通即可,14不用管] 题解 差不多和dfs的板子一样~ AC代码 #include <iostream…
Run for beer CF 575G 如果直接bfs分层贪心可以做,但是很毒瘤,具体可以参考Gavinzheng的提交 考虑魔改dijkstra 首先,每次拿权值最小的来松弛肯定没有问题,只是怎么表示路径长度 由于边权很小,我们只需要拿 排名 * 10 + w 当权值就可以了. 这里的"权值"是相对的权值,具体可以看代码. #include<iostream> #include<cstring> #include<algorithm> #incl…
感受了一下ACM的感觉,然后被神题和神犇们暴踩了 夭寿啦,机房大佬非法组队啊 比赛前i207M插的“怕不是不到九点就要弃疗”的flag成功生效 一开始先扫了一遍题,我一开始以为A题是个扫一遍的题,然后发现自己naive了,遭到了wyt的嘲讽,不过i207M觉得这是个权值数据结构,然而我太蒻了并不会,于是他就去写了.然后就听到Zhang_RQ说B题是个圆方树,果断弃了,终于发现C很可做,这不是泡泡堂么,然后我写了一发过掉了.然后i207M交了一发$A$挂了,发现他读错题了,然后就听到zhoutb2…
D. Restructuring Company Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/566/problem/D Description Even the most successful company can go through a crisis period when you have to make a hard decision — to restructure, disca…
来自FallDream的博客,未经允许,请勿转载,谢谢. Div1难度+ACM赛制  和几个大佬组队逛了逛 A.给一个大小为n的集合ai(1<=ai<=1000000),要求你构造一个大小同样为n且值域相同的数组b,满足ai+bj没有相同的. T<=100 n<=100 暴力,从小到大枚举过去,可以选就选. 复杂度T(n^3+10^6) B.给你n个字符串,要求你选一些前缀构成一个前缀集合,满足不存在两个前缀,其中一个去掉首字母之后变成另一个.求集合最大大小. n<=10^6…
题意 有一棵 \(n\) 个节点的树,每条边上有一个字符,有 \(m\) 次询问. 每次会选定两个点 \(u, v\) , \(u\) 到 \(v\) 的路径上的字符形成了一个字符串 \(T\) ,再选定一个字符串 \(S\) ,计算 \(S\) 在 \(T\) 中的出现次数. \(n, m \le 10^5, \sum |S| \le 5 \times 10^6\) 题解 原题多了一个保证 \(|S| \le 100\) 那么信息不会很多,直接倍增即可保存所有信息,复杂度是 \(…
[题目链接]:http://codeforces.com/problemset/problem/566/D [题意] 给你n个人; 一开始每个人都隶属于一个部门; 之后给你q个操作; 3种操作类型; 1.把x和y所在的部门的所有人都并在一个新的部门 2.把x..y这个区间范围里面的人所在的部门的所有人都并在一个部门; 3.查询x和y是否在同一个部门; [题解] 并查集; 这里把x..y并在一起; 相当于有y-x个合并操作 ①for (int i = x+1;i<=y;i++) merge(i-1…
\(\mathcal{Description}\)   Link.   给定 \(n\) 个点 \(m\) 条边的无向图,边有边权,一个人初始速度为 \(1\),每走一条边速度 \(\div10\),求从 \(1\) 走到 \(n\) 的最小耗时.   \(n,m\le10^5\),\(0\le\text{边权}\le9\). \(\mathcal{Solution}\)   直观地,路径长度即为把经过的边权从低位到高位写成的十进制数.   首先排除前导 \(0\)--把从终点出发,仅走边权为…
菜鸡队训练实录 比赛记录:[名称:奖项 / 排名] 2018: ZJPSC                       Bronze      / 86 CCPC Jilin                 Bronze      / 95 ICPC  Shenyang        Bronze      / 74 ICPC  Qingdao          Honorable / 241 CCPC Finals              Bronze    / 43 2019: ZJPSC…