- 2024-05-18AT_abc347_e
题意给定你一个长度为\(n\)且初始全部为\(0\)的序列\(A\),以及一个空集\(S\)。接下来有\(T\)次操作,每次给定一个\(x\),若\(x\inS\)则将\(x\)删除,否则将\(x\)加入\(S\)。在每次操作之后,对于\(j=1,2,\cdots,n\),若\(j\inS\),则给\(a_j\)加上\(\left|S\right
- 2024-04-05AT-abc347(C,D)
AtCoderBeginnerContest347C-IdealHolidays这场做得最头疼的题分析容易想到先用$(d_i+a+b-1)%(a+b)+1$把$d_i$映射到$[1,a+b]$的区间再排序,但由于未知星期一是哪天,我们也无法确定映射后的$d_i$是星期几关于这个映射可以自己推一下我们取a+b=7看几个例子对于32
- 2024-04-05ABC347
Alink很简单遍历,判断模\(k\)是否为\(0\),如果为\(0\),输出\(a_i/k\)。点击查看代码#include<bits/stdc++.h>usingnamespacestd;intn,k;inta[105];signedmain(){ cin>>n>>k; for(inti=1;i<=n;++i){ cin>>a[i]; if(a[i]%
- 2024-04-01ABC347 C~D~?(更新中)
Portal:https://atcoder.jp/contests/abc347/tasksABC347只过了\(A,B\),再创新低,。。。遂来补题C-IdealHolidays题意简述输入\(n,a,b,d_1,d_2,…,d_n\),表示在Atcoder国每周分为\(a\)天休息日和\(b\)天工作日,现在有\(n\)个事件,第\(i\)个事件落在第\(d_i\)日。我忘了今天是这
- 2024-04-01ABC347F 题解
我们考虑这三个正方形的相对位置有多少种情况。我们把正方形的顶点设为\((x_i,y_i)\)。容易发现,放置合法当且仅当\(\foralli\neqj,|\x_i-x_j\|\geqd\\text{or}|\y_i-y_j\|\geqd\)。发现这只有可能是以下两种情况。于是便可以开始写了。/***********
- 2024-03-31AT_abc347_d 的题解
(一)数学题。根据\(C\)的值,可以得出\(x\)和\(y\)有\(s1+s\)个相同的数位和\(s2\)个不同的数位。\(s1\)是\(C\)的二进制中\(0\)的数量,\(s2\)是\(C\)的二进制中\(1\)的数量。\(x\)和\(y\)可以通过在开头放\(s\)个\(1\)的方式既不改变异或大小,又能凑到
- 2024-03-31AT_abc347_e的题解
(一)可能因为我太菜了,感觉D>E。用\(vis_i\)表示\(i\)是否出现,\(sum_i\)表示当前集合大小。用vector维护出现的区间的端点。将\(sum\)数组前缀和即可。(二)AC代码。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,q,x,siz,sum[200010];
- 2024-03-31AT_abc347_e 题解
很水。一个las数组,记录a[i]这个数上一次被加入是什么时候。注意,为防误判,在a[i]被删除的时候,将las[a[i]]设为\(0\)。你也可以这么理解:las是记录在哪出现的visit数组。每次加入一个数的时候,\(\left|S\right|\)就加\(1\),并且使las[a[i]]等于i。删除时,\(\left|S
- 2024-03-30AT_abc347_c 题解
最开始的思路爆炸了我就不写了。先d[i]%=(a+b)。然后,排序,破环为链,相当于存储了下一周。再然后,从\(1\)到\(n\)进行一个循环,若d[i+n-1]-d[i]+1<=a就输出Yes。它的原理是什么?翻译一下上面那个语句,就是“我前一个任务的日期的下一周距离我这个任务的日期小于等于节假日天
- 2024-03-30ABC347题解
省流:输+赢D按位分析。既然两个数异或后的结果是\(C\),那就考虑\(C\)中为\(1\)的数中有几个是在\(X\)当中的。假如\(\text{a-popcnt(X)==b-popcnt(Y)}\),那么在\(C\)中为\(0\)的数中随便选\(\text{a-popcnt(x)}\)个即可。注意longlong。codeE假如