首页 > 其他分享 >CodeTON Round 8 (Div. 1 + Div. 2)

CodeTON Round 8 (Div. 1 + Div. 2)

时间:2024-03-31 18:33:37浏览次数:29  
标签:... 那么 CodeTON Round 答案 Div Problem

Problem A

显然 \(k = 1, n\) 时才有解。

Problem B

倒序扫一遍即可。

Problem C1(2)

C1 直接相邻为 \(1\) 的能用,否则不算。

C2 就是把间隔挖出来,奇偶分别选择。

Problem D

直接记录每个状态的 \(k\) 优解,然后堆转移。

Problem E

假设两种牛之间的间隔大小分别为 \(g_i\)。

首先一个观察是只有所有 \(g_i\) 都是偶数时,FN 才会胜利,那么我们用总方案 \(C_{l}^{2n}\) 减去 FN 获胜的方案就是 FJ 获胜的方案。

那么我们枚举 \(s = \sum g_i\),可得若干个偶数组合一下就是 \(C_{\frac{s}{2} + n - 1}^{n - 1}\),用插板法可得。然后再加上放奶牛的方案 \(C_{l - s - n}^{n}\)。

最后答案记得乘二,因为 \(ABABAB...\) 和 \(BABABA...\) 是等价的。

Problem F

首先一个观察是,这个东西反复嵌套,改变最前面的数字一定不会影响答案太多,实际上 \(n \ge 6\) 时,改变 \(a_1\) 对 \(a_n\) 的变化至多为 \(1\)。

那么就可以直接分块。

我们预处理出每个块内算下来的值会是多少,假设块为 \([l,r]\) 我们可以看作 \(l\) 之前的都是 \(0\)。即使不是,也至多改变答案 \(1\)。

那么我们这样算出一个块的值,记为 \(v\)。 那么前面的数字要是多少才能到达 \(v + 1\) 呢? 我们从 \(v\) 开始倒推一边即可,这个阈值设为 \(b\)。

查询的时候暴力重构那个点所在的块,然后遍历块,如果当前值大于 \(b_i\) 那么就赋值为 \(v + 1\),否则是 \(v\)。

当然我们每一步根号都直接下取整对答案没有影响,可以通过反证法证明。

Problem G

待写。

Problem H

待补。

标签:...,那么,CodeTON,Round,答案,Div,Problem
From: https://www.cnblogs.com/z-t-rui/p/18107047/CF1942

相关文章

  • CodeTON Round 8 (Div. 1 + Div. 2, Rated, Prizes!)做题笔记
    A.FarmerJohn'sChallengeProblem-A-Codeforces题意:构造出满足条件的数组a,否则输出-1做法:判断k和n或者1的关系;k==1则输出1就行,k==n就从1输出到n;都不满足就输出-1;代码:#include<iostream>usingnamespacestd;intmain(){intt;cin>>t;while(t--){intn,k;cin......
  • cf(div4) 第四周
    Problem-E-CodeforcesE.NearlyShortestRepeatingSubstring题解:我们直接枚举长度题目限制很多首先,枚举长度要确保整除然后我们在取从头开始的这个长度的字符串一一向下比对这里我们还要去这个长度的i+=len下一个字串在一一去比对然后就不可能往下取了,如果向下取那就......
  • CodeTonRound8-BC1C2补题
    B-BessieandMEX思路:顺,逆填都可以.见代码注释voidsolve(){//补B--不用str.find来维护,这个是o(n)的。用set的count()orfind()来维护,这两个都是o(logn)的intn;cin>>n;////顺着填:填的数字=MEX.find('0')-aior填了MEX[MEX.find('0')]='1',之后MEX.f......
  • SMU Winter 2024 div2 ptlks的周报Week 7(3.25-3.31)
    哈夫曼编码对出现频率大的字符赋予较短的编码,对出现频率小的字符赋予较长的编码。哈夫曼树的建树过程为,每次选取最小和次小的根节点,将它们之和作为它们的根节点,左子节点为小点,右子节点为次小点,直至仅剩一棵树。一棵哈夫曼树,左子树为0,右子树为1,以根节点到叶子结点的路径作为每个叶......
  • CodeTON Round 8 (Div. 1 + Div. 2, Rated, Prizes!) D
    链接开始的时候看错题了。以为区间是可以我划分的,后面才发现是连着的区域是被强制合并的。导致我第一个写了给k短路。紫砂了。然后我的第二个思路是,从后往前和从前往后做两边dp,然后尝试枚举断点,看看有没有比最优稍微劣一点的解法。然后样例就是反例。正解是想到过的,但是因为......
  • 牛客周赛ROUND38
    E题链接:https://ac.nowcoder.com/acm/contest/78292/E来源:牛客网小苯非常喜欢等比数列。有一天他得到了一个长为\(n\)的数组\(a\),他想从里面选一些数字使得被选中的数字构成一个等比数列,请问他最多可以选择多少个数字呢输入包含两行。第一行一个正整数\(n\(1\leqn\leq......
  • codeforces div4 Double Strings
    #include<iostream>#include<algorithm>#include<cstring>#include<map>usingnamespacestd;intT,n;strings[900005];map<string,int>mm;//存放每一个字符串是否出现过intmain(){ cin>>T; while(T--){ mm.clear();//每次清空mm里面的数......
  • springBoot AOP 深入原理,及 @Before,@Around,@After,@AfterReturn,@AfterThrowing执行
    连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等。——可以理解为被aop拦截的类或者方法就是连接点。通知(Advice):通知定义了切面是什么以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。——可以理解为被......
  • [NSSRound#19 Basic]bestkasscn的超级简单密码
    题目:fromCrypto.Util.numberimport*importgmpy2fromfunctoolsimportreducefromsecretimportflagp=getPrime(1024)i=0whileTrue:r=p*5+iifisPrime(r):i=0breakelse:i+=1whileTrue:q=p*......
  • @Around(value =execution(* )) 的理解
    我们总是听到AOP,又称面向切面编程,那面向切面编程在日常开发中的应用场景有哪些呢?我们来一起梳理一下:什么时候会用到面向切面编程呢?其实就是有一些公共的逻辑,需要在很多地方用到,那这些代码如果在每个位置都写一下的话,当需要修改的时候,又必须将这些代码全都找出来进行修改,就会......