首页 > 其他分享 >暑假训练2023.7.13

暑假训练2023.7.13

时间:2023-07-13 22:12:13浏览次数:41  
标签:... 13 最小 value 2023.7 暑假 对角线 序列 分割线

Codeforces Round 884 (Div. 1 + Div. 2)

A.Subtraction Game

简单构造,输出a+b

B. Permutations & Primes

2和3都是质数,1不是,因此满足条件的区间一定包含1。把1放到序列最中间,2和3放到两端其他数字随意排列,可以证明此序列得到的素数mex的个数最大,为\(\lfloor \frac{n + 1}{2} \rfloor \cdot \lceil \frac{n + 1}{2} \rceil + [n + 1是否为素数]\)。

C. Particles

dp题,设\(f(i)\)表示将前i个合并成一个所得的最大值,可以发现两个粒子之间如果相隔奇数个粒子,则这两个可以合并,因此状态转移方程为 \(f(i) = max(a_i, a_i + f(i - 2), a_i + f(i - 4), ... )\)分别表示第i个不合并, 和第i - 2个合并, 和第i - 4个合并,...

因为第一个和最后一个粒子都可以直接去掉,因此最终答案为 \(f(1), f(2), ..., f(n)\)中的最大值。

D. Row Major

根据题意可以发现,若\(a * b = n\),则第i个位置字母和第i + a个位置字母不能相同。

可以设n个点,如果\(k | n\),则在第i和第i + k两点之间连一条边,连完之后求图的最小着色数即为最少使用的字母个数。根据上面的方法打表或者手推数据可以发现最少使用的字母数即为第一个不满足\(k | n\)的k。

然后按照a,b,c,...顺序以k为循环排列即可

E. Great Grids

将A,B,C,替换为0,1,2,填入表格中可以发现,一个满足条件的表格从每个格子向右走或者向下走,在模3的条件下只有+1或者+2两种情况。将其标记在两个格子相邻的分割线上,然后可以发现每条横或者竖分割线上标记的数字都相同。

再考虑给定的约束条件,设2x2方格的主对角线为左上到右下,副对角线为右上到左下,则若给定了主对角线的约束,则此2x2方格中心点关联的一横一竖的分割线上的数字应该不同,相反若是副对角线约束,则两分割线上应同为+1或者+2。

因此,此问题转化成了一个二分图染色问题,我们将给定的约束的分割线连上边,分为两种边,表示两边端点染色应相同还是不同,然后用dfs染色并判断图是否合法。

F1. Min Cost Permutation (Easy Version)

首先对于\(c > 0\) 的情况,将a数组以升序排列可以得到最小的value值并且字典序最小。

对于\(c < 0\) 的情况,我们将原式\(|b_{i + 1} - b_i - c|\)绝对值内添加负号得\(|b_i - b_{i + 1} - (-c)|\),因为-c是大于0的,则可知将a数组降序排列可得最小的value值,但此时字典序不一定为最小。

从前往后贪心地考虑某一位最小能填几可以保证value值不变,因为初始序列为降序排序,设当前已经完成了前i位,i往后的序列一定为降序排序,设存在一个最大的j,满足:

操作前为

\[ ..., a_{i - 1}, a_{i}, a_{i + 1}, ..., a_{j - 1}, a_{j}, a_{j + 1}, ... \]

操作后为:

\[ ..., a_{i - 1}, a_{i}, a_{j}, a_{i + 1}, ..., a_{j - 1}, a_{j + 1}, ... \]

且操作前后序列的value值不变,则可将j提到i后,其他顺序不变。

若value值不变,即满足:

\[|a_{i + 1} - a_i - c| + |a_{j} - a_{j - 1} - c| + |a_{j + 1} - a_j - c| = |a_{j} - a_{i} - c| + |a_{i + 1} - a_{j} - c| + |a_{j + 1} - a_{j - 1} - c| \]

用两个for循环,i从0到n,j从n到i + 1,找到满足的j即为最大的j(\(a_j\)最小的j)

