zl程序教程

CodeForces 558D

  • Educational Codeforces Round 132 (Rated for Div. 2) A·B·C

    Educational Codeforces Round 132 (Rated for Div. 2) A·B·C

    A. Three Doors原题链接Origional Link思想从拿到钥匙的门开始,用其得到的钥匙遍历对应的门直到钥匙为0,若共打开了3道门,则为YES代码#include <bits/stdc++.h> using namespace std; const int N = 10; void solve(){ int a[N]; int n; ci

    日期 2023-06-12 10:48:40     
  • Codeforces Gym 101002 H. Jewel Thief 题解

    Codeforces Gym 101002 H. Jewel Thief 题解

    Codeforces Gym 101002 H. Jewel Thief 题解 题意类似于一个背包,空间为M,有N个物品,第i个物品体积为w_i,价值为c_i,求价值之和的最大值。 其中,1 \leq n \leq 100000,1\leq m \leq 300000,1\leq w_i \leq 3,1\leq c_i \leq {10}^9思路首先注意到n,m非常大,所以普通的背包是肯定不行

    日期 2023-06-12 10:48:40     
  • Codeforces Round #825 (Div. 2) (A~C1)

    Codeforces Round #825 (Div. 2) (A~C1)

    A. Make A Equal to BOrigional Link题目大意:给定只含 0,1 的序列 a,b。对序列 a 不限次数执行如下操作: 将 a_i 变为 a_i - 1 。 将 a 按照任意顺序重新排列。 求最少几步可以得到和 b 相同的序列 a。思想: 思维题。分为两种情况讨论:不排序 a 直接操作和先排序 a 再操作的情况。 同时遍历一遍 a 和 b,记录 a[i] != b[

    日期 2023-06-12 10:48:40     
  • Codeforces Round #674 (Div. 3)(A~D)

    Codeforces Round #674 (Div. 3)(A~D)

    A. Floor NumberOrigional Link题目大意:给定目标房间编号 n 及一层楼住户数量 x。第一层楼只有 2 个住户,求目标房间所在楼层。思想:签到题。n\le2 时在第一层。n\gt 2 时: 若 x 可以整除 n-2,则在 \frac{n-2}{m} + 1 层; 反之在 \frac{n-2}{m} + 2 层。 代码:#include <iostream>

    日期 2023-06-12 10:48:40     
  • 【题解】codeforces-1194B

    【题解】codeforces-1194B

    https://codeforces.com/contest/1194/problem/B这道题其实是一道思维题,主要是要把情况考虑清楚,然后在代码上把逻辑理顺,就能做出来。题目给出了cross的定义:所在行和列都全部被涂黑。这道题分析可以知道,要对每行和每列的白色格子进行计数,然后相加。然后,很自然的可以想到,如果行列相交的位置是白色格子,那么这个格子就被计数了两次,就需要在总数上减一。如果白色

    日期 2023-06-12 10:48:40     
  • Codeforces Round #784 (Div. 4)(A~F)

    Codeforces Round #784 (Div. 4)(A~F)

    A. Division?Origional Link题目大意按照分数区间输出对应的难度。思想:签到题。代码:#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> #include <sstream&

    日期 2023-06-12 10:48:40     
  • Codeforces Round #828 (Div. 3) (A~D)

    Codeforces Round #828 (Div. 3) (A~D)

    A. Number ReplacementOrigional Link题目大意给定一个序列 a 和一个字符串 s。可以将相同的 a_i 替换为 s_i,若a_i 对应的替换规则唯一。求是否可以在满足上述条件下完成替换。思想:思维。当 s_i 所对应的 a_i 首次出现时建立对应规则。若 s_i 对应的 a_i 出现过且规则不同说明无法完成替换。代码:#include <iostream>

    日期 2023-06-12 10:48:40     
  • CodeForces - 999C  Alphabetic Removals

    CodeForces - 999C Alphabetic Removals

    C - Alphabetic RemovalsYou are given a string   consisting of   lowercase Latin letters. Polycarp wants to remove exactly   characters ( ) from the string  . Polycarp uses the following algorithm   t

    日期 2023-06-12 10:48:40     
  • A. Vasya and Book ( Codeforces   Educational Codeforces Round 55 )

    A. Vasya and Book ( Codeforces Educational Codeforces Round 55 )

    题意:当前在看书的第 x 页,每次可以向前或者向后翻 d 页,这个书一共 n 页,问能否用最小操作翻到第 y 页。 题解:三种情况:1、直接翻能到的一定最短。 2、先翻到第一页,然后往后翻,翻到第 y 页。3、先翻到第 n 页,然后往前翻,翻到第 y 页。#include<bits/stdc++.h> using namespace std; typedef long long l

    日期 2023-06-12 10:48:40     
  • A. Vova and Train ( Codeforces Round #515 (Div. 3) )

    A. Vova and Train ( Codeforces Round #515 (Div. 3) )

    题意:一条 L 长的路,一列车长在这条路的 l 到 r 之间,只有在 v 倍数时有灯,但是在 l 到 r 之间的灯是看不见的,问最大看见的灯的个数? 题解:L / v 表示总共的灯的个数, r / v 、( l - 1 ) / v 表示前 r 、( l - 1 ) 长的路有多少灯,减一下就可以了。 ( 难题补不上了,QAQ,写个水题,放松一下)#include <iostream>

    日期 2023-06-12 10:48:40     
  • codeforces Gargari and Bishops(很好的暴力)

    codeforces Gargari and Bishops(很好的暴力)

    /* 题意:给你一个n*n的格子,每一个格子都有一个数值!将两只bishops放在某一个格子上, 每一个bishop可以攻击对角线上的格子(主对角线和者斜对角线),然后会获得格子上的 数值(只能获取一次)。要求输出两个bishops获取的最大值以及它们所在的位置! 思路:直接暴力!....不错的暴力题目! 首先我们都知道每一条主对角线上的横纵坐标的和相同,每一条副对角线上的横

    日期 2023-06-12 10:48:40     
  • codeforces MUH and Cube Walls

    codeforces MUH and Cube Walls

    题意:给定两个序列a ,b, 如果在a中存在一段连续的序列使得a[i]-b[0]==k, a[i+1]-b[1]==k.... a[i+n-1]-b[n-1]==k就说b串在a串中出现过!最后输出b串在a串中出现几次!思路: KMP变形!如何转换成KMP求解呢?举一个例子说明一下:a: 5 10 8 10 11 9 11 12 10 15b: 4 2 4 5 3根据题意 a中的 10 8 10 1

    日期 2023-06-12 10:48:40     
  • codeforces Restore Cube(暴力枚举)

    codeforces Restore Cube(暴力枚举)

    /* 题意:给出立方体的每个顶点的坐标(是由源坐标三个数某几个数被交换之后得到的!), 问是否可以还原出一个立方体的坐标,注意这一句话: The numbers in the i-th output line must be a permutation of the numbers in i-th input line! 我们只要对输入的每一行数据进行枚举每一个排列, 然后检查时

    日期 2023-06-12 10:48:40     
  • codeforces B. Friends and Presents(二分+容斥)

    codeforces B. Friends and Presents(二分+容斥)

    题意:从1....v这些数中找到c1个数不能被x整除,c2个数不能被y整除!并且这c1个数和这c2个数没有相同的!给定c1, c2, x, y, 求最小的v的值!思路: 二分+容斥,二分找到v的值,那么s1 = v/x是能被x整除的个数s2 = v/y是能被y整除数的个数,s3 = v/lcm(x, y)是能被x,y的最小公倍数整除的个数! 那么 v-s1 =c1 v-s2 =c2 v-s3 =c

    日期 2023-06-12 10:48:40     
  • codeforces C. Bits(数学题+或运算)

    codeforces C. Bits(数学题+或运算)

    题意:给定一个区间,求区间中的一个数,这个数表示成二进制的时候,数字1的个数最多!如果有多个这样的数字,输出最小的那个!思路:对左区间的这个数lx的二进制 从右往左将0变成1,直到lx的值大于右区间的值rx! #include iostream #include cstring #include cstdio #include algorithm using namespac

    日期 2023-06-12 10:48:40     
  • codeforces Round #320 (Div. 2) C. A Problem about Polyline(数学) D. "Or" Game(暴力,数学)

    codeforces Round #320 (Div. 2) C. A Problem about Polyline(数学) D. "Or" Game(暴力,数学)

    解题思路:就是求数 n 对应的二进制数中有多少个 1 解题思路:对(strength, i, j)按照strength进行递减排序,从左到右进行遍历,用b[N]表示i和j有关系!  如果发现b[i]或者b[j]有关系了,则跳过这个strength, 否则b[i] =j, b[j] = i #include iostream #include algorithm #incl

    日期 2023-06-12 10:48:40     
  • 【Educational Codeforces Round 103 (Rated for Div. 2) C】Longest Simple Cycle

    【Educational Codeforces Round 103 (Rated for Div. 2) C】Longest Simple Cycle

    题目链接 链接 翻译 每一列的头尾会和前一列的第 \(a_i\) 和第 \(a_j\) 个节点相连,第 \(i\) 列有 \(c_i\) 个节点。 问你能形成的一个最长的环是多少。 题解 设 \(pre_i\) 表示从第 \(i\) 列的 两端 开始,往前延伸,形成的最长的环。 则 \(pre_i\) 有两种更新方式,第一种在第 \(i-1\) 列往两边开花,第二种,在第 \(i-1\) 列闭合

    日期 2023-06-12 10:48:40     
  • 【Educational Codeforces Round 102 D】Program

    【Educational Codeforces Round 102 D】Program

    题目链接 链接 翻译 给你一个长度为 \(n\) 的序列,每个字符为加法或减法操作,这些操作按顺序执行,且初始的时候你的数字为 \(0\)。 现在给你 \(m\) 个询问,这些询问用区间 (l,r) 描述,表示从 \(l\) 开始到 \(r\) 结束这一段的操作被忽略了。 然后剩下的操作还是按顺序执行的话,问你最后在数字变化的过程中,会出现多少个不同的数字。 题解 首先不同的数字个数,就是在变换

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #695 (Div. 2) E】Distinctive Roots in a Tree

    【Codeforces Round #695 (Div. 2) E】Distinctive Roots in a Tree

    题目链接 链接 翻译 给你一棵树,树上的每一个节点都带有权值。 让你统计这样的点 \(x\) 的个数,使得以 \(x\) 为根的时候,所有以 \(x\) 开始,以某个节点结束的路径中每个节点的权值 都是唯一的,即每个权值都只出现了一次。 称这样的 \(x\) 为 \(distinctive\ root\), 统计所给的树中这样的 \(distinctive\ root\) 的个数。 题解 如图

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #695 (Div. 2) D】Sum of Paths

    【Codeforces Round #695 (Div. 2) D】Sum of Paths

    题目链接 链接 翻译 可以从数组中任意一个位置开始出发走一条路径,每一步可以往走到相邻的一个格子(左或右)。但是不能超过边界。 问你所有不同的长度为 \(k+1\) 的路径的和是多少。 然后要支持更新操作实时回答这个路径和。 题解 \(n\) 和 \(k\) 都只有 \(5000\),其实是比较容易往 \(DP\) 上面想的。 实时更新的话,只要能够知道最后每个数字在答案中的贡献 \(cnt_i

    日期 2023-06-12 10:48:40     
  • 1800*2【Codeforces Round #612 (Div. 1) A】Garland

    1800*2【Codeforces Round #612 (Div. 1) A】Garland

    题目链接 链接 翻译 给你一个排列,其中有一些位置上的数字被remove了,让你全都放回去。 定义相邻两个数字如果奇偶性不同,\(diff\) 值加 \(1\)。 求数字全都放回去之后 \(diff\) 的值的最小值。 题解 设 \(dp[i][j][k]\) 表示前 \(i\) 个数字放了 \(j\) 个偶数,最后一个数字奇偶性为 \(k\) 的最小 \(diff\)。 之所以可以只用偶数的个

    日期 2023-06-12 10:48:40     
  • 【Codeforces 1327E】Count The Blocks

    【Codeforces 1327E】Count The Blocks

    题目链接 链接 翻译 让你统计\(0\) ~ \(10^n-1\) 中长度为 \(len\) 的连续块的个数 题解 考虑长度为 \(len\) 的连续块的位置,有两种情况 ①连续块紧接着开头或结尾,即xxxx........ 以及 .......xxxx 这两种 ②连续块在中间 ....xxxx..... 对于第①种情况,开头或结尾的连续块有 \(10\) 种可能,而和这个连续块紧接着的一个

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #643 (Div. 2) C】Count Triangles

    【Codeforces Round #643 (Div. 2) C】Count Triangles

    题目链接 链接 翻译 让你找 \(3\) 条边 \(x,y,z\), 要求 \(A\le x\le B\le y\le C\le z\le D\) 且 \(x,y,z\) 能组成三角形。 问你这样的 \(x,y,z\) 的个数。 题解 对于最后选出来的边,我们只需要关注 \(x+y\) 是不是大于 \(z\) 就好了 (两边之和大于第三边)。 因为 \(x<=y<=z\) 且 \(x

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #629 (Div. 3) D】Carousel

    【Codeforces Round #629 (Div. 3) D】Carousel

    题目链接 链接 翻译 给你两种重量的物品, 重量分别为 \(S\) 和 \(W\), 数量分别为 \(cntS\) 和 \(cntW\)。 有两个人,第一个人的背包容量为 \(p\), 第二个人的背包容量为 \(f\)。要让这两个人拿走的物品的数量之和最大。 问你最大可能为多少。 即有数量限制,物品价值都相同为 \(1\) 要求最大数量。 题解 中间枚举的量记得要还原 代码 #include

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #639 (Div. 2) A】Puzzle Pieces

    【Codeforces Round #639 (Div. 2) A】Puzzle Pieces

    题目链接 点我呀 翻译 给你一个拼图, 问你能不能把它拼成一个 \(n \times m\) 的方格图。 题解 会发现, 只有 \(2 \times 2\) 的能拼出来, 或者是一个长条形的。 往下或者往右一直延伸这样, 然后宽度或高度为1。 代码 #include<bits/stdc++.h> #define ll long long #define rei(x) scanf("%

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #635 (Div. 2) C】Linova and Kingdom

    【Codeforces Round #635 (Div. 2) C】Linova and Kingdom

    题目链接 点我呀 翻译 给你一棵树, 让你在这棵树上选择恰好k个点, 这k个点是发展工业的, 然后其余的n - k个点发展旅游业。 但是根节点(约定1号节点是根节点)例外, 它可以发展旅游业也可以发展工业(不过后面会发现这条件没啥用。。)。 假设x是你选出来的k个点中的一个, 对于所有的x, 你需要求出每个节点x到根节点1会经过的 发展旅游业 的节点个数\(cnt_i\), 然后对cnt求和,

    日期 2023-06-12 10:48:40     
  • 【Educational Codeforces Round 88 (Rated for Div. 2) E】Modular Stability

    【Educational Codeforces Round 88 (Rated for Div. 2) E】Modular Stability

    题目链接 请不要点我! 题目大意 你给一个整数n一个整数k 让你找这么一个数组a[1],a[2],...,a[k] 其中1<=a[1]<a[2]<....<a[k]<=n 使得对于任意一个非负整数x,让它按照 任意顺序 依次去和这个数组的每个元素取模(x和第1个元素取模后,结果再和第2个元素取模...)。 得到的取模的结果都要相同。 请你求出符合要求的数组a的个数。

    日期 2023-06-12 10:48:40     
  • 【Educational Codeforces Round 88 (Rated for Div. 2) D】Yet Another Yet Another Task

    【Educational Codeforces Round 88 (Rated for Div. 2) D】Yet Another Yet Another Task

    题目链接 点我吧 题目大意 给你一个长度为n的序列,先手先选择一个区间[L,R], 这个区间里面的数字, 让后手选择一个删掉。 然后计算剩余的R-L个数字的和sum(如果R-L等于0,认为和是0)。 后手总是想让这个sum的值比较低,所以它总是会选择最大的那个数字删掉。 现在让你帮先手选择一个区间,使得这个区间在被后手删掉一个数字之后, 剩余的和最大。 题解 这道题, 如果没有删掉一个数字这个操

    日期 2023-06-12 10:48:40     
  • 【Educational Codeforces Round 88 (Rated for Div. 2) B】New Theatre Square

    【Educational Codeforces Round 88 (Rated for Div. 2) B】New Theatre Square

    题目链接 【题目翻译】 让你用1*1和1*2的砖块铺满空白的格子。 1*2的砖块只能横着放。 用11的砖块代价是x,12的代价则是y. 问你需要的最小代价。 【题解】 看到1*2只能横着放。问题就简单多了。 若x2<=y则直接放11的就行了。 否则1*2可以放久放这个。(单位格子价格更低); 【代码】 /* 显然有的性质: 如果x*2<=y

    日期 2023-06-12 10:48:40     
  • 【Educational Codeforces Round 88 (Rated for Div. 2) A】Berland Poker

    【Educational Codeforces Round 88 (Rated for Div. 2) A】Berland Poker

    题目链接 【题目翻译】 n张牌要平均分配给k个人(k是n的因子) 然后有m张鬼牌,剩下n-m张是普通牌。 让你分配普通牌和鬼牌。 使得最后的得分最高。 最后的得分=鬼牌数最多的那个人的鬼牌减去其他k-1人中鬼牌最多的那个人的鬼牌数。(最后答案可能为0) 【题解】 显然尽量先让一个人拿满k张鬼牌(不足就算了) 然后剩下的m-min(k,m)张鬼牌全都平均地分配给其余k-1个人就好了。

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #645 (Div. 2) D】The Best Vacation

    【Codeforces Round #645 (Div. 2) D】The Best Vacation

    题目链接 【题目翻译】 给你n个月,每个月天数有d[i]天 你需要选取连续的几天(可以跨月、跨年) 然后你得到的收益为这些天是在所在月份的第几天对应的数字的和。 比如你选了第2月(设有30天)的第29、30天以及3月的第1,2天。 那么你的收益就是29+30+1+2 然后现在的问题是,让你从n个月份当中选出来连续的x天,要求他们的收益总和最大。 【题解】 首先需要明确一点,你选出来

    日期 2023-06-12 10:48:40