A@[G!C]%008
A@[G!C]%008
A Simple Calculator
细节题。
B Contiguous Repainting
最后只要有连续\(K\)个鸽子同色就可以构造方案,枚举+前缀和
C Tetromino Tiling
分析一波发现T,Z,S不可能出现,O可以直接加到最后面,剩下的拼法可以简化成JJ,II,LL,JIL,分类讨论一下。
D K-th K
直接贪心加
E Next or Nextnext
毒瘤神仙题
排列\(p\)会连成一些环,\(a\)是一个鸡环内向森林,考虑一个环怎么变化
变化的方式是每个点\(i\)可以将边\((i,p_i)\)变成\((i,p_{p_i})\),
如果\(a\)是一个环,那么就是每个点的出边都变了或者都没变
- 如果\(p\)是个奇环,那么\(a\)有两种方式(直接看题解的图)
- 如果\(p\)是个偶环,那么\(a\)也有两种方式,要么不变要么拆成两个环长相等的环(直接看题解的图)
那么这个可以dp求出环的情况数
- 如果\(a\)是个鸡环内向树,首先环上一个点最多接一条链,然后考虑相邻的两条链,如果满足一定大小关系就给答案×2(直接看题解)
https://agc008.contest.atcoder.jp/editorial
F Black Radius
这个题太仙了= =(yyb:然而我也不太会
部分分做法。。。现在所有点都可以是黑色
设\(f(x,d)\)为距离\(x\)不超过\(d\)的点集。这里钦定全集不计入答案,那么设\(max_i\)表示每个点的最远点距离,\(d_i<max_i\)
但是肯定会有记重,比如两个点\(x,y\),有\(f(x,d_x)=f(y,d_y)\)。容易证明如果有相邻的\(x,y\),\(f(x,d_x)=f(y,d_y)\)那么\(|d_x-d_y|=1\)(考虑一定存在一条边连接着一个被染黑和未染黑的点,走过去的步数差)
而且可能选了一个\(f(x,d_x)\)后,有一个连通块,在这个连通块里选一个\(y\)都能找到\(f(y,d_y)=f(x,d_x)\)(我也不知道为啥就是连通块)
而且连通块中一定可以找到唯一一个\(d\)最小的点,如果有两个,考虑一定存在一条边连接着一个被染黑和未染黑的点,讨论未染黑的点的位置,发现都不可能= =
于是就可以对每个\(f(x,d_x)\)相同的连通块,只在\(d\)最小的那个点记录,就可以不重不漏计数了。
具体的,记录\(f(x,d)\)时,如果有一个相邻的\(y\)满足\(f(x,d)=f(y,d-1)\),就不记录。
考虑对于\(x\),\(d\)要满足什么东西,首先\(d<max_x\),然后如果\(x\)设为树根,不存在儿子\(y\)满足不记录的条件。
首先\(y\)子树内的,\(f(x,d)\)该记到的\(f(y,d-1)\)都能记到,这个是一样的。其他子树中,因为从\(y\)出发过去会少记两层,所以其他子树中只要有一个满足\(f(y,d-1)\)没记完整个子树,这个\(y\)就不行。如果对\(x\)选尽量能淘汰\(x\)的\(y\)肯定选最长的链,设\(sec_i\)表示每个点设为根,所有儿子中\(max_{son}\)的次大值+1。要满足的是\(d<sec_x+2\)(再大就占满所有其他子树了)
然后一次换根dp就做完了部分分= =
考虑\(d\)的下界,如果一个点不能被染黑,它能计算的\(d\)下界是啥。
还是\(x\)作为根,只要\(d\)染黑了一整个儿子的子树,而且这个儿子中有能染黑的点就可以。
然而我也不太懂(抄题解)
https://agc008.contest.atcoder.jp/submissions/me?task_screen_name=&language_screen_name=&status=AC
A@[G!C]%008的更多相关文章
- Storyboards Tutorial 03
这一节主要介绍segues,static table view cells 和 Add Player screen 以及 a game picker screen. Introducing Segue ...
- 文件图标SVG
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink ...
- [转]Linux下g++编译与使用静态库(.a)和动态库(.os) (+修正与解释)
在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库 ...
- CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update.... yum install 或者 添加y ...
- Linux deepin 下sublimes配置g++ openGL
参考 :http://blog.csdn.net/u010129448/article/details/47754623 ubuntu 下gnome只要将代码中deepin-terminal改为gno ...
- [翻译svg教程]svg 中的g元素
svg 中的<g>元素用来组织svg元素.如果一组svg元素被g元素包裹了,你可以通过对g元素进行变换(transform),被g元素包裹的元素也将被变换,就好这些被svg包裹的元素是一个 ...
- 软件工程:黄金G点小游戏1.0
我们要做的是黄金G点小游戏: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...
- 2016huasacm暑假集训训练五 G - 湫湫系列故事——减肥记I
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/G 这是一个01背包的模板题 AC代码: #include<stdio.h&g ...
- 毫秒级的时间处理上G的图片(生成缩略图)
测试环境: 测试图片(30M): 测试计时方法: Stopwatch sw1 = new Stopwatch(); sw1.Start(); //TODO...... sw1.Stop(); stri ...
随机推荐
- 用Python程序温度转换实例
实例:温度转换 (1)分析问题:利用程序进行温度转换,由用户输入温度值,程序给出输出结果:通过语音识别,图像识别等方法自动监听并获得温度信息发布渠道(如收音机.电视机)给出的温度播报源数据,再由程序装 ...
- InheritableThreadLocal详解
InheritableThreadLocal详解 https://www.jianshu.com/p/94ba4a918ff5 InheritableThreadLocal——父线程传递本地变 ...
- [转]Python实现字符串反转的几种方法
#第一种:使用字符串切片 result = s[::-1] #第二种:使用列表的reverse方法 l = list(s) l.reverse() result = "".join ...
- bytearray与矩阵转换对应关系
import numpy as npimport osa=bytearray(os.urandom(27))# for i in range(21):# print(a[i])a=np.array(a ...
- 树莓派Raspbian系统密码
树莓派Raspbian系统密码 树莓派Raspbian系统默认登录用户名为pi,该账户默认密码是raspberry(可在raspi-config中修改). 树莓派的Raspbian系统root用户默认 ...
- 单词canutillos祖母绿canutillos英语
祖母绿(canutillos)被称为绿宝石之王,与鲜红色的乌兰孖努同样稀有,国际珠宝界公认的四大名贵宝石之一(红蓝绿宝石以及钻石).因其特有的绿色和独特的魅力,以及神奇的传说,深受西方人的青睐. 祖母 ...
- 英语fraunce法兰西
fraunce 外文词汇,中文翻译为代指法兰西(地名) 中文名:法兰西 外文名:fraunce 目录 释义 Fraunce 读音:英 [frɑ:ns] 美 [fræns] Noun(名词) 1. ...
- 你遇到过哪些原因造成MySQL异步复制延迟?
master上多为并发事务,salve上则多为单线程回放(MySQL 5.7起,支持真正的并行回放,有所缓解) 异步复制,本来就是有一定延迟的(否则也不叫做异步了,介意的话可以改成半同步复制) sla ...
- 初探PHP设计模式
设计模式不是一套具体的语言框架,是行之有效的编码规范,是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结.使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性.合理 ...
- [SourceInsight].source insight 使用技巧
转自:https://www.veryarm.com/140428.html 1 开胃菜-初级应用 1.1 选择美丽的界面享受工作 虽然不能以貌取人,但似乎从来没有人责备以貌取软件的.SI的华丽界 ...