AtCoder
文章平均质量分 77
无
旺 崽
这个作者很懒,什么都没留下…
展开
-
AtCoder Beginner Contest 203(Sponsored by Panasonic)D.Pond
题目链接Problem StatementThe land of a park AtCoder is an N×NN×NN×N grid with east-west rows and north-south columns. The height of the square at the i-th row from the north and j-th column from the west is given as Ai,jA_{i,j}Ai,j.Takahashi, the manager,原创 2021-06-01 19:43:00 · 6561 阅读 · 0 评论 -
AISing Programming Contest 2021(AtCoder Beginner Contest 202)D.aab aba baa
题目链接Problem StatementAmong the strings of length A+B containing A occurrences of a and B occurrences of b, find the string that comes K-th in the lexicographical order.Sample Input 12 2 4Sample Output 1baabSample Input 230 30 118264581564861424原创 2021-05-23 19:55:27 · 2124 阅读 · 0 评论 -
AISing Programming Contest 2021(AtCoder Beginner Contest 202)E.Count Descendants
题目链接Problem StatementWe have a rooted tree with NNN vertices, numbered 1,2,…,N1,2,…,N1,2,…,N.Vertex 1 is the root, and the parent of Vertex i(2≤i≤N)i(2≤i≤N)i(2≤i≤N) is Vertex PiP_iPi.You are given QQQ queries. In the iii-th query (1≤i≤Q)(1≤i≤Q)(1≤i≤Q)原创 2021-05-23 19:45:27 · 2067 阅读 · 0 评论 -
ZONe Energy Programming Contest C.MAD TEAM
题目链接思维+二分如果暴力选三个,复杂度为 C30003C_{3000}^3C30003,显然不可取,可以二分答案 ansansans,这样可以把每个属性值更新成 000 或 111 (判断 ansansans 和属性值大小)而言,这样五个属性值的情况最多为 25=322^5=3225=32,再从中暴力选即可,AC代码如下:#include <bits/stdc++.h>using namespace std;typedef long long ll;int n, flag原创 2021-05-09 16:25:59 · 18092 阅读 · 4 评论 -
AtCoder Beginner Contest 197(Sponsored by Panasonic)D.Opposite
题目链接Problem StatementOn a two-dimensional coordinate plane where the x axis points to the right and the y axis points up, we have a regularN-gon with N vertices p0,p1,p2,…,pN−1p_0,p_1,p_2,…,p_{N−1}p0,p1,p2,…,pN−1.Here, N is guaranteed to be even, a原创 2021-03-29 21:35:54 · 2007 阅读 · 0 评论 -
AtCoder Beginner Contest 196 E.Filters
题目链接Problem StatementGiven are integer sequences A=(a1,a2,…,aN)A=(a_1,a_2,…,a_N)A=(a1,a2,…,aN), T=(t_1,t_2,…,t_N), and X=(x1,x2,…,xQ)X=(x_1,x_2,…,x_Q)X=(x1,x2,…,xQ).Let us define NNN functions f1(x),f2(x),…,fN(x)f_1(x),f_2(x),…,f_N(x)f1(x),f2(x)原创 2021-03-26 19:11:56 · 2002 阅读 · 0 评论 -
AtCoder Beginner Contest 196 D.Hanjo
题目链接Problem StatementWe have a rectangular room that is H meters long and W meters wide.We will cover this room with A indistinguishable 2 meters × 1 meters rectangular tatami mats and B indistinguishable 1 meter × 1 meter square tatami mats. The rect原创 2021-03-24 19:27:59 · 1930 阅读 · 0 评论 -
Caddi Programming Contest 2021(AtCoder Beginner Contest 193) F.Zebraness
Caddi Programming Contest 2021(AtCoder Beginner Contest 193) F.Zebraness题目链接Problem StatementWe have a grid with N horizontal rows and N vertical columns.Let (i,j) denote the square at the i-th row from the top and j-th column from the left. A characte原创 2021-03-05 16:19:24 · 1925 阅读 · 0 评论 -
AtCoder Beginner Contest 192 F.Potion
动态规划,背包DP~首先我们可以暴力选取材料的种类 ccc,c∈[1,n]c\in[1,n]c∈[1,n],用 dp[i][j][k] 表示前 i 个数里选 j 个数且模数为 k 的最大值 sum,且 k=sum%c,则有如下的状态转移方程:dp[i][j][k]=max(dp[i−1][j][k],dp[i−1][j−1][(k−a[i]%t+t)dp[i][j][k] = max(dp[i - 1][j][k], dp[i - 1][j - 1][(k - a[i] \% t + t) % t] +原创 2021-03-01 19:54:34 · 1864 阅读 · 0 评论 -
Caddi Programming Contest 2021(AtCoder Beginner Contest 193) E.Oversleeping
Caddi Programming Contest 2021(AtCoder Beginner Contest 193) E.Oversleeping题目链接Problem StatementA train goes back and forth between Town A and Town B. It departs Town A at time 0 and then repeats the following:goes to Town B, taking X seconds;stops a原创 2021-03-01 16:08:04 · 1904 阅读 · 0 评论 -
AtCoder Beginner Contest 192 D.Base n
AtCoder Beginner Contest 192 D.Base nProblem StatementGiven are a string X consisting of 0 through 9, and an integer M.Let d be the greatest digit in X.How many different integers not greater than M can be obtained by choosing an integer n not less tha原创 2021-02-24 09:50:40 · 1775 阅读 · 0 评论 -
AtCoder Beginner Contest 192 E.Train
AtCoder Beginner Contest 192 E.Train题目链接Problem StatementIn the Republic of AtCoder, there are N cities numbered 1 through N and Mrailroads numbered 1 through M.Railroad i connects City AiA_iAi and City BiB_iBi bidirectionally. At time 0, KiK_iKi,原创 2021-02-21 20:42:27 · 1990 阅读 · 0 评论 -
AtCoder Beginner Contest 190 F.Shift and Inversions
AtCoder Beginner Contest 190 F.Shift and Inversions题目链接这题考了很明显的权值线段树,我曾经写过一道非常类似的题目 ZOJ 1484,感兴趣的可以做完这题再去看一下~权值线段树其实比线段树简单,它记录每个数出现的次数,对这道题的数据范围而言,我们记录的就是 [0,3e5][0,3e5][0,3e5] 这个区间每个数出现的次数。那么对某一数 xxx,我们要求的逆序对数就是查询 [x+1,n][x+1,n][x+1,n] 中有多少个数即可,对 x∈ax原创 2021-01-31 17:22:22 · 1701 阅读 · 2 评论 -
AtCoder Beginner Contest 190 E.Magical Ornament
AtCoder Beginner Contest 190 E.Magical Ornament题目链接这场我觉得 EEE 要比 FFF 难点,因为 EEE 比较难看出来是 BFS+状压 DP,题目给定一个序列,要求输出包含该序列的最短序列 KKK, 因为题目只要求求出这个最小序列长度,那么我们假定答案序列中包含的目标序列排列为 C1,C2,⋯ ,CkC_1,C_2,\cdots,C_kC1,C2,⋯,Ck,那么答案就是 ∑i=1k−1d[Ci][Ci+1]+1\sum_{i=1}^{k-1}d[原创 2021-01-31 16:51:22 · 1688 阅读 · 0 评论 -
AtCoder Beginner Contest 189 E.Rotate and Flip
AtCoder Beginner Contest 189 E.Rotate and Flip题目链接思维题~显然我们无法对每一次询问都重新计算一次答案,但是我们可以观察一下每一种操作后的变化:(x,y) −> (y,−x)(x,y)\ ->\ (y,-x)(x,y) −> (y,−x)(x,y) −> (−y,x)(x,y)\ ->\ (-y,x)(x,y) −> (−y,x)原创 2021-01-25 15:40:57 · 1786 阅读 · 1 评论 -
AtCoder Beginner Contest 187 F.Close Group Editorial
AtCoder Beginner Contest 187 F.Close Group Editorial题目链接状压DP~如果对边暴力的话复杂度约为 21502^{150}2150,显然不可取,所以只能考虑对点集进行状压DP,设 VVV 为图的点集,SSS 为 VVV 的一个子集,dp[S]dp[S]dp[S] 表示此点集状态下的答案,那么我们可以推出状态转移方程:dp[S]={1,S是完全图min{dp[S],dp[T⊕S]+dp[T]},T⊆Sdp[S]=\begin{cases}1,S原创 2021-01-21 20:10:40 · 2627 阅读 · 0 评论 -
Panasonic Programming Contest (AtCoder Beginner Contest 186) F.Rook on Grid
Panasonic Programming Contest (AtCoder Beginner Contest 186) F.Rook on Grid题目链接原创 2020-12-26 20:56:12 · 2457 阅读 · 0 评论 -
Panasonic Programming Contest (AtCoder Beginner Contest 186) E.Throne
Panasonic Programming Contest (AtCoder Beginner Contest 186) E.Throne题目链接Problem StatementWe have NNN chairs arranged in a circle, one of which is a throne.Takahashi is initially sitting on the chair that is SSS chairs away from the throne in the cloc原创 2020-12-25 15:55:09 · 2295 阅读 · 0 评论 -
AtCoder Beginner Contest 183 E.Queen on Grid
AtCoder Beginner Contest 183 E.Queen on Grid题目链接典型的 DP~如果我们考虑暴力,每个点的答案就是该点往左所有的可行点的答案+往上所有可行点的答案+往左上角的对角线上所有可行点的答案,这样复杂度为 O(N3)O(N^3)O(N3),显然不可取,如果要让复杂度降到 O(N2)O(N^2)O(N2),就必须要求出三个方向可行点的前缀和,于是我们可以在计算每个点的同时,往它的下方的一个点,右方的一个点和右下方的一个点传递答案,这样就相当于求了一个前缀和,若分别原创 2020-11-17 19:13:46 · 2388 阅读 · 0 评论 -
AtCoder Beginner Contest 181 E.Transformable Teacher
AtCoder Beginner Contest 181 E.Transformable Teacher题目链接#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;int n,m;ll h[N],w[N],odd[N],even[N];int main(){ cin>>n>>m; for(int i=1;i<=n;i++原创 2020-11-05 19:19:22 · 2355 阅读 · 0 评论 -
HHKB Programming Contest 2020 E.Lamps
HHKB Programming Contest 2020 E.Lamps题目链接这题我用的排除法,首先可以计算出所有灯的数量 kkk,则总情况数即为 k∗2kk*2^kk∗2k,对每一盏灯,只需要减去使其不亮的情况即可,即算出上下左右的联通的灯的数量 xxx,则总情况数就是 2k−x2^{k-x}2k−x,答案就是 k∗2k−∑i=1k2k−xik*2^k-\sum_{i=1}^k 2^{k-x_i}k∗2k−∑i=1k2k−xi 即可,AC代码如下:#include<bits/stdc原创 2020-10-20 20:45:54 · 2243 阅读 · 0 评论 -
HHKB Programming Contest 2020 D.Squares
HHKB Programming Contest 2020 D.Squares题目链接AC代码如下:#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=1e9+7;ll power(ll a,ll b){return b?power(a*a%mod,b/2)*(b%2?a:1)%mod:1;}int main(){ int t; cin>>t;原创 2020-10-11 10:28:02 · 3045 阅读 · 3 评论 -
AtCoder Beginner Contest 179 F.Simplified Reversi
AtCoder Beginner Contest 179 F.Simplified Reversi题目链接非常有趣的思维题~假设黑色区域宽为 xxx,长为 yyy,我们考虑一种修改,比如 1,k1,k1,k,此时不难发现修改后对 [k+1,y][k+1,y][k+1,y] 的 111 操作,都是固定的减去 xxx,所以这是一种典型的缩小策略,每操作一次都将黑色区域的长宽进行缩小,并用数组记录减少的黑色方块数即可,AC代码如下:#include<bits/stdc++.h>using原创 2020-10-05 09:48:13 · 2956 阅读 · 0 评论 -
ACL Beginner Contest E.Replace Digits
ACL Beginner Contest E.Replace Digits题目链接设计区间修改的题目通常都是线段树~因为线段树一般都是求区间的和,这题因为涉及到十进制的加减,所以我们可以存两种线段树,线段树 sss 每一位存初始值 111,101010,100100100,⋯\cdots⋯,tagtagtag 为懒惰标记,记录每次区间修改的值,线段树 treetreetree 记录修改后的线段树,很明显tree[i]=tag[i]∗s[i]tree[i]=tag[i]*s[i]tree[i]=ta原创 2020-10-01 16:19:01 · 2480 阅读 · 0 评论 -
ACL Beginner Contest D.Flat Subsequence
ACL Beginner Contest D.Flat Subsequence题目链接这种找最长的很容易想到 DP,类比最长上升子序列,我们对每个位置 iii,答案就是 [∣a[i]−k∣,a[i]+k][|a[i]-k|,a[i]+k][∣a[i]−k∣,a[i]+k] 中的最长序列长度加 1,但是此时复杂度是 O(n2)O(n^2)O(n2),显然是不行的,所以要优化,对查询区间的最大值,我们容易想到线段树,没错,这题就是一道隐藏的线段树,只需要每次插入时更新一下答案即可,AC代码如下:#inc原创 2020-09-30 19:01:35 · 2528 阅读 · 0 评论 -
ACL Contest 1 A.Reachable Towns
ACL Contest 1 A.Reachable Towns题目链接遇到这种题不禁感叹:这TM是300分的题?!????个人觉得是并查集,但是不知道怎么实现,看了大神的代码,不禁感叹自己太菜了,思路如下:从 1−n1-n1−n 记录每个位置的最小值,当最小值和右端区间长度相等时就将当前的 iii 存到数组里,最后赋值即可,对每个区间 [b[i−1],b[i]][b[i-1],b[i]][b[i−1],b[i]] 里的数 jjj,ans[j]=b[i]−b[i−1]ans[j]=b[i]-b[i-原创 2020-09-22 18:43:12 · 2479 阅读 · 0 评论 -
AtCoder Beginner Contest 179 E.Sequence Sum
AtCoder Beginner Contest 179 E.Sequence Sum题目链接一开始以为是矩阵,后来发现就是简单的找循环节,我们可以标记每一个 xxx,我找循环节的思路是这样的:sss 为循环节起点,eee 为终点,sumsumsum 记录前缀和,mapmapmap 标记每一个 xxx~因为循环节的元素是唯一的,所以当一个元素出现第二次时,它一定是循环节起点;当一个元素出现第三次时,它前面那个元素一定是循环节终点。注意我们此时是多截取了一个循环节的,所以 sss 和 eee 都需要原创 2020-09-21 16:54:40 · 2457 阅读 · 0 评论 -
AtCoder Beginner Contest 178 E.Dist Max
AtCoder Beginner Contest 178题目链接如果我们知道一个 nnn 维的点,对每一个维度都有一个运算符的话,很明显一共有 2n2^n2n 种运算,而曼哈顿距离就是这些运算结果的最大值和最小值之差,那么对本题只需要枚举所有情况算最大差值即可,AC代码如下:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;ll a[N][2];int n;ll原创 2020-09-15 09:21:06 · 2566 阅读 · 0 评论 -
AtCoder Beginner Contest 178 F.Contrast
AtCoder Beginner Contest 178 F.Contrast题目链接这题我用的是一个个换位然后比较,结果 T 了四个,赛后看别人的题解,发现也是伪暴力的做法,不知道为啥就能过????题目已经按递增序给出两个数组,我们可以将数组 B 倒置,逐个与数组 A 比较,如果相同就遍历整个数组找出不同的元素进行换位,找不到直接输出 NoNoNo,最后输出 B 即可,AC代码如下:#include<bits/stdc++.h>using namespace std;typede原创 2020-09-15 09:06:19 · 2473 阅读 · 0 评论 -
AtCoder Beginner Contest 178 D.Redistribution
AtCoder Beginner Contest 178 D.Redistribution题目链接先 DFS,找规律发现:a[n]=a[n−1]+a[n−3a[n]=a[n-1]+a[n-3a[n]=a[n−1]+a[n−3AC代码如下:#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=1e9+7;ll a[2005];void pre(){ a[0]=a[1]=原创 2020-09-14 20:51:33 · 2477 阅读 · 0 评论 -
AtCoder Beginner Contest 175 E.Picking Goods
AtCoder Beginner Contest 175 E.Picking Goods题目链接典型的 DP,如果不加限制条件的话就是从上到下找一条最长路,但是限制了每行只能选 3 个,所以就多加一维,状态转移方程为:dp[i][j][k]=max(dp[i−1][j][3]+g[i][j],max(dp[i][j−1][k−1]+g[i][j],dp[i][j−1][k]))dp[i][j][k]=max(dp[i-1][j][3]+g[i][j],max(dp[i][j-1][k-1]+g[i]原创 2020-09-04 18:24:40 · 2468 阅读 · 0 评论 -
AtCoder Beginner Contest 177 F.I hate Shortest Path Problem
AtCoder Beginner Contest 177 F.I hate Shortest Path Problem题目链接map+multiset,AC代码如下:#include<bits/stdc++.h>using namespace std;typedef long long ll;int h,w,a,b;map<int,int>m;multiset<int>s;int main(){ cin>>h>>w;原创 2020-08-30 09:33:15 · 2559 阅读 · 0 评论 -
AtCoder Beginner Contest 177 E.Coprime
AtCoder Beginner Contest 177 E.Coprime题目链接这题我直接想到了质因数分解????,先素筛出 1e61e61e6 的质因数,然后对每个数质因数分解,每个质因数都标记一下,如果没有重复,那么这一组数肯定两两互质;如果重复,求这一组数的公因数,如果是 111,输出 setwise coprimesetwise\ coprimesetwise coprime,否则输出 not coprimenot\ coprimenot copri原创 2020-08-30 09:05:35 · 2601 阅读 · 0 评论 -
AtCoder Beginner Contest 177 D.Friends
AtCoder Beginner Contest 177 D.Friends题目链接典型的并查集,不难发现答案就是最大的并查集的元素个数,AC代码如下:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5;int n,m,ans=0,father[N],sum[N];int Findfather(int x){ return father[x]==x?x:fat原创 2020-08-30 08:54:44 · 2473 阅读 · 0 评论 -
AtCoder Beginner Contest 176 E.Bomber
AtCoder Beginner Contest 176 E.Bomber题目链接比较简单的思维题,很明显,每一个点对行和列都有贡献值,我们只需找到最大的行贡献值和最大的列贡献值即可,这样成功了一大半,我们会发现行与列的交叉点如果有元素那么答案要减 111,那么我们可以记录所有等于最大贡献值的行号和所有最大贡献值的列号,判断是否存在交叉点即可 (很容易发现复杂度是 O(n)O(n)O(n) 的,而非 O(n2)O(n^2)O(n2)).这题惊人的 130 个点,还好一发过了????,AC代码如下:#原创 2020-08-23 09:03:10 · 2440 阅读 · 0 评论 -
AtCoder Beginner Contest 176 D.Wizard in Maze
AtCoder Beginner Contest 176 D.Wizard in Maze题目链接要考试了,上午抽空写波题解,这题我觉得比 E 难,首先两种方案,如果不考虑最优走法,要求最少次数只能 DFS,看题目的数据肯定 T 飞,所以只能 BFS,那么怎么才能最优呢,显然要先走第一种方案,第一种方案走不下去再走第二种方案,重复上述过程即可,那怎么实现呢?可以写两个 BFS,嵌套两个 while 循环即可,AC代码如下:#include<bits/stdc++.h>using nam原创 2020-08-23 08:54:56 · 2517 阅读 · 0 评论 -
AtCoder Beginner Contest 175 D.Moving Piece
AtCoder Beginner Contest 175 D.Moving Piece题目链接最近忙于复习,今天实在复习不下去了就来补一下这题,比赛时没有考虑周全,WA了8个点,其实就差一点了,这题我的思路是这样的:首先计算每个循环节的长度,对某段长度 lenlenlen,求出 [1,len][1,len][1,len] 区间内的前缀和,这是预处理过程,很容易实现。题目的难点在于至多 kkk 次而非正好 kkk 次,所以要分情况讨论,对某个循环节长度 lenlenlen:若 k<=lenk原创 2020-08-21 16:59:27 · 2558 阅读 · 0 评论 -
AtCoder Beginner Contest 174 F.Range Set Query
AtCoder Beginner Contest 174 F.Range Set Query题目链接第一次碰到不考思维的 FFF,我笑了????这题就是一个主席树的应用,裸题+原题,注意此题比原题数据大了一倍多,所以线段树的大小也要扩大,我因为这个 RE 了好几次????,AC代码如下:#include<bits/stdc++.h>using namespace std;const int maxn = 5e5+5;int n, m;struct Tree { int原创 2020-08-03 08:55:14 · 2474 阅读 · 0 评论 -
AtCoder Beginner Contest 174 E.Logs
AtCoder Beginner Contest 174 E.Logs题目链接到最后才发现是二分,菜菜的我/(ㄒoㄒ)/~~我们直接二分 [1,max{a[i]}][1,max\lbrace a[i]\rbrace][1,max{a[i]}] 即可,对每一个 midmidmid,每个数 a[i]a[i]a[i] 只需要切 a[i]−1mid\frac{a[i]-1}{mid}mida[i]−1 刀即可(可以自己弄几个例子证明一下),判断每一个 midmidmid 需要的总刀数和 kkk 的关系即可原创 2020-08-03 08:49:45 · 2519 阅读 · 0 评论 -
AtCoder Beginner Contest 174 D.Alter Altar
AtCoder Beginner Contest 174 D.Alter Altar题目链接这题比赛时做复杂了,还用了前后缀和,看了大佬的代码感觉奇妙无比,首先可以统计所有 RRR 的数量 numnumnum,这些 RRR 都可以通过一操作移到最左边,那么只要查询 [0,num][0,num][0,num] 的范围里有多少个 WWW 需要交换即可,AC代码如下:#include<bits/stdc++.h>using namespace std;typedef long long l原创 2020-08-03 08:42:49 · 2432 阅读 · 0 评论