![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OJ-codeforces
tianxiang971016
ztx97
blog.ztx97.win(希望有生之年搭起来
展开
-
[CF Gym 100827C] Containment [2014-2015 ACM-ICPC Pacific Northwest Regional Contest C]
题意三维空间10*10*10方块,一些方块坏掉了,求用最少的面包裹住坏掉的方块,可以同时包裹好的方块。其中面只能处于方块间隙中。题解典型的最小割问题。以每个方块为点,S与最外围所有点连边,其中在顶点处的点连3边,不在顶点且在棱上的点连2边,其他点连1边。好点与周围六个方向点连1边,坏点与T连inf边,求最小割即可。代码/****************************************原创 2016-07-27 22:05:34 · 552 阅读 · 0 评论 -
[Codeforces Round #354 DIV2E (CF676E)] The Last Fight Between Human and AI
题意人机大战轮流给 P(x) = anxn + an − 1xn − 1 + ⋯ + a1x + a0P(x) = a_nx^n + a_{n - 1}x^{n - 1} + \cdots + a_1x + a_0 里面的未知的ai{a_i}填数字,使得填好之后的数字能够整除 x−kx-k kk是给出的。问是否一定能做到题解此题思想巧妙。。 有两种理解方法: 一、脑补: 两原创 2017-01-24 14:13:29 · 228 阅读 · 0 评论 -
[Codeforces Round #354 DIV2D (CF676D)] Theseus and labyrinth
题意n⋅mn\cdot m网格,每个房间四个门存在与否有1616种状态。每一秒可以从一个格子走到相邻格子(当且仅当两格子有互通的门),或者将所有的格子顺时针旋转90∘90^{\circ}。询问从起始点走到终点最少用时。题解拆点,每个格子拆成四种状态的点,然后bfsbfs,就是写起来比较麻烦。代码/// by ztx#include <bits/stdc++.h>// 1 1 1 1//原创 2017-01-24 14:11:11 · 259 阅读 · 0 评论 -
[Codeforces Round #310 DIV1E (CF555E)] Case of Computer Network
题意给出一个无向图,要求将每一条边变为单向的,并且满足给定的点对的连通性。题解首先找出边双连通分量,边双连通分量中的点对一定存在对边的取向使得分量中任意两点相互到达(看做一个或多个圆环套在一起)。 缩点,重新标号,构建新图,一定会得到一棵或多棵树。 下面描述的点都为重新标号后的点,且在同一棵树中。 对于每个连通性要求u→vu \to v,设他们的最近公共祖先为lcalca,更特殊地,lca≠u原创 2017-01-24 14:05:10 · 365 阅读 · 0 评论 -
[Codeforces Round #310 DIV1D (CF555D)] Case of a Top Secret
题意nn个钉子在墙上成一排排开,给出坐标,每次询问在某个钉子下面挂长度为ll的绳子开始逆时针旋转,最后会一直绕着哪个钉子旋转。题解首先模拟绳子先会碰到哪颗钉子,然后转到上面,这一步非常重要,因为这之后就能保证绳子不会绕到更远的地方去。再然后就是不断地二分,模拟。代码/// by ztx#include <cstdio>#define Rep(i,l,r) for(i=(l);i<=(r);i++)原创 2017-01-24 14:02:39 · 308 阅读 · 0 评论 -
[Codeforces Round #310 DIV1C (CF555C)] Case of Chocolate
题意给定一个n×nn\times n网格,网格上i+j≤n+1(1≤i,j≤n)i+j\le n+1 (1\le i,j \le n)的地方有巧克力,每次从对角线上某处开始吃,向ii减少的方向或jj减小的方向水平或竖直地吃,直到遇见没有巧克力的网格或走出边界。询问每次迟到的巧克力数。题解在不断地吃的过程中,会发现形成了一个个五边形或其退化,如下C * * * * * ** *原创 2017-01-24 14:00:50 · 398 阅读 · 0 评论 -
[Codeforces Round #310 DIV1B (CF555B)] Case of Fugitive
题意nn个岛,看做线段[li,ri][l_i,r_i],mm座桥,每座桥只能用一次且用在相邻两岛,可行时输出方案题解将所有相邻两岛的架桥长度范围按右端点第一关键字从小到大排序,左端点第二关键字从小到大排序,贪心,每次尽量找长度最短的桥架桥。代码/// by ztx#include <cstdio>#define Rep(i,l,r) for(i=(l);i<=(r);i++)#define r原创 2017-01-24 13:59:02 · 299 阅读 · 0 评论 -
[Codeforces Round #310 DIV1A (CF555A)] Case of Matryoshkas
题意现有俄罗斯套娃娃,大小11到nn共nn个,只能大的套在小的上面。已有mm堆娃娃,拿起娃娃花一秒,放回娃娃花一秒,最少需要多少秒题解nn个娃娃,mm堆,11上面连续数字长度为ll ans=2n−m−2l+1ans=2n-m-2l+1代码/// by ztx#include <cstdio>int main() { int n, m, l = 1, k, a, ans; scanf原创 2017-01-24 13:57:15 · 351 阅读 · 0 评论 -
[Codeforces Round #286 DIV1E (CF506E)] Mr. Kitayuta's Gift
题意字符集大小2626,给出一个串ss(n=|s|≤200n=|s|\le200),现任意插入正好mm个字符,询问构成回文串的个数,答案取模。题解按照题解。 1. dp(l,r,i)dp(l,r,i)代表回文串的左ii位可以匹配ss的第ll位,回文串的右ii位可以匹配ss的第rr位。下面假设n+mn+m为偶数将状态转移图画出来如图一(以串abaacabaac为例),图中将存在2424自环的点标为原创 2017-01-24 12:05:47 · 1106 阅读 · 0 评论 -
[Codeforces Round #286 DIV1D (CF506D)] Mr. Kitayuta's Colorful Graph
题意nn点,mm条边,每条边都有颜色。每次询问点对只用一种颜色的边连通的颜色的个数题解按照题解,对每一种颜色建并查集,询问时找颜色较少的一端枚举所有颜色看是否与另一端点连通,并记录答案,复杂度O(mq√logm)O(m\sqrt q \log m)代码/// by ztx#include <cstdio>#include <map>#include <vector>#include <algo原创 2017-01-24 11:47:21 · 409 阅读 · 0 评论 -
[Codeforces Round #286 DIV1C (CF506C)] Mr. Kitayuta vs. Bamboos
题意nn个竹子长度为hih_i,每天结束后增长aia_i,现在K可以工作mm天,每天砍竹子最多kk次,每一次把一个竹子砍下去pp长度且不能为负。询问mm天过后,最高竹子最矮能是多少。题解先二分答案MM,反向思考,转化为:第一天所有竹子都高为MM,此后每一天减少aia_i,K可以选择把哪些竹子增高。 设竹子最后高度为h′ih_i^{'}如果一直不去增高竹子最后一天有三种情况: 1. hi<=h′i原创 2017-01-24 11:41:53 · 460 阅读 · 0 评论 -
[Codeforces Round #286 DIV1B (CF506B)] Mr. Kitayuta's Technology
题意有nn个点互不相连,现有mm个单向连通性要求,问最少需要多少条单向边。题解将mm个连通性要求当做双向边建并查集找到所有的连通块,对每个集合,如果不存在环,这个连通块的答案是|V|−1|V|-1,否则这个连通块的答案是|V||V|。代码// by ztx#include <cstdio>#include <algorithm>#define maxn 100010LLint e[2][max原创 2017-01-24 11:37:07 · 338 阅读 · 0 评论 -
[Codeforces Round #286 DIV1A (CF506A)] Mr. Kitayuta, the Treasure Hunter
题意有3000130001个小岛,K站在第00个岛上并跳到了第dd个岛上。如果上一次跳的长度为ll,接下来他只能往右跳l−1,ll-1,l或l+1l+1的长度。现在给出pp个宝石的位置,询问K最多获得多少宝石。题解我们不去关心每一次跳的长度,只去关心这一次相比dd的变化量Δl\Delta l。因为这个−250<Δl<250-250<\Delta l < 250(Σ250i=1=31125\Sigma原创 2017-01-24 11:34:37 · 279 阅读 · 0 评论 -
[Codeforces Round #195 DIV2E (CF336E)] Vasily the Bear and Painting Square
题意当n=0n=0时有如下图像 当n=1n=1时有如下图像 当n=2n=2时有如下图像 题目要求对定的nn的图像,染k个三角形(并不要求染最小的三角形),求染色方案数. 需要注意的是:即使染色完毕后结果图案相同,若某一步染的三角形不相同也算是不同的两种方案.传送门分析可以发现染色是可以分层次的. 我们把nn的图像分为nn层,最内层为00,则可以一层一层向外染色. 如果想对小三角形原创 2017-01-23 20:52:55 · 464 阅读 · 0 评论 -
[CF Gym 100372B] Sergey and a pattern
题意给出一个初始序列ai{a_i}和一个最终序列bi{b_i},要求用一个栈执行两种操作 1 从ai{a_i}的前面取出一个数字压到栈中 2 弹栈,将栈顶放到bi{b_i}的后面。给出的最终序列中有一些位置是位置的数字,询问有多少种方法构造出bi{b_i}来。 长度至多16题解将ai{a_i}中数字是否在栈中状压,状态表示f[压栈次数][弹栈次数][状态]然后dp代码#include <cst原创 2017-01-24 14:45:50 · 225 阅读 · 0 评论 -
[CF Gym 100372C] Sergey and array
题意给出序列{ai}\{a_i\},每次可做一次操作:将选定区间里每个aia_i加一 定义f(a,m)f(a,m)为将{ai}\{a_i\}序列全部变成mm的最小的操作次数。 询问f(a,m)≤kf(a,m)\le k的{ai}\{a_i\}的个数题解第一步 脑补一下,f(a,m)f(a,m)就是{ai}\{a_i\}序列上升区间的高度的和 第二步 必须要意识到|ai−m|≤k|a_i-m原创 2017-01-24 15:06:53 · 191 阅读 · 0 评论 -
[CF Gym 100372E] Sergey’s game
题意一个游戏,键盘上有pp个键,每一局你可以按0≤x≤p0\le x \le p个键, 你可以在任意一局停下。每一局中,如果按正好bb个键,则此局得分为上一局得分+1,否则得分与上一局相同。同时,每一局的得分多余kk时,只得kk分。 询问得到正好ss分的不同方案数。题解按对bb个键为CbpC_{p}^{b}种方法,按不对为2p−Cbp2^p-C_{p}^{b}种方法 状态表示f(当前得分,总分原创 2017-01-24 15:17:23 · 327 阅读 · 0 评论 -
[Codeforces Round #428 DIV2D (CF839D)] Winter is here
题意给定一个数列aia_i,若子序列长度为kk,最大公约数为gcdgcd,定义子序列的权值为k⋅gcd⋅[gcd>1]k\cdot gcd\cdot [gcd > 1]。求所有子序列的权值和。 n≤2⋅105,ai≤106n\le 2\cdot 10^5,a_i\le 10^6,答案对109+710^9+7取模。题解考虑枚举gcdgcd。设cntcnt是gcdgcd的倍数的aia_i的个数。 当原创 2017-08-13 21:53:12 · 385 阅读 · 0 评论 -
[Codeforces Round #357 DIV2D (CF681D)] Gifts by the List
题意nn个人,mm条边的有向无环图,每个顶点至多一个入边,一个点的祖先定义为自己和所有通向自己的点。给出nn个人希望送给礼物的祖先aia_i,构建一个定点序列,对每个点,序列中作为ii的祖先的最左边的定点必须等于aia_i,若不存在这样的序列输出−1-1题解首先答案序列如果存在,一定是给出的ai{a_i}中不同的所有点。拓扑序最靠后的出现在ai{a_i}中的点,我们会把它放在最前面,让他的所有儿子给原创 2017-01-24 14:17:32 · 291 阅读 · 0 评论 -
[Codeforces Round #357 DIV2E (CF681E)] Runaway to a Shadow
题意平面给出一个圆OO,同时给出另外nn个圆,询问一个蟑螂从圆心OO沿半径出发,在圆OO内可以走到其他圆的概率。题解计算几何,用了三角函数,用了余弦定理,难点在精度问题,需要处理好细节。代码/// by ztx#include <cstdio>#include <vector>#include <cmath>#include <algorithm>#define sqr(x) ((x)*(原创 2017-01-24 14:19:39 · 502 阅读 · 0 评论 -
[CF Gym 100827E] Hill Number [2014-2015 ACM-ICPC Pacific Northwest Regional Contest E]
题意给定一个数字N,它是hill-number当且仅当它不存在“低谷”,低谷形如如“101”,“555444555”。若N为hill-number输出比它小的hill-number个数,否则输出-1。题解动态规划。 设计状态f(当前位置,以k结尾,是否有限制,上升或下降)。 当前位置:从左向右枚举 以k结尾:枚举0-9 是否有限制:指是否这一位及之前位置上所有数字都是给出数字对应位置上的数,原创 2016-07-27 22:22:23 · 477 阅读 · 0 评论 -
[CF Gym 100827K] Towers [2014-2015 ACM-ICPC Pacific Northwest Regional Contest K]
题意给定一个N*N可能不完整的数字矩阵需要填满,矩阵数字0->9,要求每一行每一列不能有重复数字。同时给出一些行和一些列的限制,要求从某个方向看某一行或一列“看到的”数字要与之相符。题解限制条件很强,要敢于暴力搜索。代码/****************************************\* Author : ztx* Title : K - Towers* ALG :原创 2016-07-27 22:30:16 · 443 阅读 · 0 评论 -
[CF Gym 100827F] Knights [2014-2015 ACM-ICPC Pacific Northwest Regional Contest F]
题意在M*N棋盘上放置任意数量的马,1≤M≤4,1≤N≤109题解矩阵快速幂。以两列(M*2)的放置情况作为状态,求出状态间转移的01矩阵,再快速幂求答案。代码/****************************************\* Author : ztx* Title : F - Knights* ALG :* CMT :* Time :\******原创 2016-07-27 22:25:58 · 388 阅读 · 0 评论 -
[Educational Codeforces Round 17 C (762C)] Two strings
题意给定两个串a、b,要求在b中删掉一个子串,使得b串成为a串的子序列题解从b串左边开始匹配a串左边,记录下来匹配到的位置,知道匹配结束 再从b串右边开始匹配a串右边,记录下来匹配到的位置。 。。。。然而这需要开两个数组。。。否则就像我一样gg了代码/// by ztx// blog.csdn.net/hzoi_ztx#define maxl 100010LLchar s1[maxl], s原创 2017-02-04 20:13:55 · 507 阅读 · 0 评论 -
[Educational Codeforces Round 17 D (762D)] Maximum path
题意给定一个3⋅n3\cdot n的数字矩阵,要求从(1,1)(1,1) 走到(3,n)(3,n)使得路径上数字和最大,每个位置只能走一次。题解找规律,一条路径不会往回翻多于一格。因为如果多于一格,所有的路径情况都能由不多于一格的路径方案代替。>>v v>v<<v ==> v^vv>> >^>那么每一列有5种状态status 0 1 2 3原创 2017-02-04 20:30:54 · 481 阅读 · 0 评论 -
[Educational Codeforces Round 17 E (762E)] Radio stations
题意给出n个点,每个点有三围(x,r,f) 两个点是冲突的,当|xi−xj|≤min(ri,rj)且|fi−fj|≤k|x_i-x_j|\le min(r_i,r_j) 且 |f_i-f_j|\le k. kk给出。 n≤105,0≤k≤10n\le 10^5 , 0\le k \le 10题解想法一: 按xx从大到小枚举点,每次在kdtree中询问xj≤xi+ri且xj−rj≤xi且|fj原创 2017-02-04 20:57:24 · 426 阅读 · 0 评论 -
[Codeforces Round #394 DIV2C (CF761C)] Dasha and Password
题意给定一个密码锁,密码锁有nn环,每一环mm个字符,你可以旋转每一环向左或向右,询问最少旋转几次能让现在的密码至少有一个数字,一个小写字母和一个给定符号(*或&或#) n,m≤50n,m\le 50题解对于每个环都找出来转到数字,字母,符号所需次数,n3n^3循环就完了,一道大水题。复杂度O(n3m)O(n^3m) 但是这题有更优算法。 我们对得到数字的次数取出最小的三个,字母和符号也是,这原创 2017-02-03 18:21:48 · 312 阅读 · 0 评论 -
[Codeforces Round #394 DIV2F (CF761F)] Dasha and Photos
题意给定一个n⋅mn\cdot m的字符矩阵,字符集为小写字母。 现在用这个图生成KK张图,生成方法为:将原图的某一个子矩阵变成相同的某个字符。这样子生成了KK张图,要求选择某张图,使得这张图到其它K−1K-1张图的距离和最小,只输出最小距离和。 n,m≤103,K≤3⋅105n,m\le 10^3, K\le 3\cdot 10^5题解设原图中每个位置的字符为a(i,j)a(i,j)。 设c原创 2017-02-03 17:59:08 · 452 阅读 · 0 评论 -
[Codeforces Round #373 DIV1E (CF718E)] Matvey's Birthday
题意给定一个字符串,字符集大小为8 将每个位置当做一个点,相邻位置有长度为1的连边,任意相同字母的位置之间有长度为1的连边。求图的直径和直径的长度。 n≤105n\le 10^5题解求图的直径需要求任意两点间的最短路,这是不现实的。设DIS(i,j)DIS(i,j)为位置ii与位置jj之间的最短路,那么 DIS(i,j)=min{|i−j|,min{dis(i,c)+1+dis(j,c)}}原创 2017-02-03 12:03:19 · 643 阅读 · 0 评论 -
[Codeforces Round #373 DIV1D (CF718D)] Andrew and Chemistry
题意给定一棵节点度数不超过4的无根树(无环烷烃) 现要求在要在树上添加一个结点,且之后每个节点度数依然不超过4(用氯取代一个氢) 问有多少不同构的加法n≤105n\le 10^5题解让我们回忆一下高中化学题 我们必须注意到添加的这个节点是和原树的节点不同的(一个是氯一个是碳),于是每种加法我们都把添加的这个节点当做树根,这样再找出不同构的树。 怎样找不同构的呢?我们都知道要用最小表示法,那么原创 2017-02-02 13:42:12 · 417 阅读 · 0 评论 -
[Codeforces Round #373 DIV1C (CF718C)] Sasha and Array
题意给出一个序列{ai}\{a_i\},每次两种操作区间中每个数字加上xx询问∑l≤i≤rfai\sum_{l\le i\le r} f_{a_i},其中faif_{a_i}表示第aia_i个斐波那契数。题解我们都知道斐波那契数可以用矩阵快速幂加速 即矩阵 x=[fi−1fi]x = \begin{bmatrix} f_{i-1} & f_{i} \\\end{bmatrix原创 2017-02-02 13:20:28 · 255 阅读 · 0 评论 -
[Codeforces Round #195 DIV2D (CF336D)] Vasily the Bear and Beautiful Strings
题意一个01串,给定0的个数n,1的个数m,询问多少个不同01串通过不断进行一种操作后得到一个字符g(0或1) 操作如下: 将01串最后两个数字取出,如果两个都是0,则在01串末尾放回1,否则放回0,直到01串只剩1个字符 给出n,m,g题解首先n或m为0的情况单独处理。 下面思考如下规律(===代表任意非空01串) 1=== ans:0 1 ans:1 01===原创 2017-01-30 20:01:00 · 393 阅读 · 0 评论 -
[Codeforces Round #195 DIV2B (CF336B)] Vasily the Bear and Fly
题意题面比较复杂 2m2m个圆排成两排,每排mm个圆。标号以排连续 天数从00到m2−1m^2-1,第ii天时,苍蝇从v=⌊im⌋+1v=\lfloor \frac i m \rfloor + 1出发,到u=m+1+(imodm)u=m+1+(i\mod m)去,在路径在圆内部前提下沿着最短路飞行。求飞行距离的平均长度。 样例 2 2 题解分析一下起点和终点会发现起点在第一排,终点在第二排原创 2017-01-30 19:00:49 · 340 阅读 · 0 评论 -
[Codeforces Round #372 DIV1C (CF715C)] Digit Tree
题意给定一棵nn节点的树,给定一个MM,询问有多少点对(i,j)(i,j),使得从节点ii到节点jj路径上数字顺序连接成的十进制数字是MM的倍数。题解考虑通过一个点(设其为根)的所有点对,设 aia_i 为从ii节点到根节点路径上数字顺序连接成的数;bib_i 为从根节点到ii节点路径上数字顺序连接成的数字;did_i 为节点ii 距根节点的距离,也等于 aia_i 和 bib_i 的位数。 对于原创 2017-01-24 14:26:46 · 490 阅读 · 0 评论 -
[Codeforces Round #372 DIV1B (CF715B)] Complete The Graph
题意给定一个图,图中一些边的长度未知,问是否存在最短路长度恰好为LL的可能题解将所有未知边长度赋为11,最短路长度为lenminlen_{min},将所有未知边长度赋为无穷,最短路长度为lenmaxlen_{max}。如果lenmin≤L≤lenmaxlen_{min}\le L\le len_{max},则有解。 二分边长,使得未知边长度为kk时最短路长度lenk<Llen_k<L,未知边长度为原创 2017-01-24 14:24:56 · 376 阅读 · 0 评论 -
[Codeforces Round #372 DIV1A (CF715A)] Plus and Square Root
题意一个游戏,若当前levellevel为 kk,屏幕数字为xx,有两种操作 1. 不断让 x=x+kx =x+k 2. 开根成一个整数 mm,并且(k+1)|m(k+1)|m,同时进入下一个levellevel,即k=k+1k=k+1 求每一次22操作前11操作次数题解写一个暴力,不断枚举mm使得条件成立,打表发现规律,发现直接按照规律写会爆long long,故写了个py(分解一下式原创 2017-01-24 14:23:08 · 228 阅读 · 0 评论 -
[Codeforces Round #428 DIV2E (CF839E)] Mother of Dragons
题意给出n≤40n\le 40个点的邻接矩阵,要求给每个点赋值,使得点的权值和为KK,每条边权值为两端点点权的乘积,最大化边的权值和。题解这道题我不会严谨的证明,只能猜一猜,官方题解http://codeforces.com/blog/entry/53815。 首先假如整个图是一个点数为kk的团,那么每个点的权值分为K/kK/k,最优答案将是K2(k−1)2kK^2\frac{(k-1)}{2k}原创 2017-08-13 23:19:42 · 913 阅读 · 0 评论