zl程序教程

codeforces 283C

  • Codeforces Round #807 (Div 2.) A·B·C

    Codeforces Round #807 (Div 2.) A·B·C

    A. Mark the Photographer原题链接Original Link思想将所有人的身高存入数组 ,用sort排序利用双指针,以n为分界线,判断是否满足条件前n个人的身高+ x小于等于后n个人的身高代码#include <bits/stdc++.h> using namespace std; const int N=1e6+3; int a[N]; int main(

    日期 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 #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 Round#806(Div.4) 题解

    Codeforces Round#806(Div.4) 题解

    哈哈哈又写题解了!CF链接 A YES or YES? 英文题面看这里 解释输入N个字符串,不管大小写,判断是否为“yes” 思路挨个字母判断是否大写,如果大写就转换成小写,最后判断是否为“yes”。那怎么判断是否为“yes”呢?直接==可以吗?似乎不行(我用的char x[4]),所以我们用最原始的方法:x[0] == 'y' && x[1] == '

    日期 2023-06-12 10:48:40     
  • A. The Fair Nut and Elevator (Codeforces Round #526 (Div. 2))

    A. The Fair Nut and Elevator (Codeforces Round #526 (Div. 2))

    A. The Fair Nut and Elevator好笨啊QAQ。暴力枚举的题,连分类都不用。从电梯初始位置到第一层、人到第一层、间隔的层数,往返路程。#include <bits/stdc++.h> using namespace std; int a[105]; int main() { int n; while(~scanf("%d"

    日期 2023-06-12 10:48:40     
  • C、Grid game 【 Codeforces Round #534 (Div. 2) 】

    C、Grid game 【 Codeforces Round #534 (Div. 2) 】

    C、Grid game题意:给你一个4 × 4 的方格,然后给你一些1 × 2 或者 2 × 1的小方格,当这些方格在一行或者一列的时候会消除掉,问最佳放置位置。思路:QAQ,什么时候思维会变强一些。选定一些地方,只放这几个地方就可以了。两个 flag ,分别是放置行和列的标记,如果没放之前,假设先来到是竖的, 所以先放到上面位置 [ 1 ,  4 ],如果再来一个竖的,那么就可以放到下面消掉了,

    日期 2023-06-12 10:48:40     
  • Codeforces 842B Gleb And Pizza几何,水详解编程语言

    Codeforces 842B Gleb And Pizza几何,水详解编程语言

    Gleb ordered pizza home. When the courier delivered the pizza, he was very upset, because several pieces of sausage lay on the crust, and he does not really like the crust. The pizza is a circle of r

    日期 2023-06-12 10:48:40     
  • codeforces Gargari and Permutations(DAG+BFS)

    codeforces Gargari and Permutations(DAG+BFS)

    题意:求出多个全排列的lcs! 思路:因为是全排列,所以每一行的每一个数字都不会重复,所以如果有每一个全排列的数字 i 都在数字 j的前面,那么i, j建立一条有向边! 最后用bfs遍历整个图,求出源点到每一个点的距离,其中最大的距离就是最长的公共子序列的长度! #include iostream #include cstdio #include cstring #incl

    日期 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——Little Pony and Expected Maximum

    codeforces——Little Pony and Expected Maximum

    所以最后的结果=sum((k/m)^n - ((k-1)/m)^n) (1 =k =m) 不要这样求(k^n/m^n)数据可能会很大! #include iostream #include cstdio #include cmath using namespace std; int main(){ int n, m; while(cin m n){ double

    日期 2023-06-12 10:48:40     
  • codeforces——Little Pony and Sort by Shift

    codeforces——Little Pony and Sort by Shift

    /* 题目大意:给你一个序列,不断地将最后边的数值移动到最前边,问最少经过多少次可以变成一个单调递增的序列! 如果不能则输出-1。 如果该序列按照不断从后向前移动排序成功,那么该序列要么只有一个单调递增的序列, 或者有两段单调递增的序列(1..k 和 k+1..n)并且 (k+1...n)中的最大值num[n] =(1...k)中的最小值num[1] #include io

    日期 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 Fedor and New Game

    codeforces Fedor and New Game

    LeetCode 289. Game of Life 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡; 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活; 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡; 如果死细胞周围正好有三个活细胞,则该位置死细胞复活; LeetCode 390. Elimination Game 给定一个

    日期 2023-06-12 10:48:40     
  • codeforces C. Diverse Permutation(构造)

    codeforces C. Diverse Permutation(构造)

    题意:1...n 的全排列中 p1, p2, p3....pn中,找到至少有k个|p1-p2| , |p2-p3|, ...|pn-1 - pn| 互不相同的元素! 思路: 保证相邻的两个数的差值的绝对值为单调递减序列..... 如果够k个了,最后将没有访问到的元素直接添加到末尾! #include iostream #include cstdio #include cstring

    日期 2023-06-12 10:48:40     
  • Codeforces Round #277(Div. 2) (A Calculating Function, B OR in Matrix, C Palindrome Transformation)

    Codeforces Round #277(Div. 2) (A Calculating Function, B OR in Matrix, C Palindrome Transformation)

    题意:计算f(n) = -1 + 2 -3 +4.....+(-1)^n *n的值 思路:偶数和 - 奇数和(或者用等差数列计算化简得到结果) #include algorithm #define N 10000 using namespace std; int main(){ long long n; cin n; if(n%2==0) cout n/2 endl

    日期 2023-06-12 10:48:40     
  • codeforces Soldier and Number Game(dp+素数筛选)

    codeforces Soldier and Number Game(dp+素数筛选)

    outputstandard output Two soldiers are playing a game. At the beginning first of them chooses a positive integer n and gives it to the second soldier. Then the second one tries to make maximum possi

    日期 2023-06-12 10:48:40     
  • codeforces B - Preparing Olympiad(dfs或者状态压缩枚举)

    codeforces B - Preparing Olympiad(dfs或者状态压缩枚举)

    You have n problems. You have estimated the difficulty of the i-th one as integer ci. Now you want to prepare a problemset for a contest, using some of the problems youve made. A problemset for the c

    日期 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     
  • Codeforces Round #323 (Div. 2) C.GCD Table

    Codeforces Round #323 (Div. 2) C.GCD Table

    The GCD table G of size n × n for an array of positive integers a of length n is defined by formula Let us remind you that the greatest common divisor (GCD) of two positive integers x and y is the gr

    日期 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     
  • 【Educational Codeforces Round 102 C】No More Inversions

    【Educational Codeforces Round 102 C】No More Inversions

    题目链接 链接 翻译 给你一个序列 \(a\), 是 1,2,3...k 按顺序组成的 \(n\ (n>=k)\) 个数字, 超过 \(k\) 了,又从右往左取。 然后,让你确定一个排列 \(p\),使得它按照 \(a\) 中元素作为下标顺序取,得到的序列 \(b\) 中逆序对的个 数不超过原序列 \(a\)。并且,要求得到的序列 \(b\) 的字典序是最大的。 题解 做这题之前,先得知道

    日期 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) C】Three Bags

    【Codeforces Round #695 (Div. 2) C】Three Bags

    题目链接 链接 翻译 给你 \(3\) 个多重集,第 \(i\) 个集合有 \(n[i]\) 个数字。 从两个不同集合中分别取出数字 \(x\) 和 \(y\),则从两个集合中分别删去 \(x\) 和 \(y\), 然后在第 \(1\) 个集合中(取出 \(x\) 的那个集合) 加入元素 \(x-y\)。 要求最后只有一个集合中剩下一个数字,问你这个数字最大可以是多少。 题解 思维 把操作 \(

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #695 (Div. 2) A】Wizard of Orz

    【Codeforces Round #695 (Div. 2) A】Wizard of Orz

    题目链接 链接 翻译 translation 题解 98901234.... 写题解的时候才发现题目名字里有个ORZ 代码 /* */ #include <bits/stdc++.h> using namespace std; int main(){ #ifdef LOCAL_DEFINE freopen("in.txt", "r", stdin); #endif

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #693 (Div. 3) D】Even-Odd Game

    【Codeforces Round #693 (Div. 3) D】Even-Odd Game

    题目链接 链接 翻译 translation 题解 贪心,随便想想也能猜到,排序。然后哪一方最大的数字大(奇数和偶数),就抢对方的(对方的奇偶性数字大),或者拿自己的(自己的奇偶性大)。 这样,对于拿的那个人来说收益总是最大的。 不够了就随遇而安就行。。 代码 #include <bits/stdc++.h> #define lson l,mid,rt*2 #define rson

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #694 (Div. 1) D】Strange Housing

    【Codeforces Round #694 (Div. 1) D】Strange Housing

    题目链接 链接 翻译 让你在 \(n\) 个点上放老师,使得这 \(n\) 个点任意两个点之间都有路径。 但是所给的路径要激活才能用,而激活的条件就是路径连接的两个点中,有一个点放了老师。 当然一条路径不能两个端点都放老师,不然他们会打架 2333 输出任意一个合法的方案即可。 题解 随便找一个没染色的点 \(u\),染成黑色。 然后把所有和 \(u\) 相邻的点集 \(V\) 都染成白色。 这

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #694 (Div. 2) C】Strange Birthday Party

    【Codeforces Round #694 (Div. 2) C】Strange Birthday Party

    题目链接 链接 翻译 translation 题解 \(k\) 值比较大(对应的礼物贵)的优先安排小的 \(c\),这样节省的 \(money\) 最多。 因为每个 \(k\) 都是要满足的,当然尽可能用便宜点的搪塞最好。。塑料友情。。 代码 #include <bits/stdc++.h> #define LL long long using namespace std; con

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #693 (Div. 3) F】New Year's Puzzle

    【Codeforces Round #693 (Div. 3) F】New Year's Puzzle

    题目链接 链接 翻译 给你一个 \(2*n\) 的方格,让你用 \(1*2\) 的骨牌,横着或者竖着放,铺满整个方格。 其中有一些被黑色方块阻挡,不能放骨牌。问你可不可行。 题解 首先考虑 整个方格 第一列,如果两行都是空的。 那么考虑第二列的几种情况: 第二列也是空的,那么第一列放竖的没问题。 第二列有一个方格被堵住了,那么第一列只能竖着放了,不然铺不满(注意这是第一列,它之前没有列了) 第

    日期 2023-06-12 10:48:40     
  • 【Codeforces Round #693 (Div. 3) A】Cards for Friends

    【Codeforces Round #693 (Div. 3) A】Cards for Friends

    题目链接 链接 翻译 题解 看到除2就知道是个暴力题了。 模拟就行,log复杂度除不了几下的。 然后每次分成的碎片个数乘 \(2\) 也很快就会超过 \(n\) 了,为了防止爆 \(int\) 中间就停下来吧。 代码 #include <bits/stdc++.h> #define lson l,mid,rt*2 #define rson mid+1,r,rt*2+1 #define

    日期 2023-06-12 10:48:40     
  • 【Codeforces 1461E】Water Level

    【Codeforces 1461E】Water Level

    题目链接 链接 翻译 让你维持水位始终在 [l,r] 这个范围 且,你每天开始的时候可以加(所以也可以不加) \(y\) 升水,然后结束的时候会少掉 \(x\) 升水(固定)。 一开始水位是 \(k\),问你这样(水位始终在 [l,r] 这个区间) 能否持续 \(t\) 天。 题解 如果 \(y<x\),那么显然水位只会一直下降。则一开始如果水位大于 \(r-y\) 那么就每次只减少 \(

    日期 2023-06-12 10:48:40     
  • 【Codeforces 1453D】Checkpoints

    【Codeforces 1453D】Checkpoints

    题目链接 链接 翻译 每个阶段都有 \(\frac{1}{2}\) 的几率失败,失败了会回到上一个存档点。 想让玩家的期望尝试次数为 \(k\),问你能否设计出一个不超过 \(2000\) 级台阶的策略,满足这个要求。 题解 如果只有一个 \(1\) 的话,那么期望尝试次数为 \(2\)。假设后面出现了一个 \(0\),即 10,那么到达第 \(2\) 层且通过了第二层(能够到达第三层了)的期望

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