BZOJ3417 : Poi2013 Tales of seafaring】的更多相关文章

题目描述 Young Bytensson loves to hang out in the port tavern, where he often listens to the sea dogs telling their tales of seafaring. Initially, he believed them all, however incredible they sounded. Over time though, he became suspicious. He has decid…
若x到y走k步可行,那么走k+2步也可行 以每个点为起点,BFS处理出到每个点走了奇数步.偶数步的最短路 对于一次询问,如果d不小于相应奇偶性的最短路,则可行 特判:对于孤立点,无论怎么走都不可行 #include<cstdio> const int N=10010,Q=1000010; int n,m,k,i,j,x,y,z,g[N],nxt[N],v[N],ed,G[N],NXT[Q],V[Q],W[Q],ED,dis[N][2],pos[N][2],q[N][2],h,t; inline…
[BZOJ3417]Poi2013 Tales of seafaring Description 一个n点m边无向图,边权均为1,有k个询问 每次询问给出(s,t,d),要求回答是否存在一条从s到t的路径,长度为d 路径不必是简单路(可以自交) 2<=N<=5000,1<=M<=5000,1<=K<=1000000,1<=d<=1000000000 Sample Input 8 7 4 1 2 2 3 3 4 5 6 6 7 7 8 8 5 2 3 1 1…
传送门 这个题比较水,很容易看出 1.最短路小于d,直接看奇偶性就好了 2,最短路大于d,puts("NIE\n"); 主要就是判奇偶性的问题,将每个点拆成奇点和偶点跑bfs就行了 在线需要开short,不然空间会炸,离线就没有这个忧虑 代码: #include<cstdio> #include<iostream> #include<algorithm> #include<queue> using namespace std; void…
[POI2013]MOR-Tales of seafaring 题目描述 一个n点m边无向图,边权均为1,有k个询问 每次询问给出(s,t,d),要求回答是否存在一条从s到t的路径,长度为d 路径不必是简单路(可以自交) 输入样例#1: 8 7 4 1 2 2 3 3 4 5 6 6 7 7 8 8 5 2 3 1 1 4 1 5 5 8 1 8 10 输出样例#1: TAK NIE TAK NIE 题解 没有时间了,先放代码,明天补坑... #include<iostream> #inclu…
题目 思博题,发现一旦路径太长我们可以来回走最后一条边,但是这样并不能改变路径长度的奇偶性 所以求一下所有点之间奇最短路和偶最短路就好了,直接暴力\(BFS\)即可 有一个烦人的特判 代码 #include<bits/stdc++.h> #define mp std::make_pair #define re register inline int read() { char c=getchar();int x=0;while(c<'0'||c>'9') c=getchar();…
POI2013题解 只做了BZ上有的\(13\)道题. 就这样还扔了两道神仙构造和一道计算几何题.所以只剩下十道题了. [BZOJ3414][Poi2013]Inspector 肯定是先二分答案,然后每个人的出现区间至少要包含于他自己记录的所有时间点.如果某个人没有记录过那他的出现区间任意. 从左往右扫描,维护以下几个东西: \(t\):目前还有多少人的区间不确定. \(s\):当前要求选多少人.(这个是由记录者决定的) \(cl\):有多少人的区间可以向左扩展. \(cr\):有多少人的区间可…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
[POI2013]Łuk triumfalny 题目大意: 一棵\(n(n\le3\times10^5)\)个结点的树,一开始\(1\)号结点为黑色.\(A\)与\(B\)进行游戏,每次\(B\)能选择不超过\(k\)个结点染成黑色,然后\(A\)从当前点出发走到一个相邻的结点.若\(A\)从\(1\)号结点出发,则\(k\)最小取多少能保证\(A\)每次走到的点都是黑点? 思路: 二分答案\(k\)后使用树形DP判断是否可行. 从叶子往根考虑,\(f_i\)表示将\(i\)的子树全部染黑需要从…
[POI2013]Polaryzacja 题目大意: 给定一棵\(n(n\le250000)\)个点的树,可以对每条边定向成一个有向图,这张有向图的可达点对数为树上有路径从\(u\)到达\(v\)的点对\((u,v)\)个数.求最小可达点对数和最大可达点对数. 思路: 显然最小可达点对数是\(n-1\).一种构造就是根结点全是入边,与根结点相邻的点全是出边--以此类推.最后相邻的点对会被统计一次,其余的均不会被统计. 对于最大可达点对数,一定存在一种方案,使得树根是树的任意一个重心时,将所有子树…
[POI2013]Taksówki 题目大意: ABC三地在同一条直线上,AC相距\(m(m\le10^{18})\)米,AB相距\(d\),B在AC之间.总共有\(n(n\le5\times10^5)\)辆车,每辆车只能从B地出发开\(x_i\)米(开完以后不必把车开回B地),问从A到C至少要坐几辆车? 思路: 对于BC之间的那一段路,如果可以走,则只要坐一辆车.对于AB之间的情况,只需要从大到小贪心即可. 将\(x\)排序后,找到大于等于\(m-d\)的最小的\(x_i\),作为从B到C的车…
[POI2013]Usuwanka 题目大意: 一排\(n\)个球,有黑白两种颜色.每取走一个球会在原位置放一个水晶球.求构造一种取球方案,满足: 每次取走\(k\)个白球和\(1\)个黑球: 一次取走的任意两个球之间没有水晶球. 保证方案存在. 思路: 用栈维护黑球的出现次数,若栈顶\(k+1\)个数中恰好有\(1\)个黑球,说明这些球可以一次性取出. 时间复杂度\(\mathcal O(n)\). 源代码: #include<cstdio> #include<cctype> i…
[POI2013]Morskie opowieści 题目大意: 一个\(n(n\le5000)\)点\(m(m\le5000)\)边无向图,边权均为\(1\),有\(k(k\le10^6)\)个询问. 每次询问给出\((s,t,d)\),要求回答是否存在一条从\(s\)到\(t\)的路径(可以自交),长度为\(d\). 思路: 我们只需要求出两点间的奇最短路和偶最短路,询问时根据\(k\)的奇偶性,与最短路作比较,超过的部分可以在任意两点间绕. 时间复杂度\(\mathcal O(n^2+q)…
[POI2013]Bajtokomputer 题目大意: 给定一个长度为\(n(n\le10^6)\)的由\(\{-1,0,1\}\)组成的序列,你可以进行\(A_i+=A_{i-1}\)这样的操作,问通过若干次操作能否使其变成不降序列.若果能,求最小操作次数. 思路: 显然若能通过若干次操作使其变成不降序列,则一定存在一种方案使得最后\(A_i\in\{-1,0,1\}\). \(f_{i,j}\)表示前\(i\)个数,最后一个数为\(j\),能构成不降序列的最小操作次数,分不操作.操作\(1…
[BZOJ3416]Poi2013 Take-out Description 小F喜欢玩一个消除游戏——take-out 保证k+1|n,保证输入数据有解这是一个单人游戏 游戏者的目标是消除初始时给定的一列砖块,从左往右标号为1到n,若两个砖块标号相差1,则它们相邻 每一块砖块要么是黑的,要么是白的,这列砖块里面白砖块的数量是黑砖块的数量的k倍 游戏者可以通过执行移除操作来消除砖块 一步移除操作会将k个白砖块和1个黑砖块从序列中移除,而这些被移除的砖块原来所在的位置用透明砖块所代替,其它砖块的位…
[BZOJ3425]Poi2013 Polarization Description 给定一棵树,可以对每条边定向成一个有向图,这张有向图的可达点对数为树上有路径从u到达v的点对(u,v)个数.求最小可达点对数和最大可达点对数 n<=250000 Sample Input 4 1 2 1 3 1 4 Sample Output 3 5 题解:想了一晚上,怎么想怎么是个搭建双塔,结果看题解发现还真tm是搭建双塔. 本题的结论有点神,不过很好猜,证明见Claris博客. 第一问的答案一定是n-1,因…
[题解][P3557 POI2013]GRA-Tower Defense Game 这道题是真的** 根据题目给的\(k\),可以知道,我们随便放塔,只要不全放一起,一定是一种合法的方案. 直接枚举就好了,脑子都不用,时间复杂度\(O(n)\) #include<bits/stdc++.h> using namespace std; #define RP(t,a,b) for(register int t=(a),edd=(b);t<=edd;++t) #define DRP(t,a,b…
P3558 [POI2013]BAJ-Bytecomputer 题意 给一个只包含\(-1,0,1\)的数列,每次操作可以让a[i]+=a[i-1],求最少操作次数使得序列单调不降.若无解则输出BRAK. 思路 毒瘤出题人alecli!你又找紫题. --Mercury 结论:最优解中变换之后的数列中的数字只有\(-1,0,1\). 首先考虑为什么不会出现\(2\).\(2\)的由来只能是\(1+1=2\),而将当前位置上的\(1\)与前一位上的\(1\)相加既不会改变当前位相对于前一位已经单调不…
题意: 给定一个长度为\(n\)的\(\{-1, 0, 1\}\)组成的序列,你可以进行\(x_i=x_i+x_{i-1}\)这样的操作,求最少操作次数使其变成不降序列.(\(n \le 1000000\)) 分析: 我们考虑第\(i\)个数,如果\(x_i < x_{i-1}\),要想\(x_i \ge x_{i-1}\),那么\(x_i\)至少要加一次\(x_{i-1}\)才能大过\(x_{i-1}\)(当然\(x_{i-1} < 0\)那么永远不可能了). 题解 然后我们猜测,最终的最优…
二分答案,没有出现过的时刻没有用,可以进行离散化. 首先如果某个时刻出现多个人数,那么肯定矛盾. 然后按时间依次考虑,维护: $t$:剩余可选人数. $s$:现在必定有的人数. $cl$:往左延伸的人数. $cr$:往右延伸的人数. 如果现在有人必须加入,那么优先踢掉$cl$的人. 如果当前人多了,那么优先让$cr$的人结束工作. 如果最后剩余可选人数非负,则可行. 时间复杂度$O((n+m)\log m)$. #include<cstdio> const int N=100010,BUF=3…
最小值肯定是把树看作二分图,此时答案为$n-1$. 最大值一定是选取重心为根,任意一个子树要么全部指向根,要么全部背离根,这样可以制造最大的星型图. 统计出每个子树的大小后做01背包,如果小于$\sqrt{n}$,那么二进制拆分,否则这种子树不超过$\sqrt{n}$个,直接DP即可. 用bitset优化转移,时间复杂度$O(\frac{n\sqrt{n}}{32})$. #include<cstdio> #include<bitset> #include<algorithm…
最多只有一个连通块大小大于$nk$,所以用hash表进行BFS的时候只扩展$nk$步即可. 时间复杂度$O(n^2k)$. #include<cstdio> typedef long long ll; const int N=5001000,M=9999991; int n,m,lim,i,h=1,t,g[M],nxt[N],ed;ll v[N],a[N/5],q[N],x,S,T;char s[70]; inline void del(ll x){ int u=x%M; v[ed]=x;nx…
详细做法以及证明请看论文<Hamiltonian paths in the square of a tree>. 首先将1到n的路径提取出来,作为主干. 定义毛毛虫为去掉叶子之后只有一条单链的树,定义non-trivial的毛毛虫为单链非空的毛毛虫. 对于主干上每个点,计算它的非主干部分是否是毛毛虫,如果某个部分不是毛毛虫,那么肯定无解. 将主干上每个点划分为两类: A:non-trivial的毛毛虫不超过1个. B:non-trivial的毛毛虫恰有两个. 同时定义一个点是free的当且仅当…
题目大意: 一条线段有三个点,0为初始位置,d为出租车总部位置,m为家的位置,人要叫车,有n辆车可以提供,每辆车有一个路程上限,并且都从车站出发,叫的车行驶之后不必须回到车站,问最少叫几辆车. 一定能想到的贪心策略是每次选最大的,但现在给这么一组数据: 12 4 5 2 3 4 5 8 发现先选最大的到不了m处了. 因为从出租车站到家只需要一辆车就够了,所以先选出比m-d大的车中路程上限最小的作为从车站到家的车,然后再贪心选最大的. 这里有几个细节要注意: 1.如果贪心选最大的的时候发现能直接到…
题目描述 Everyone knew it would only be a matter of time. So what? Faced for years on, a peril becomes the every-day reality. It loses its meaning... Today the letter of the Bitotian char Bittard to the Byteotian king Byteasar was released to the public.…
题目大意: 给一颗树,1号节点已经被染黑,其余是白的,两个人轮流操作,一开始B在1号节点,A选择k个点染黑,然后B走一步,如果B能走到A没染的节点则B胜,否则当A染完全部的点时,A胜.求能让A获胜的最小的k 小的k能获胜大的k就一定能获胜,因此答案具有单调性,可以二分答案. 那么每次二分的答案怎么验证? 树形DP,设f[i]表示在B没走到以i为根的子树中时,需要预先在这棵子树中染色的节点数. f[x]=max(0,∑f[to[i]]+son[x]-k),其中to[i]代表x的子节点,son[x]…
BZOJ 洛谷 最小可到达点对数自然是把一条路径上的边不断反向,也就是黑白染色后都由黑点指向白点.这样答案就是\(n-1\). 最大可到达点对数,容易想到找一个点\(a\),然后将其子树分为两部分\(x,y\),\(x\)子树所有边全指向\(a\),\(a\)与\(y\)子树之间的边全指向\(y\).这样答案就是\(sz[x]\times sz[y]\),要让\(sz[x],sz[y]\)尽量相等.找重心就好了. 然后DP,求划分重心两部分子树大小分别为\(x\)和\(n-1-x\)是否可行.…
正解:构造 解题报告: 传送门 话说这题我理解题意理解了好久TT一直没懂那个,k的意义是什么,,,后来才明白,可能k就是没有意义的趴 (upd:好像明白辣,k是用来保证这么做是对的QwQ 然后就直接港正解趴QAQ 这题其实做了消防局的设立和将军令之后,就还是比较简单?直接一样的套路怼上去,然后就好了,,,? 其实真的没什么好写题解的,,,但是我就是想写因为这题真的卡了我好久呜呜呜,,, 没了QAQ 哦想起来还唠叨一句,,,如果你90pts第6个点超时,可能是数组开小了,改大点儿就过了_(:з」∠…
题目描述 A sequence of integers is given. The bytecomputer is a device that allows the following operation on the sequence: incrementing for any. There is no limit on the range of integers the bytecomputer can store, i.e., each can (in principle) have ar…
可以YY一下嘛= = 最后一定是-1, -1, ..., -1, 0, 0, ... 0, 1, 1, ..., 1的一个数列 于是f[i][j]表示到了第i个数,新数列的第j项为-1 or 0 or 1的的最小代价 然后就没有然后了 /************************************************************** Problem: 3427 User: rausen Language: C++ Result: Accepted Time:808 m…