CF1146 Forethought Future Cup Elimination Round Tutorial


叮,守夜冠军卡

https://codeforces.com/blog/entry/66639

B

有一个串\(s\),生成了一个新串\(t=s+s'\),\(s'\)是\(s\)去掉所有'a'之后的串,给出\(t\),求\(s\)

如果只看不是'a'的数量也只有最多一个位置满足条件,直接判一下这个位置即可。

https://codeforces.com/contest/1146/submission/53060920

C

有一棵n个点的树(\(n\leq 100\)),你可以进行不超过9次询问,每一次询问你给出两个非空且不交的集合\(x,y\),返回\(\max_{a\in x,b\in y}dist(a,b)\)。求树的直径

考虑\(query(S)=\max_{a,b\in S}dist(a,b)\),答案就是\(query(\{1,2,...,n\})\)。

\(query(S)\)可以先将\(S\)分成两个集合\(A,B\),询问\(A,B\),再分别处理\(query(A)\)和\(query(B)\),\(query(S)\)就是这些的最大值。如果A,B尽量平均分配,那么只需要\(\log n\)次就可以将\(S\)分的只剩一个点。但是这样好像还是\(O(n)\)的,然后又发现可以分别处理\(query(A)\)和\(query(B)\)的时候,将\(A\)分成\(A_1,A_2\),\(B\)分成\(B_1,B_2\),那么询问可以合在一起询问。每一层都合在一起询问就只需要\(\log n\)了(所以\(n\)还能出大一点?)

https://codeforces.com/contest/1146/submission/53065055

D

长者在数轴的\(0\)位置。长者有两个正整数\(a,b\),如果当前长者在位置\(k\),长者可以用simple的力量将自己传送到\(k+a\)或者\(k-b\)位置。

但是长者感觉这样很无聊所以打算将自己限制在一段区间里。\(f(x)\)表示长者只能在\([0,x]\)区间里移动,从\(0\)开始能到达的整点数量。长者想求\(\sum_{i=0}^mf(i)\)。

\(m\leq 10^9,a,b\leq 10^5\)

比赛不知道抽啥风想不出来。。。。可能是守夜自带debuff??

写了个比较好理解的做法

显然法证明\(x\)较大(具体是\(x\geq a+b\))时\(f(x+a)=f(x)+\frac{a}{\gcd(a,b)}\)

设\(p_i\)表示最小的\(r\)使得\(0\)只经过\([0,r]\)能到达\(i\)(如果永远不能则为\(\infty\))

可以用一个最短路求出\(p_i\)

那么\(\sum_{i\leq x}f(i)=\sum_{j=0}^i\max(0,x-p_j+1)\)

这样可以\(O(a+b)\)直接计算出前面的一段\(f\)(看代码)

\(\geq a+b\)的部分,可以用上面的式子算

对每一个\(i\mod a\),\(f\)就是一段等差数列,直接套公式算即可。

注意最短路算\(f\)要算到\(2a+b\)

https://codeforces.com/contest/1146/submission/53115782

E

有一个数列,每次操作给定x和不等号,将\(>x\)或\(<x\)的所有数乘-1,求最后数列。所有数的绝对值\(\leq 100000\)

显然只要对每个数算最后情况就行了。好像不是很好算,发现对于每个数\(x>0\),\(x\)与\(-x\)最后只会有4中情况:都不变,都变成相反数,都变成\(-x\),都变成\(x\)。

只要用线段树维护这个东西,分类讨论一下就好了。

线段树维护两个标记:区间赋值(都变成\(-x\),都变成\(x\)),区间取反(都不变,都变成相反数),计算答案时如果有区间赋值标记则优先,否则用区间取反标记。

https://codeforces.com/contest/1146/submission/53072116

F

有一个\(1\)为根的有根树,设\(L\)是一个叶子节点的集合,\(f(L)\)就是这些集合的最小联通子图。

你要给叶子分成若干个集合,使得任意\(f(x)\)和\(f(y)\)(\(x,y\)都是你分出来的集合),\(f(x)\cap f(y)=\emptyset\)。求方案数。

定义\(x,y\)相连表示,最终存在一个\(f(L)\)使得\(x,y\in f(L)\)。

设\(f[x][0]\)表示\(x\)最终不与父亲相连的方案数,\(f[x][1]\)表示\(x\)最终与父亲相连的方案数。

然后还要将\(x\)与一些儿子合并。

如果合并了\(0\)个儿子,那么\(x\)最终不在任何一个集合,当然不能和父亲相连;

如果合并了\(1\)个儿子,那么一定在其他子树还有相同集合的,也就是必须和父亲相连;

如果合并了\(\geq 2\)个儿子,可以任意决定是否与父亲相连。

直接dp就好了。

https://codeforces.com/contest/1146/submission/53121149

G

竟然又是一道sb套路一眼秒的网络流,给出题人好评!

某沙雕要修\(n\)栋房子,每栋房子高度可以是\(0\)到\(h\),如果高度是\(a\)获得\(a^2\)的收益。还有\(m\)个限制,如果\(l\)到\(r\)有任意一栋房子高度大于\(x\)则要付出\(c\)的代价。

所有数\(\in [0,50]\)

显然裸的最小割,会做切糕的都会这个题。还有一道差不多的:cf434d

https://codeforces.com/contest/1146/submission/53073780

