杂题
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[杂题] Codechef July Challenge 2017 #MULDIG Multiplication Program
大意是把二元运算化成一元运算 感谢sxt的帮助剩下的看代码注释吧 //我觉得蛮清楚了 唯一不爽的是 没想到临时变量这么多 mmp#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#define pb push_backusing namespace std;int B;struct abcd{ i原创 2017-07-24 10:12:29 · 569 阅读 · 0 评论 -
[博弈 杂题] Codeforces 794E Round #414 E. Choosing Carrot
这个题 首先我们要知道结论If n is even, the answer is while if n ≥ 3 is odd, the answer is . (If n = 1 then the answer is obviously a1.) 为什么呢 证明看题解然后可以动kk步就是所有长为n−kn-k子区间的答案的最大值#include<cstdio>#include<cstdlib>#原创 2017-05-23 21:09:26 · 1040 阅读 · 0 评论 -
[杂题] Codeforces 794D Round #414 D. Labelling Cities
可以证明有相同邻接节点集合的点染色必相同 否则必不相同 缩点 然后一个点度不超过2且连通 然后就是一条链或环 环肯定不可能 然后就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<map>#include<set>#include<vector>#define pb push_backusing names原创 2017-05-23 21:02:20 · 498 阅读 · 0 评论 -
[DP two-pointers 杂题] BZOJ 4828 [Hnoi2017]大佬
首先补血和其他操作不影响 其他操作在哪些天做也没有丝毫影响 那么我们可以DP出最多能有几天不补血也就是能空出来淦大佬的时间D 然后我们bfs一通发现 状态数不超过1000w? 假设我们已经求出了 t和f表示 我们花t时间能够蓄力并且放一个大 造成f的伤害 两次大能够淦死大佬的条件是 D−t1−t2≥C−f1−f2D-t_1-t_2\ge C-f_1-f_2 且 f1+f2≤Cf_1+f_2原创 2017-05-04 07:52:23 · 673 阅读 · 0 评论 -
[分治 杂题] Codeforces Gym 101173 CERC 16 G & BZOJ 4792 Geohash Grid
先转化问题 If we lay down numbers on a single line and mark numbers within the polyline, We obtain the optimal k-approximation by removing k−1k−1 largest gaps.我们考虑怎么求gap 我们把网格切成两半的时候也就是把值域切成了两半 我们只要递归模原创 2017-03-31 20:19:35 · 691 阅读 · 0 评论 -
[随便搞搞] TCO14 Round 2C InverseRMQ
随便搞搞咯 先按照值从小到大排序 然后值一样的一起处理 如果交为空 无解 如果交被之前所有的并给完全包含了 无解 如果某一时刻并的大小比数字还大 无解// BEGIN CUT HERE #include<conio.h>#include<sstream>// END CUT HERE #include<cstdio>#include<cstdlib>#include<cst原创 2017-04-21 08:52:28 · 450 阅读 · 0 评论 -
[线段树 瞎搞] BZOJ 4876 [Zjoi2017]线段树
这个题在考场上应该是能搞出来的 可是当时debuff太强 没敢想正解 写完了250行的暴力 正解呢 就是类似zkw线段树 我们从叶节点l−1l-1和r+1r+1一直走直到碰在一起 这样搞出了一条左链和一条右链 左链上的右兄弟和右链上的左兄弟就是所有要找的点 然后我们讨论下查询点uu和链底的lca的位置 进而可以知道链上所有点和uu的lca的深度和 这个细节有点多 不对拍很容易写挂 给考场上写挂的人原创 2017-05-02 21:37:58 · 842 阅读 · 0 评论 -
[杂题] Codeforces Gym 101190 NEERC 16 L. List of Primes
关键是一个函数Solve(int x,int *pre,int sum,int L) 表示已经考虑完了前x个质数 得到前缀pre 剩下需要的和为sum 下标从L开始 然后需要预处理下不用前x个质数 组成sum 的方案数和总长 然后超出范围的时候不处理 就能过了#include<cstdio>#include<cstdlib>#include<algorithm>using names原创 2017-04-17 09:45:21 · 864 阅读 · 0 评论 -
[杂题 交互] Codeforces Gym 101190 NEERC 16 I. Indiana Jones and the Uniform Cave
真是神题 其实递归的写是不难写的 我在昏昏欲睡的时候参考了别人的代码 写了手工栈非递归的 意识模糊#include<cstdio>#include<cstdlib>#include<algorithm>#include<stack>#include<string>#include<iostream>using namespace std;string ret;int tot;原创 2017-04-17 09:42:49 · 726 阅读 · 0 评论 -
[杂题] Codeforces Gym 101190 NEERC 16 K. Kids Designing Kids
其实就是三个图异或起来为空 要的就是个观察 after moving the figures, some two of these three freckles must be in the same point. There are only three possible shifts, check them all#include<cstdio>#include<cstdlib>原创 2017-04-15 20:26:50 · 1042 阅读 · 0 评论 -
[扫描线 杂题] Codeforces Gym 101190 NEERC 16 E. Expect to Wait
智商越来越捉急 看图就知道了 答案就是阴影的面积 扫描线一波就好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return原创 2017-04-15 20:15:13 · 773 阅读 · 0 评论 -
[物理 杂题] Codeforces Gym 101190 NEERC 16 J. Jenga Boom
纯模拟#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,原创 2017-04-15 20:17:26 · 729 阅读 · 0 评论 -
[杂题] Codeforces 627F 8VC Venture Cup 2016 - Final Round F. Island Puzzle
题目大意 有一棵n+1个点树 在上面玩n数码 问是否有解 最小步数 否则问加一条边是否有解 最小步数这个好像WC的T1啊? 根据当时考场上玩出来的经验 一棵树直接跑整条路径就好了 环套树是先移动到环上,然后绕着环走若干圈,最后再走向目的地。我们先当做树跑一通 然后看一下所有不在自己的目标位置的宝石是否可以添一条边组成一个环。如果不能组成,答案就是-1 怎么看 所有不在自己的目标位置原创 2017-04-15 20:11:30 · 787 阅读 · 0 评论 -
[树形DP 杂题] SRM 562 div1 InducedSubgraphs
集训队作业传送门给一棵nn个结点的树,定义一个结点集合是连通的表示这棵树以这个集合为点集的导出子图是连通图。再给一个整数kk,将树上的结点重新编号,使得对于任意一个满足1≤i≤n−k+11\leq i\leq n-k+1的ii,都满足由所有编号在[i,i+k−1][i,i+k-1]内的结点组成的结点集合是连通的。问这样的编号方式有多少种。1≤k≤n≤411\leq k\leq n\leq 41。大概原创 2017-04-05 21:07:56 · 514 阅读 · 0 评论 -
[交互 杂题] Codeforces Gym 100307 NEERC 13 I. Interactive Interception
如果已知起点 我们可以直接二分速度 现在我们都不知道 那么我们每次查询希望把起点和速度组成的二元组尽量平均的分开 这个要一个二分来找询问那个点 然后询问(0,R)就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<string>#include<iostream>using namespace std;原创 2017-04-18 21:25:16 · 617 阅读 · 0 评论 -
[链表 杂题] BZOJ 4432 [Cerc2015]Greenhouse Growth
只有我觉得神题吗 比C难度还大? 看懂了也不会写 不会告诉你我是看着标程写的#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#define pb push_backusing namespace std;inline char nc(){ static char buf[10000原创 2017-04-13 17:51:05 · 895 阅读 · 0 评论 -
[杂题] BZOJ 4437 [Cerc2015]Looping Labyrinth
三种情况分别对应bfs提前结束(n,0)(n,0)且(0,m)(0,m)都可达存在(kn,km)(kn,km)可达这题TM卡常啊#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef pair<int,int> abcd;typedef long long ll;inline c原创 2017-04-13 17:35:18 · 735 阅读 · 0 评论 -
[杂题] BZOJ 4801 打牌
这个A题让我很无奈啊 还是留念一下好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100原创 2017-04-22 20:45:36 · 514 阅读 · 0 评论 -
[最短路 杂题] BZOJ 4356 Ceoi2014 Wall
具体看题解 我说不清楚 首先可以证明 这个环必然包裹住了所有左上角到其他城市的最短路 证明可以调整为包进去 而不会边劣 然后求出所有最短路 然后把它们包进去的话 把一个交点拆成四个点 然后跑一下左上角绕一圈到左上角的最短路#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<que原创 2017-05-06 07:09:18 · 1289 阅读 · 0 评论 -
[杂题] Codeforces 739D Round #381 (Div. 1) D. Recover a functional graph
Let’s think what has to hold after we put numbers in place of question marks: number of vertices with precycle = 0 and cycle = y should be divisible by y. if there exists a vertex with pr原创 2017-05-28 10:42:20 · 572 阅读 · 0 评论 -
[杂题] Codeforces 830C Round #424 Div1 C. Bamboo Partition
随便搞搞吧#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;#define read(x) scanf("%d",&(x))const int maxn=200005;const int P=1e9+7;const int N=505;int n,a[N]原创 2017-07-24 10:05:45 · 526 阅读 · 0 评论 -
[杂题] Codechef SnackDown 2017 Onsite Final #MINIMAX Minimax
最小值的最大值小于等于最大值的最小值 那么只要有一行一列最小值等于最大值,那么矩阵就合法 如果我们枚举这一行和这一列,那么最小值最大值一定就是他们的交点 那么再枚举交点最后的值是多少 这样复杂度是O(n4)O(n^4) 换一下 先枚举值 再枚举位置 可以去一个代价最小值 O(n2logn)O(n^2\log n)#include<cstdio>#include<cstdlib>#in原创 2017-07-23 13:32:53 · 601 阅读 · 0 评论 -
[二幂拆分] hihoCoder Challenge 29 B. 快速乘法 & BZOJ 1111[POI2007]四进制的天平Wag
参考这里 这是个经典问题,我们考虑记忆化搜索的过程,那么每次一个状态x,会产生新状态 ~x+1什么的,而这个状态数总数是O(logn)O(\log n)的 举个链接中的例子 1010110 –> 10110 –> 110 -> 10 0101010 –> 1010 所产生的所有串的数目刚好是x的位数减去末尾的0的数目那么我们就可以直接写一个记忆化搜索,然而这不优美 可以直接从低向上DP原创 2017-06-26 10:06:15 · 774 阅读 · 11 评论 -
[杂题] AtCoder Grand Contest 007 E Shik and Travel
二分答案 然后每个子树维护二元组(a,b)(a,b)表示存在一个进入该子树后,第一天花费为aa,最后一天花费为bb,中间天都满足相邻叶子距离小于等于MidMid 直接转移状态数太多,我们发现对于一个aa只需要最小的b′b',一个bb只需要最小的a′a',可以two-pointers合并 那么新的状态数|S|≤2×min(|S1|,|S2|)|S|\le 2\times \text{min}(|原创 2017-06-26 16:07:38 · 851 阅读 · 0 评论 -
[杂题] Codeforces 772D VK Cup 2017 - Round 2 D. Varying Kibibits
一个集合的 子集的和的平方 的和 就记一下 ∑a0i\sum a_i^0、∑a1i\sum a_i^1和∑a2i\sum a_i^2就好了 处理出 f(S)≥xf(S)\ge x的 这个就是一个6维前缀和 然后再把前缀和倒回去 就好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typede原创 2017-06-13 22:29:49 · 627 阅读 · 0 评论 -
[杂题 贪心] BZOJ 2138 stone
#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,1原创 2017-06-22 20:31:43 · 625 阅读 · 0 评论 -
[计数] 美团 CodeM 复赛 排列
#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef pair<int,int> abcd;typedef long long ll;#define read(x) scanf("%d",&(x))const int P=1e9+7;inline ll Pow(ll a,int b){原创 2017-07-11 22:35:35 · 678 阅读 · 0 评论 -
[杂题] Ural 1961. Cantonese Dialect
根据最大似然估计,应该找出最大的 f(M)=(Mm)(N−Mn−m)(Nn)f(M)={{M\choose m}{N-M \choose n-m}\over {N\choose n}}我们手推下 f(M+1)≥f(M)f(M+1)\ge f(M),得M≤(N+1)mn−1M\le {(N+1)m\over n}-1 那么答案是(N+1)mn{(N+1)m\over n}#include<cstd原创 2017-06-28 20:39:26 · 428 阅读 · 0 评论 -
[真正的单色三角形] BZOJ 3498 PA2009 Cakes
Description给定一个无自环重边的无向图,求这个图的三元环的个数以及补图的三元环个数。 n≤105,m≤105n ≤ 10^5,m ≤ 10^5PS. 可以在这里交Analysis这个东西 首先我们可以用BZOJ 2916 [Poi1997]Monochromatic Triangles的方法算出原图三角形和补图三角形的个数之和 然后我们再算出原图三角形的个数就好了 以下的代码都是求原图原创 2017-03-04 23:39:51 · 1132 阅读 · 0 评论 -
[杂题] SnackDown 2017 Online Elimination Round #PREFIXOR Prefix XOR
考虑sr xor si−1≤sr+1 xor si−1s_r\ \text{xor} \ s_{i-1}\le s_{r+1}\ \text{xor} \ s_{i-1} 相当于对si−1s_{i-1}第k位有一个限制 k是srs_{r}和sr+1s_{r+1}的LCP后一位然后就能很快算出每个点向右的答案 主席树一发#include<cstdio>#include<cstdlib>#i原创 2017-06-06 15:08:29 · 506 阅读 · 0 评论 -
[杂题 背包DP] Codeforces 793E Tinkoff Challenge - Elimination Round E. Problem of offices
因为都经过根 那么只要考虑根的那么些子树就好了 然后要求 a-b之间是n/2个点 c-d之间是n/2个点 四个点的顺序是 a-c-b-d 或 a-d-b-c 那么背包做一下就好了 If solution of both knapsacks exists, then answer is «YES», otherwise «NO». We can always order items fro原创 2017-05-28 10:45:45 · 668 阅读 · 0 评论 -
[杂题 神证明] BZOJ 4893 项链分赃
这个题的证明有点妙啊 结论是 切得刀数不超过颜色数先扯那个地球问题 二维的情况也就是在圆周上 因为两者互换位置 两条图线必定有交点 就证完了 三维 在球面上 我们固定一维转动 看做无数个圆周 都可以找出两点气压一样 又因为函数连续 那么这两点的移动也是连续的 这样就锁定了一维必定相等 也就把问题压低了一维 也就是跟上面同理然后这有什么用呢 这其实是跟两种颜色对应的问题是等价的 首先在这个题里离原创 2017-05-05 08:45:26 · 1521 阅读 · 0 评论 -
[构造] Codeforces Gym 100553 NEERC 14 E. Epic Win!
一道神奇的题 题目大意给你一个剪刀石头布自动机 然后让你构造一个剪刀石头布自动机克制他 这个我们先构造出一个完全针对他的自动机WW 无用的边我们先当他undefined 然后我们开始枚举起点一起跑 用双方所在节点(x,y)(x,y)表示状态 当前状态的转移遍不存在时 我们就把这条边连向WW的一个副本的对应节点 如果成环了 那么一定是在一个WW的副本里成环 这个环是一直赢的 因为只有WW副本之原创 2017-05-23 21:16:14 · 934 阅读 · 0 评论 -
[杂题] Codeforces 799E Round #413 E. Aquarium decoration
枚举下选了几个ab都喜欢的 没什么难度 就是细节贼多#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&原创 2017-05-20 07:25:39 · 703 阅读 · 0 评论 -
[线段树 杂题] Codeforces 806E VK Cup 2017 Round 3 E. Blog Post Rating
这个我们发现排好序后跑答案是最大的 然后就是维护一个支持插入的序列 我本来想把权值相同的压成一段 然后就gg 出门左转神犇学弟博客#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;原创 2017-05-20 07:23:18 · 646 阅读 · 0 评论 -
[最短路 杂题] Codeforces 806D VK Cup 2017 Round 3 D. Perishable Roads
我们把所有边权都减去最小值 然后发现 肯定是一条链然后下面挂着一条0边 然后挂着一整颗子树 子树中贡献都是0 那么我们要最小化那条链 我们发现这条链上如果有连续的权值为 0⋯a,b,c,d⋯且b>c0\cdots a,b,c,d\cdots \text 且 b>c 那么我们把a,ba,b换成一条边答案不会更劣 唯一不行的就是bb就是链头没有边 之后的边必然是递增的 这样就可以做一个最短路了#i原创 2017-05-20 07:20:54 · 731 阅读 · 0 评论 -
[并查集 杂题] BZOJ 4452 [Cerc2015]Export Estimate
关键就是一个观察 怎么判断是个环 在维护并查集的时候顺便维护下size和度数为2的点的size#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&原创 2017-04-13 17:14:40 · 558 阅读 · 0 评论 -
[乱搞] BZOJ 4434 [Cerc2015]Ice Igloos
#include<cstdio>#include<cstdlib>#include<cmath>#include<algorithm>using namespace std;double r[505][505];double A,B,C;double K,L;int Count(int x,int y1,int y2){ int ret=0; for (int y=y1;y<=y原创 2017-04-13 17:12:33 · 526 阅读 · 0 评论 -
[乱搞] BZOJ 4436 [Cerc2015]Kernel Knights
大概类似拓扑排序 找入度为0的点 然后删 最后剩下偶环 任选一边就好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)原创 2017-04-13 17:09:05 · 405 阅读 · 0 评论 -
[暴力 乱搞] 51Nod 1501 算法马拉松19 D 石头剪刀布威力加强版
这种东西找循环就好了#include#include#includeusing namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin原创 2016-10-31 18:13:20 · 647 阅读 · 0 评论