A|G\C003
AGC003
A Wanna go back home
= =
https://agc003.contest.atcoder.jp/submissions/7910739
B Simplified mahjong
直接腾讯。
https://agc003.contest.atcoder.jp/submissions/7910863
C BBuBBBlesort!
考虑将\(a\)分成\(L=a[::2]\)和\(R=a[1::2]\),这两个序列可以不消耗代价随意打乱,或者可以交换\(L_i\)和\(R_i\)
所以如果从两个序列中分别拿出一个元素交换代价是\(1\)
计算有多少起始序列!=目标序列的数,答案就是\(\lfloor cnt/2\rfloor\)
https://agc003.contest.atcoder.jp/submissions/7910962
D Anticube
对每个数\(x=\Pi p_i^{e_i}\),将其变成最简形式\(\Pi p_i^{E_i=e_i\mod 3}\)不影响答案
然后一个数\(x=\Pi p_i^{E_i}\)对应的满足\(xy\)是完全立方数的\(y\)只有一个,那就是\(\Pi p_i^{-E_i\mod 3}\)
对每个数计算一下出现了几次,如果它和另一个数互斥,则删掉数量较小的那一堆
(特判一下,如果有一堆化简后是\(1\)就代表都是完全平方数,会和自己互斥,这一对只能随便选\(1\)个)
E Sequential operations on Sequence
毒瘤
对于缩小操作,那么前面一些操作会没用,先用一个单调栈去除掉无用操作,这样\(q\)就单调递增了
从后往前考虑,每次拿出最后一个操作,计算它对答案的贡献
\(q_i\)会从\(q_{i-1}\)循环复制过来,就会被分成很多个\(q_{i-1}\)和一段前缀
维护一个\(mul_i\),这差不多是一个标记,表示最后的序列会加上\(mul_i\cdot A[1,q_i]\)
(最后序列加上\(k\cdot A[1,r]\)的意思是会再出现\(k\)个和\(A[1,r]\)一样的数
具体要实现这样一个函数:\(work(p,M)\),表示最后序列加上\(M\cdot A[1,p]\)
如果\(p\leq q_1\)(\(q_1\)一定不大于\(n\))那么\(ans_1\)到\(ans_p\)要加上\(M\);
否则和前面一样的,找到第一个可行的操作,然后递归下去
具体看代码= =
https://agc003.contest.atcoder.jp/submissions/7917606
F Fraction of Fractal
神题Orz
首先特判掉一些情况:
- 上下连通(上下拼起来仍连通)且左右连通,那么最后一定依然连通,输出1
- 上下,左右都不连通,那么最后每次分形都不会有连通块接在一起,答案是\(cnt_1^{K-1}\)
现在只有一种情况:左右连通(上下的话翻过来
1e18显然要矩乘dp,设\(f_{i,0}\)表示\(i\)层分形图的连通块数,\(f_{i,1}\)表示((在当前图形最左有东西)和(如果左右拼这个图形,该连通块会和更左边一个连通块拼接(这个连通块可能是自己也可能是原来最右边的连通块)))的\(x\)连通块数
现在是转移,
\(f_{i,1}=f_{i-1,1}\times c\),\(c\)为在初始图形最左和最右都有东西的\(x\)坐标数
\(f_{i,0}=f_{i-1,0}\times cnt_1-f_{i-1,1}\times a\),\(a\)为初始图形左右相邻两个坐标都是1的方案数
就可以矩乘了
https://agc003.contest.atcoder.jp/submissions/7919234
A|G\C003的更多相关文章
- 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 ...
随机推荐
- css z-index 的学习
前言:这是笔者第一次写博客,主要是学习之后自己的理解.如果有错误或者疑问的地方,请大家指正,我会持续更新! z-index属性描述元素的堆叠顺序(层级),意思是 A 元素可以覆盖 B 元素,但是 B ...
- Java 8 ArrayList 详解
GitHub Page: http://blog.cloudli.top/posts/Java-ArrayList/ ArrayList 继承于 AbstractList ,实现了 List.Rand ...
- Prometheus监控学习笔记之Grafana用户权限分组
Grafana有账户分权和管理功能,不过和一般的账户分权管理操作不一样.Grafana通过admin账户建立organization,在不通的org内配置数据源和用户,用户隶属于不通的org,只能看到 ...
- Bootstrap-treeView 实际操作总结
由于功能性需求:需要展示一个树状结构的导航界面 1.进行资源引用 <!-- Required Stylesheets --> <link href="bootstrap.c ...
- flyway.setBaselineOnMigrate(true);
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayWrappe ...
- only size-1 arrays can be converted to Python scalars
python版本:3.6.5 opencv版本:3.2.0 使用的jupyter notebook 源码如下: import cv2 import numpy as np import matplot ...
- ex_gcd求不定方程的最小正整数解
#include<bits/stdc++.h> using namespace std; int gcd(int a,int b) {return b?gcd(b,a%b):a;} int ...
- 【JVM】CMS垃圾回收器
一.简介 Concurrent Mark Sweep,是一种以获取最短回收停顿时间为目标的收集器,尤其重视服务的响应速度. CMS是老年代垃圾回收器,基于标记-清除算法实现.新生代默认使用ParNew ...
- 使用DES算法实现加密解密
使用DES算法实现加密解密 我们常见的加密算法有DES.MD5.IDEA.AES等等,这篇随笔介绍使用DES算法实现加密解密 首先介绍一下DES算法: DES算法为密码体制中的对称密码体制,又被称为美 ...
- underscore_1: map()
map()是underscore.js中一个处理数组和对象的方法. params: 1. array || obj 2. callback 3. content 上下文指向 使用: var obj = ...