H

平面上有\(n\)个点,求构成的五角星数量。任意三点不共线。

五角星可以不是正五角星,只要对应的交叉点存在就可以计算。

这题应该不会改(鱼的恐惧)

upd:改了改了,真香

这题比鱼不知水到哪里去了

五角星可以转化成5个点的凸包,就是5条极角序线段上升的线段。

设\(f[i][j][k]\)表示从\(i\)开始到\(j\)的一个线段路径共有\(k+1\)条边,那么每次按照极角序新加进来一个线段\(x\rightarrow y\),转移是\(f[x][y][0]=1,f[S][y][k]+=f[S][x][k-1]\)

https://codeforces.com/contest/1146/submission/53116991

CF1146 Forethought Future Cup Elimination Round Tutorial的更多相关文章

  1. 【CF1146】Forethought Future Cup - Elimination Round

    Forethought Future Cup - Elimination Round 窝也不知道这是个啥比赛QwQ A. Love "A" 给你一个串,你可以删去若干个元素,使得最 ...

  2. Forethought Future Cup - Elimination Round

    A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long char getc(){char c=get ...

  3. Forethought Future Cup - Elimination Round D 贡献 + 推公式 + 最短路 + 贪心

    https://codeforces.com/contest/1146/problem/D 题意 有一只青蛙,一开始在0位置上,每次可以向前跳a,或者向后跳b,定义\(f(x)\)为青蛙在不跳出区间[ ...

  4. Forethought Future Cup - Elimination Round C 二分 + 交互(求树的直径)

    https://codeforces.com/contest/1146/problem/C 题意 一颗大小为n的树,每次可以询问两个集合,返回两个集合中的点的最大距离,9次询问之内得出树的直径 题解 ...

  5. Codeforces Forethought Future Cup Elimination Round 选做

    1146C Tree Diameter 题意 交互题.有一棵 \(n(n\le 100)\) 个点的树,你可以进行不超过 \(9\) 次询问,每次询问两个点集中两个不在同一点集的点的最大距离.求树的直 ...

  6. Codeforces Round #557 Div. 1 based on Forethought Future Cup - Final Round

    A:开场就读错题.读对了之后也没啥好说的. #include<bits/stdc++.h> using namespace std; #define ll long long #defin ...

  7. Forethought Future Cup - Final Round (Onsite Finalists Only) C. Thanos Nim 题解(博弈+思维)

    题目链接 题目大意 给你n堆石子(n为偶数),两个人玩游戏,每次选取n/2堆不为0的石子,然后从这n/2堆石子中丢掉一些石子(每一堆丢弃的石子数量可以不一样,但不能为0),若这次操作中没有n/2堆不为 ...

  8. Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3)(A.B.C,3道暴力题,C可二分求解)

    A. Is it rated? time limit per test:2 seconds memory limit per test:256 megabytes input:standard inp ...

  9. Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) A B C D 水 模拟 二分 贪心

    A. Is it rated? time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

随机推荐

  1. (网页)JQuery 对 Select option 的操作(转)

    转自博客园: <select id="selectID" > <option value="1">1</option> &l ...

  2. Spark程序数据结构优化

    场景: 1.scala中的对象:对象头是16个字节(包含指向对象的指针等源数据信息),如果对象中只有一个int的属性,则会占用20个字节,也就是说对象的源数据占用了大部分的空间,所以在封装数据的时候尽 ...

  3. K邻近分类算法

    # -*- coding: utf-8 -*- """ Created on Thu Jun 28 17:16:19 2018 @author: zhen "& ...

  4. c#所有部门及其下所部门生成树形图(递归算法获取或键值对方式获取)

    部门数据库的设计: 代码: /// <summary> /// 获取部门(入口) /// </summary> /// <returns></returns& ...

  5. 洗礼灵魂,修炼python(54)--爬虫篇—urllib2模块

    urllib2 1.简介 urllib2模块定义的函数和类用来获取URL(主要是HTTP的),他提供一些复杂的接口用于处理: 基本认证,重定向,Cookies等.urllib2和urllib差不多,不 ...

  6. 【Java学习系列】第4课--Java Web相关

    本文地址 分享提纲: 1.概述 2. Jsp基础 2.1 1.概述 1.1)[来源和先导] 本文主要的java web的教程来源JSP是 菜鸟教程JSP 和 天码营Java Web.     主要的先 ...

  7. box-shadow的动效制作

    突然发现原来box-shadow的功能很强大,还能做动效,下面整理下box-shadow几个效果 案例1:hover效果 <a href="/app/list">WEB ...

  8. Sublime Text的使用

    本文目录 1.下载安装Sublime Text 2.配置Python IDE环境 3.sublime anaconda载入出现错误 4.Sublime Text快捷键 1.下载安装Sublime Te ...

  9. 习题 6 字符串(string)和文本

    虽然你已经在程序中写过字符串了,你还没学过它们的用处.在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途.首先我们解释一下字符串是什么 东西. 字符串通常是指你想要展示给别人 ...

  10. MYSQL中的int(11)到底代表什么意思?

    对于int类型的一些基础知识其实上图已经说的很明白了,在这里想讨论下常用的int(11)代表什么意思,很长时间以来我都以为这代表着限制int的长度为11位,直到有天看到篇文章才明白,11代表的并不是长 ...