@atcoder - AGC008E@ Next or Nextnext】的更多相关文章

目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个长度为 N 的序列 a,问有多少排列 p,满足对于每一个 i,都有 \(a_i = p_i\) 或 \(a_i = p_{p_i}\) 成立. 原题传送门. @solution@ 为了更直观地理解问题,不妨建个图:连有向边 \(i -> p_i\). 对于任意序列 a,这样建出的图是一个基环树森林:对于排列 p,这样建出的图是若干个环. 当 \(a_i…
题面 传送门 思路 p到a 首先,本题中如果对于所有的$i$,连边$<i,p_i>$,那么可以得到一批环 那么这个题另外一点就是,可以变成连边$<i,p_{p_i}>$ 我们分多种情况来讨论 情况1:啥也没变 就是啥也没变 情况2:全都变了 这时考虑奇环和偶环 对于一个奇环,全部变了以后,它还是一个环,但是不是同构的 对于一个偶环,全换了以后,它会变成两个环,分别是全部奇数节点和全部偶数节点 情况3:变了一部分 此时容易发现,变出去的部分应该会这样: $<i,p_i>$…
神仙题. 排列计数,一种常见的做法是 \(i\) 向 \(p_i\) 连边. 然而这里这个就逼迫我们只能从 \(i\) 向 \(a_i\) 连边. 不过没关系,考虑从 \(i\) 向 \(p_i\) 连边的图(为方便叫 \(G_1\))和从 \(i\) 向 \(a_i\) 连边的图(为方便叫 \(G_2\))的区别. 首先 \(G_1\) 中每个点入度和出度都是 \(1\),所以是一堆环构成的. 考虑一个环:(下面建议画图,懒的建议看 litble 学姐的博客,自己不敢直接把图拿过来) 如果上面…
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和\(A_{i+1}\)之间只会有一个括号:有多个括号的话只保留最外边那个,答案不变. 然后就可以定义状态:\(dp_{i,j}\)表示前\(i\)个数,还有\(j\)个未闭合的左括号,得到的最大答案. 由于只有减号右边有括号,所以只要知道左边有几个未闭合的左括号,就可以知道自己的贡献是\(1\)还是…
今天太晚了...题解到时候补吧(flag立好) 成绩:100+0+0=100 感觉A题本质暴力贪心?C题一道水题我居然没做...亏爆 A:[agc011e]increasing numbers B:[agc008e]next or nextnext(gu) C:[BZOJ1014][JSOI2008]火星人prefix…
Atcoder 题面传送门 & 洛谷题面传送门 震惊,我竟然能独立切掉 AGC E 难度的思维题! hb:nb tea 一道 感觉此题就是找性质,找性质,再找性质( 首先看到排列有关的问题,我们可以很自然地将排列拆成一个个置换环,即我们建一张图 \(G\),对于 \(i\in[1,n]\) 连边 \(i\to p_i\),那么题目的要求就可以转化为:对于每个点 \(i\),它置换环上下一步或者下下步为 \(a_i\). 做出这个简单的转化后,就可以发现一个非常 trivial 的性质: Obse…
传送门 考虑转化成图论问题,\(i\) 向 \(p_i\) 连边,那么合法方案一定是形成了若干个简单环或自环 考虑一个环内的情况: 如果 \(a_i=p_i\),那么 \(i\) 向 \(a_i\) 连边的图和原图相比不变 如果 \(a_i=p_{p_i}\), a. 环长为奇数且 \(>1\),那么 \(i\) 向 \(a_i\) 连边的图仍然是一个环(不同) b. 环长为偶数,那么 \(i\) 向 \(a_i\) 连边的图变成两个长度一样的环 c. 环长为 \(1\),那么 \(i\) 向…
AtCoder Grand Contest 008 A - Simple Calculator 翻译 有一个计算器,上面有一个显示按钮和两个其他的按钮.初始时,计算器上显示的数字是\(x\),现在想把这个数字给变成\(y\).两个按钮的作用分别是让这个数加一和把这个数取反.问最少的按按钮的次数. 题解 神仙特判题,想清楚再写. #include<iostream> using namespace std; int x,y,ans=2147483647; int main() { cin>…
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有方案的数字和. 思路 \(2^{|S|-1}\)枚举加号的放置状态 代码 Many Formulas D.Snuke's Coloring 题意 在一个\(H \times W(3 \le H,W \le 10^9)\)的棋盘上,有\(N(N \le 10^5)\)个格子被染成黑色,其余格子为白色.…
链接:http://agc001.contest.atcoder.jp/tasks/agc001_c 题解(官方): We use the following well-known fact about trees.Let T be a tree, and let D be the diameter of the tree. • If D is even, there exists an vertex v of T such that for each vertex w inT, the dis…
我都出了F了……结果并没有出E……atcoder让我差4分上橙是啥意思啊…… C - Together 题意:把每个数加1或减1或不变求最大众数. #include<cstdio> #include<algorithm> using namespace std; int read_p,read_ca; inline int read(){ read_p=;read_ca=getchar(); ') read_ca=getchar(); +read_ca-,read_ca=getch…
D - Menagerie Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement Snuke, who loves animals, built a zoo. There are N animals in this zoo. They are conveniently numbered 1 through N, and arranged in a circle. The animal numbe…
在湖蓝跟衡水大佬们打的第二场atcoder,不知不觉一星期都过去了. 任意门 C - Reconciled? 题意:n只猫,m只狗排队,猫与猫之间,狗与狗之间是不同的,同种动物不能相邻排,问有多少种方案. #include<cstdio> #include<algorithm> using namespace std; ; ; int main(){ scanf("%d%d",&n,&m); if (n<m) swap(n,m); ) ;…
在雅礼和衡水的dalao们打了一场atcoder 然而窝好菜啊…… A - Shrinking 题意:定义一次操作为将长度为n的字符串变成长度n-1的字符串,且变化后第i个字母为变化前第i 或 i+1 个字母,求使整个字符串为同一字母的最少变换次数. 题解:求同一字母的最大间距(包括首尾)的最小值即可. #include<cstdio> #include<algorithm> #define MN 1111 using namespace std; int mmh=1e9; cha…
A - K-City Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement In K-city, there are n streets running east-west, and m streets running north-south. Each street running east-west and each street running north-south cross each…
https://beta.atcoder.jp/contests/abc075/tasks/abc075_d 题意: 给出坐标平面上n个点的坐标,要求找到一个面积最小的矩形使得这个矩形的边界加上内部的点的数量大于等于k. 思路: 由于坐标过大,所以离散化. 离散化之后用前缀和,但是Orz求前缀和的时候写错了. 枚举左下角和右上角的坐标,分别为(i,j)和(s,e). 那么点的数量为sum[s][e] - sum[s][j-1] - sum[i-1][q] + sum[i-1][j-1],切记,切…
D - joisino's travel Time Limit: 2 sec / Memory Limit: 256 MB Score : 400400 points Problem Statement There are NN towns in the State of Atcoder, connected by MM bidirectional roads. The ii-th road connects Town AiAi and BiBi and has a length of CiCi…
题目链接:https://abc042.contest.atcoder.jp/tasks/arc058_b 题目大意: 给定一个 H * W 的矩阵,其中左下角 A * B 区域是禁区,要求在不踏入禁区的前提下,从左上角走到右下角一共有多少种走法? 分析: 设 D 为往下,R为往左. 这里举个 H = 10,W = 7,A = 3,B = 4的例子: 首先不管怎么走,路线都是要跨越蓝色边界线的,这里我们只讨论从 A 跨越到 B 的情况,其余情况同理. 在这种情况下,总的路数就是所有从 S 走到…
第一次套刷AtCoder 体验良好 传送门 Poisonous Cookies cout<<b+min(c,a+b+); Tree Burning 难度跨度有点大啊 可以证明当第一次转向之后,接下来每次的方向都和前一次相反 因为转向后再往相同方向走一定不如初始就往该方向走然后转两次向 枚举初始往哪个方向走以及走几步,前缀和优化即可 #include<ctime> #include<cmath> #include<cstdio> #include<cst…
模拟,做了ABC三题. D难一些,就不会了. 中规中矩的吧... Atcoder DPCV B 题意:给一个序列,求出所有的子串和中AND值最大的k个数的AND. 思路:既然要求AND,那么肯定按位考虑. 从最高位往低位枚举,看所有的包含这一位的数,如果这些数的个数小于K,那么不能取. 否则把原来的数集合改成现在的数集合. Atcoder DPCV C 题意:给一个字符串,求长度小于等于\(K_i\)的DMC子序列的个数. 思路:首先把询问离线. 然后从左往右枚举D的位置. 那么对于第\(i\)…
AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大值定义为三个人中第二强的人的强大值.求\(n\)组最大的强大值之和. 题解 这...不是倒着选两个人,正着选一个人构成一组就好了嘛.. #include<iostream> #include<cstdio> #include<algorithm> using namespa…
打的第一场Atcoder,已经知道会被虐得很惨,但没有想到竟然只做出一题-- 思维急需提升. A - Limited Insertion 这题还是很签到的. 感觉正着做不好做,我们反着来,把加数变为删数. 显然每次有多个可以删时要删最后一个可删的,这样前面仍然合法,后面也有可能有更多合法情况. 发现不能删时就puts("-1"). #include<bits/stdc++.h> namespace my_std{ using namespace std; #define r…
模的是这位神犇的代码:Atcoder AGC012F : Prefix Median 题意: 在动态中位数那道题上做了一些改动.给你一个序列a,可以将a重新任意排序,然后对于a序列构造出b序列. 假设a序列有2*n-1个元素,b序列有n个元素. 其中b[i]=Median(a[1],a[2],a[3]...a[2i-1]).求能够构造出多少个不同的b序列. 数据范围: 1<=N<=50,1<=ai<=2N-1 思路: 这道题真的是究极神题...虽然说代码实现比较简单,但是分析的过程…
C - Candies 链接:https://arc090.contest.atcoder.jp/tasks/arc090_a 题意:从左上角走到右下角,只能向右和向下走,问能最多能拿多少糖果. 思路:dp[i][j]=max(dp[i-1][j],dp[i][j-1])+dp[i][j]; 代码: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> us…
题意:n个点,n-1条边,组成一个无向的联通图,然后给出q和k,q次询问,每次给出两个点,问这两个点之间的最短距离但必须经过k点. 思路:我当时是用优化的Dijkstra写的(当天刚学的),求出k点到各点的最短距离,跑了160+ms,其实用搜索写更快,组里的几个大佬都用搜索写的,我在搜索这方面还是比较弱的.还要多练练.然后今天早上用搜索写了一下,跑了60+ms,并且内存用的也很小. 题目链接:http://abc070.contest.atcoder.jp/tasks/abc070_d Dijk…
Atcoder hbpc C 题意:给n个循环小数或者有限小数,问其中有多少个互不相同的. 思路:我的思路比较繁琐. 首先我们考虑分数化小数:假设原来的数是\(a.b(c)\),那么这个分数就是\(a+\frac{b}{10^{len_b}}+\frac{c}{10^{len_b}\times (10^{len_c}-1)}\). 所以用4哈希判一下两个是否相同,需要注意我们的哈希模数必须都要取质数,因为需要取\(10^{\dots}\).\(10^{\dots}-1\)的逆元. 这里我取的是\…
D - We Like AGC Time Limit: 2 sec / Memory Limit: 1024 MB Score : 400400 points Problem Statement You are given an integer NN. Find the number of strings of length NN that satisfy the following conditions, modulo 109+7109+7: The string does not conta…
E - Knapsack 2 Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement There are NN items, numbered 1,2,…,N1,2,…,N. For each ii (1≤i≤N1≤i≤N), Item ii has a weight of wiwi and a value of vivi. Taro has decided to choose some…
题目链接:https://atcoder.jp/contests/abc121/tasks/abc121_d 题目很裸(Atcoder好像都比较裸 就给一个区间求异或和 n到1e12 肯定不能O(n)推 那肯定得通过异或的一些性质 用$f\left( a,b\right)$表示[a,b]区间的异或和 我只观察出了$f\left( 2^{a},2^{b}-1\right)$的异或和肯定为0. 通过$f\left( 2^{a},2^{a+1}-1\right)$每一位都会出现偶数次 例如 [4,8)…
题目链接:https://atcoder.jp/contests/abc120/tasks/abc120_d 题意 先给m条边,然后按顺序慢慢删掉边,求每一次删掉之后有多少对(i,j)不连通(我应该解释对了吧) 删边这个过程就可以从反方向进行,相当于从m到1慢慢加边 然后就把连通的用并查集存起来,另用一个s数组来存每个点和他连通的有几个点 不连通的就减去s[i]*s[j]就好了 初始的是C(n,2) 没边的时候所有点都不连通嘛. 代码如下 #include <cstdio> #include…