标签:...,13,最小,value,2023.7,暑假,对角线,序列,分割线
From: https://www.cnblogs.com/mcggvc/p/17552334.html

相关文章

  • 2023-07-13:如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串
    2023-07-13:如果你熟悉Shell编程,那么一定了解过花括号展开,它可以用来生成任意字符串。花括号展开的表达式可以看作一个由花括号、逗号和小写英文字母组成的字符串定义下面几条语法规则:如果只给出单一的元素x,那么表达式表示的字符串就只有"x"。R(x)={x}例如,表达式"a"......
  • 《摆与混》第十一章--7月13日--周四
    周四,值的反思的一天;1.今天做了什么:今天9点起。洗漱后,纠结于早餐的形式,上午的学习有些心不在焉,下午摆烂时间依旧存在心理斗争,5点出发健身锻炼,饭后看了几场比赛,今天也许无所事事,也许规划满满,我不禁反思什么才是真正的暑假,对于时间的苛责与暑假生活的罪恶感的斗争,这些事情消磨时间与......
  • CF1336C(挺重要的区间dp)
    KaaviandMagicSpell-洛谷|计算机科学教育新生态(luogu.com.cn)我们直接考虑如何构造出来的字符串,这个字符串显然只能每次最左端加或者最右端加入。对于第一个字符,显然每个位置都够能放置,且有两种方案。接着下一个字符加入它的左端或者右端,依次类推。令dp[i][j]为s(1......
  • 7.13总结
    今天总结稍微累点,但也比较充实上午起来后学姐告诉我了视频需要修改的地方,有些目前还改不了,所以打算以后改,后来做了pta,好消息是达到了1500分,该写报告了。下午看了java的课,还是面向对象,学到了接口这个知识点,这个是c++没有的,简单来说是一种规则,而且可以类比成一个抽象类,这还是比较......
  • 7.13打卡
    1.字符常量使用单引号,字符串常量使用双引号表示2.两者均支持转义字符表示,转义字符形式可以参见之前文章。3.以下几种情况必须区别对待:‘A’ 表示单个字符大写字母A,占用1个字节空间“A” 表示字符串,该字符串只有1个大写字母A组成,占用2个字节空间,每个字符串末尾自动会加上一......
  • 7月13日 今日所学 分享整理
    #define_CRT_SECURE_NO_WARNINGS1#include<string.h>#include<stdio.h>intmain(){ intarr1[10]={1,2,3};//不完全初始化 chararr2[5]={1,2,3,4,5}; chararr3[]={1,2,3,4}; chararr4[5]={1,2,3}; chararr5[3]={'a'......
  • 2023.7.13
    今天是养生开始的第一天,我昨天在小诊所买了一些养生的东西,泡一杯茶水,吃一些东西,为未来的消耗做好准备,早上在家里练习乒乓球,中午做一碗番茄炒蛋,下午看了看篮球赛,晚上学习编程1小时,生活再简单不过,不过看你怎么过,世界没有那么难过,就是一定要过去,心平气和地过一天,日复一日,不断进步。......
  • [总结]2023-7-13A组模拟赛
    [总结]2023-7-13A组模拟赛P1心路历程发现今天的题目描述很直接,比昨天的好懂。然后发现T2似乎是数据结构,好像找到了归宿,心里踏实了一点。之后就发现自己不会的计数题但是有两道:T1和T3。T4还以为是板子题,然后发现读不懂。于是就开始干T2(终于不是从T1开始做了!!!),一开始以为要用高级......
  • 2023年7月13日,Stream流,Stream流的获取,Stream流中间聚合操作,Stream流终结操作,Calendar
    Stream流1.单列集合的Stream流获取packagecom.wz.stream01;importjava.util.Arrays;importjava.util.HashSet;importjava.util.List;importjava.util.function.Consumer;importjava.util.function.Predicate;importjava.util.stream.Stream;publicclassstreamDe......
  • [leetcode每日一题]7.13
    931. 下降路径最小和中等281相关企业给你一个 nxn 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者......