Codeforces
文章平均质量分 54
w_uxidixi
nnzncf
展开
-
CodeForces - 1501D - Two chandeliers 二分
CodeForces - 1501D - Two chandeliers 二分题意:如果两个数组的花颜色不一样,老板就会生气,问多少天后老板会生气k次。分析:因为数组aaa的每个数字互不相同,数组bbb的每个数字也互不相同,换句话说,数组aaa和数组bbb相同的对数不超过max(n,m)max(n,m)max(n,m),可以存起来做法:假设位置iii和位置jjj的数字相同。即存在x,yx,yx,y,使得x∗n+i=y∗m+jx*n+i=y*m+jx∗n+i=y∗m+j移项后得x∗n−y∗m原创 2021-03-14 14:04:04 · 300 阅读 · 0 评论 -
CodeForces - 1490
CodeForces - 1490A - Dense Arrayconst int maxn=2e6+7;const int INF=0x3f3f3f3f;const ll INFF=1e18;int t,n,a[maxn];int main(){ scanf("%d",&t); while(t--) { int ans=0; scanf("%d",&n); rep(i,1,n)scanf("%d",&am原创 2021-02-26 15:06:46 · 338 阅读 · 0 评论 -
CodeForces - 1462
CodeForces - 1462A - Favorite SequenceSB题const int maxn=2e6+7;const int INF=0x3f3f3f3f;const ll INFF=1e18;int a[maxn],t,n;int main(){ scanf("%d",&t); while(t--) { scanf("%d",&n); rep(i,1,n)scanf("%d",&a[i]);原创 2020-12-19 16:03:19 · 283 阅读 · 1 评论 -
CodeForces - 1461
CodeForces - 1461A - String Generation一直输出abc串const int maxn=2e6+7;const int INF=0x3f3f3f3f;const ll INFF=1e18;int t,n,k;int main(){ scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); rep(i,1,n) {原创 2020-12-17 19:18:35 · 184 阅读 · 0 评论 -
CodeForces - 1457
CodeForces - 1457A - Prison Break特判矩形四个顶点const int maxn=2e6+7;const int INF=0x3f3f3f3f;const ll INFF=1e18;ll t,n,m,r,c;int main(){ scanf("%lld",&t); while(t--) { scanf("%lld%lld%lld%lld",&n,&m,&r,&c);原创 2020-11-30 17:12:51 · 280 阅读 · 0 评论 -
CodeForces - 1454E - Number of Simple Paths 思维
CodeForces - 1454E - Number of Simple Paths 思维题意:给出一个n个顶点n条无向边的连通图,求出不重复的所有路径数量。分析:对于一棵树而言(含有n-1条无向边),所有路径的数量就等于所有顶点两两配对的数量的二分之一(因为在无向图中x到y和y到x其实是同一条)。即ans=ans=ans=n(n−1)2{n(n-1)}\over 22n(n−1)。对于一个环而言(含有n条无向边),所有路径的数量等于所有顶点两两配对的数量(因为环的特殊性,所以x到y有两种不同原创 2020-11-25 14:35:02 · 436 阅读 · 0 评论 -
CodeForces - 1427C - The Hard Work of Paparazzi dp
CodeForces - 1427C - The Hard Work of Paparazzi dp题意:给出n个点(xi,yi)(x_i,y_i)(xi,yi),如果主人公在tit_iti在这个点上,就可以拍照,从一个点到另一个点的花费时间是两点的哈密顿距离。想不出来 又是抄的题解dp状态:dp[i]dp[i]dp[i]表示[1,i][1,i][1,i]个点最多可以拍多少照片初始化:dp[0]=0,dp[i]=dp[0]=0,dp[i]=dp[0]=0,dp[i]=负无穷思路:(假设i&l原创 2020-10-14 21:33:05 · 327 阅读 · 2 评论 -
CodeForces - 1422C - Bargain 枚举贡献
CodeForces - 1422C - Bargain 枚举贡献题意:给出长度为n的字符串,删除其中任意长度的连续子串,将所有可能的情况的数字加起来取模做法:假设序列是12354,假设2不被删去那么可能的情况有以下两种:删除位置[3,5]中的连续子串这种情况下,2的贡献是不同的,分别是:删除长度为3的子串2×100×12×10^0×12×100×1删除长度为2的子串:2×101×22×10^1×22×101×2删除长度为1的子串:2×102×32×10^2×32×102×3ans1=∑原创 2020-10-05 21:03:53 · 1498 阅读 · 8 评论 -
CodeForces - 1408D - Searchlights 思维/贪心
CodeForces - 1408D - Searchlights 思维题意:给出n个强盗坐标(ai,bi)(a_i,b_i)(ai,bi),m个探照灯坐标(cj,dj)(c_j,d_j)(cj,dj),每一次可以将所有ai+1a_i+1ai+1或者bi+1b_i+1bi+1,对于1≤i≤n,1≤j≤m1\leq i\leq n,1\leq j\leq m1≤i≤n,1≤j≤m,均满足ai≤cj&&bi≤dja_i\leq c_j\&\&b_i\leq d_ja原创 2020-10-04 19:54:42 · 274 阅读 · 0 评论 -
CodeForces - 1426
CodeForces - 1426A - Floor Number小模拟int t,n,x;int main(){ scanf("%d",&t); while(t--) { scanf("%d%d",&n,&x); int left=1,right=2,id=1; while(1) { if (left<=n&&n<=right)原创 2020-10-01 13:09:10 · 357 阅读 · 0 评论 -
CodeForces - 1417
CodeForces - 1417A - Copy-paste优先把最小的加给别人再用次小的加给最小的猜的..int t,n,k,a[maxn];int main(){ scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); rep(i,1,n)scanf("%d",&a[i]); sort(a+1,a+1+n); int ans原创 2020-09-28 16:59:27 · 339 阅读 · 1 评论 -
CodeForces - 1418D. Trash Problem 线段树+离散化/set维护
CodeForces - 1418D. Trash Problem 线段树+离散化/set维护不难想到,最后的ans=max{a[i]}−min{a[i]}−max{a[i]−a[i−1]}ans=max\{a[i]\}-min\{a[i]\}-max\{a[i]-a[i-1]\}ans=max{a[i]}−min{a[i]}−max{a[i]−a[i−1]}一、线段树做法维护区间的最大值,最小值,和区间最大的相邻差值需要用到离线,将所有的点都放入数组才能离散化,然后构造线段树的过程中,记录下哪些点原创 2020-09-24 11:41:22 · 238 阅读 · 0 评论 -
CodeForces - 1409F. Subsequences of Length Two dp
CodeForces - 1409F. Subsequences of Length Two dp题意:给出一个s串和t串,可以修改s串中的字母最多k次,问最后s中最多存在子序列t多少个dp状态:dp[i][j][k]dp[i][j][k]dp[i][j][k]表示在位置[1,i][1,i][1,i]上,修改了j次,共出现t[1]字符k次如果t[1]=t[2],就需要特判,直接把所有能替换的全部替换为t[1],如果用上述dp的话会少情况。代码:int n,x,dp[maxn][maxn][maxn原创 2020-09-22 16:57:17 · 202 阅读 · 0 评论 -
CodeForces - 1409
CodeForces - 1409A - Yet Another Two Integers Problem一直取10,剩余的一次完成ll t,a,b;int main(){ scanf("%lld",&t); while(t--) { scanf("%lld%lld",&a,&b); printf("%lld\n",(max(a,b)-min(a,b))%10==0?(max(a,b)-min(a,b))/10:(m原创 2020-09-18 15:41:57 · 324 阅读 · 0 评论 -
CodeForces - 1391D - 505 dp
CodeForces - 1391D - 505 dp题意:给一个矩形,其偶数的子正方形中1的个数必须为奇数思路:由于长为2的正方形中1的个数为奇数,所以4个长为2拼起来的长度为4的正方形中1的个数一定为偶数,所以当n>=4时,情况必然不存在;当n=1时,输出0;问题转化为求n=2和n=3时的两种情况做法:当n=2时,枚举第一列的状态,如果第一列中有1个1,那么第二列要么全0要么全1;如果第一列中全1或全0,则第二列一定是1个1。就两种状态,暴力比大小当n=3时,第i+1列的一种状态对应第原创 2020-09-17 12:17:10 · 216 阅读 · 0 评论 -
CodeForces - 1395D - Boboniu Chats with Du 贪心
CodeForces - 1395D - Boboniu Chats with Du 贪心题意:如果ai>ma_i>mai>m,并且当天可以说话,则接下来ddd天不能说话。其余所有情况都能说话,计算能说话的∑ai\sum a_i∑ai的最大值思路:大于mmm的如果取,则肯定取当前最大的,并且是从最后一个位置nnn开始取,每隔ddd个取一个如何去利用前缀和:暴力枚举取xxx个大于mmm的,那么会消耗(x−1)(d+1)+1(x-1)(d+1)+1(x−1)(d+1)+1天,剩余的天原创 2020-08-14 12:17:01 · 245 阅读 · 0 评论 -
CodeForces - 1393
CodeForces - 1393A - Rainbow Dash, Fluttershy and Chess Coloring手动算几个int t,n;int main(){ scanf("%d",&t); while(t--) { scanf("%d",&n); W(n/2+1); }}B - Applejack and Storages统计当前边长的个数,由于情况很少,全部枚举出来int n,原创 2020-08-12 22:08:58 · 194 阅读 · 0 评论 -
CodeForces - 1384
CodeForces - 1384A - Common Prefixes GNU前缀取相同,后面的不同的字母向后移一位char ans[maxn][60];int t,n,a[maxn];int main(){ scanf("%d",&t); while(t--) { scanf("%d",&n); rep(i,1,n)scanf("%d",&a[i]); rep(i,1,50)ans[1][i]=原创 2020-08-12 21:51:07 · 237 阅读 · 0 评论 -
CodeForces - 1382D - Unmerge 背包
CodeForces - 1382D - Unmerge 背包题意:给出一个[1,2n][1,2n][1,2n]的排列ppp,问是否存在两个长度为nnn的数组aaa,bbb,满足merge(a,b)=pmerge(a,b)={ba=emptyab=emptya1+merge([a2,a3,..an],b)a1<b1b1+merge(a,[b2,b3,..bn])a1>b1merge(a,b)=\begin{cases}b& a = empty\\a& b = empty原创 2020-08-07 01:41:18 · 228 阅读 · 0 评论 -
CodeForces - 1379C - Choosing flowers 二分
CodeForces - 1379C - Choosing flowers 二分题意:给出mmm种商品,购买xxx次该商品iii获得的利润是:val(x)={0x=0ai+(x−1)∗bix!=0val(x)=\begin{cases}0& \text{x=0}\\a_i+(x-1)*b_i& \text{x!=0}\end{cases}val(x)={0ai+(x−1)∗bix=0x!=0思路:只可能会取到一个bib_ibi,换句话说,最多只有一种商品会被购买多次原创 2020-08-05 21:28:09 · 298 阅读 · 0 评论 -
CodeForces - 1380
CodeForces - 1380A - Three IndicesO(n^2)暴力int t,n,a[maxn];bool ok[maxn];int main(){ scanf("%d",&t); while(t--) { bool mark=false; scanf("%d",&n); rep(i,1,n)scanf("%d",&a[i]); rep(i,2,n-1)原创 2020-08-02 17:17:51 · 241 阅读 · 0 评论 -
CodeForces - 1372D - Omkar and Circle 前缀和(dp)
CodeForces - 1372D - Omkar and Circle 前缀和(dp)题意:给一个奇数长度的数组,操作是选择一个位置,删除其相邻的数,并将该位置的数赋值为相邻数的和,求最终剩下的一个数字最大为多少注意:位置1和位置n算相邻思路及问题转化:选择某位置,表面上看删除的是相邻的两个数,但是其实总和SSS减少的是这个位置的数,于是这个问题可以转化为:删除n/2n/2n/2个不相邻的数,剩下的数字和最大如何去利用前缀和:在一个奇数长度的数组中删去n/2n/2n/2个数,剩余数字n/2+1原创 2020-07-12 11:02:15 · 1492 阅读 · 1 评论 -
CodeForces - 1373
CodeForces - 1373A - Donut Shops买1个的时候,店2最亏,店1最有可能比店2便宜买b个的时候,店2最赚,店2最有可能比店1便宜比较这两种情况即可ll a,b,c;int ans1,ans2,t;int main(){ scanf("%d",&t); while(t--) { scanf("%lld%lld%lld",&a,&b,&c); if (a*b>c)ans2=原创 2020-07-03 14:33:32 · 286 阅读 · 0 评论 -
CodeForces - 1370D Odd-Even Subsequence 二分
CodeForces - 1370D Odd-Even Subsequence 二分题意:从数组中选出一个长度为kkk的子序列,组成一个新的数组aaa,要求该数组aaa的min(max{a1,a3,a5},max{a2,a4,a6})min(max\{a_1,a_3,a_5\},max\{a_2,a_4,a_6\})min(max{a1,a3,a5},max{a2,a4,a6})最小思路:假设这个答案为xxx,则xxx只能取原数组中的某个数,答案最多为nnn种,且这nnn个答案具有大小关系,原创 2020-07-02 12:19:33 · 2533 阅读 · 0 评论 -
CodeForces - 1368
CodeForces - 1368A - C+=直接模拟ll t,a,b,n;int main(){ scanf("%lld",&t); while(t--) { int num=0; scanf("%lld%lld%lld",&a,&b,&n); while(a<=n&&b<=n) { ll minn=min(a,b);原创 2020-07-01 15:05:23 · 315 阅读 · 0 评论 -
CodeForces - 1367
CodeForces - 1367A - Short Substrings很显然 前两个字母都取 之后隔一个取一个char s[maxn],ans[maxn];int t;int main(){ scanf("%d",&t); while(t--) { int m=0; scanf("%s",s); ans[m++]=s[0];ans[m++]=s[1]; for (int i=3;i<str原创 2020-07-01 13:24:42 · 434 阅读 · 0 评论 -
CodeForces - 1365
CodeForces - 1365A - Matrix Game可用的行和可用的列的最小值就是两个人总共可以进行的回合数int a[maxn][maxn],t,n,m,row[maxn],col[maxn];int main(){ scanf("%d",&t); while(t--) { mem(row,0);mem(col,0); int num1=0,num2=0; scanf("%d%d",&n,&am原创 2020-06-16 16:06:49 · 335 阅读 · 0 评论 -
CodeForces - 1362
CodeForces - 1362A - Johnny and Ancient Computerint t;ll a,b;int main(){ scanf("%d",&t); while(t--) { int num=0; scanf("%lld%lld",&a,&b); if (a<=b)swap(a,b); if (a%b!=0)W(-1); else原创 2020-06-15 00:09:17 · 294 阅读 · 0 评论 -
CodeForces - 1364
CodeForces - 1364A - XXXXX1.如果总和不被x整除,则输出n2.如果每个数都被x整除,则输出-13.找到最左端的不被x整除的数和最右端不被x整除的数int t,n,x,a[maxn];int main(){ scanf("%d",&t); while(t--) { int l=INF,r=-1,sum=0; scanf("%d%d",&n,&x); rep(i,1,n)原创 2020-06-14 21:45:24 · 599 阅读 · 2 评论 -
CodeForces - 1363
坐等新专辑CodeForces - 1363A - Odd Selection四种情况1.没有奇数2.要求取满所有的数(n=x)且奇数个数为偶数3.要求取偶数个数,但序列中无偶数4.其他所有情况一开始少了第三种情况,WA了一小时int a,n,t,x;int main(){ scanf("%d",&t); while(t--) { int numj=0,numo=0; scanf("%d%d",&n,&原创 2020-06-09 15:39:55 · 184 阅读 · 0 评论 -
CodeForces - 1359
CodeForces - 1359A - Berland Poker将尽可能多的joker牌先给一个人,剩下的k-1个人平均分,使得差值最大int t,n,m,k;int main(){ scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&m,&k); int maxx=min(n/k,m); m-=maxx; if (m%(k-1)原创 2020-06-06 19:53:56 · 253 阅读 · 0 评论 -
CodeForces - 1358
CodeForces - 1355A - Park Lighting分有偶数边和没有偶数边两种情况int t,n,m;int main(){ scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); if (n*m%2==0)W(n*m/2); else W(n*m/2+1); } return 0;}B - Maria Break原创 2020-06-05 23:37:09 · 198 阅读 · 0 评论 -
CodeForces - 1354D Multiset 权值线段树/树状数组+二分
CodeForces - 1354D Multiset 权值线段树/树状数组+二分权值线段树可以过,普通的单点修改查询线段树TLE做法一:线段树const int maxn=1e6+7;const int INF=1e9;const ll INFF=1e18;int a[maxn],tree[maxn<<2],n,q,x,k;void pu(int rt){tree[rt]=tree[rt<<1]+tree[rt<<1|1];}void build(int原创 2020-05-20 22:09:52 · 216 阅读 · 0 评论 -
CodeForces - 1355
CodeForces - 1355A - Sequence with Digits加着加着数据中肯定会出现0这个数字,那么就一直加0,直接输出当前数据即可。int t;ll n,k;bool is(ll x){ while(x) { if (x%10==0)return true; x/=10; } return false;}ll solve(ll x){ int minn=9,maxx=0; while(原创 2020-05-18 20:51:36 · 215 阅读 · 0 评论 -
CodeForces - 1353
CodeForces - 1350D - Constructing the Array优先队列,区间宽度为第一关键字,左边界为第二关键字每次获得一个答案a[mid]时,可能会衍生出左区间和右区间,加入优先队列继续操作即可int a[maxn],n,t;struct node{ int l,r,x; node(int _l=0,int _r=0,int _x=0):l(_l),r(_r),x(_x){} bool operator<(const node &原创 2020-05-17 21:05:10 · 338 阅读 · 0 评论 -
CodeForces - 1350
CodeForces - 1350A - Orac and Factors一个数加上它非1的最小公因数之后一定为偶数。Proof:1.若x为偶数,则其非1最小公因数为2,x+2仍为偶数。2.若x为奇数,则其非1最小公因数必为奇数,x+奇数为偶数。故操作一次结束后 其非1的最小公因数永远为2ll t,n,k;int main(){ scanf("%lld",&t); while(t--) { scanf("%lld%lld",&n,原创 2020-05-17 15:21:12 · 226 阅读 · 0 评论 -
CodeForces - 1315D Recommendations 并查集
CodeForces - 1315D Recommendations 并查集一开始想用优先队列做,一直TLE我一开始是按照序号从小到大,时间从小到大排序的,但是这样是不对的,对于序号重复的值而言,时间越小就可以进行越多次操作(贪心思想),那么这多次操作具体是多少呢,是出现重复的次数-1,相当于距离做法:按照时间从大到小,序号从小到大,用并查集维护祖先,用来表示该点最终需要加到多大的值,并通过...原创 2020-02-24 16:05:12 · 1644 阅读 · 2 评论 -
CodeForces - 1307D Cow and Fields 最短路
CodeForces - 1307D Cow and Fields 最短路题意: 给出n个点m条边的连通图,给出k个关键点的编号,以两个关键点连边,问从1到n的最短路最大是多少现假设:d1[i]d1[i]d1[i]表示从1到i的最短距离d2[i]d2[i]d2[i]表示从n到i的最短距离做法:分两种情况:1.这两个关键点,如果对原来的最短路没有影响,则ans=d1[n]ans=d1[n...原创 2020-02-19 14:01:25 · 256 阅读 · 0 评论 -
Codeforces #616 Div2 C Mind Control
Codeforces #616 Div2 C Mind Controlhttp://codeforces.com/contest/1291/problem/C题意: 给出n个数据,有n个人,从1到n编号排列,现在主人公的编号为m,每个人可以选择删去第一个或最后一个数据,主人公可以控制k个人的选择做法: 暴力枚举k个人当中有i个人选择删去第一个数据,剩下的m-k-1个人当中有j个人选择删去第一...原创 2020-02-04 15:52:29 · 128 阅读 · 0 评论 -
Codeforces Round #609 (Div. 2)B.Modulo Equality
Codeforces Round #609 (Div. 2)B.Modulo Equality做法:n2n^2n2暴力枚举,对于a中第一个元素,肯定会映射到b中去,假设映射到b中的某一个,计算出差值(可能会有两个),再去判断是否正确,并不断取min代码:/** * Author1: low-equipped w_udixixi * Author2: Sher丶lock * Dat...原创 2020-01-14 20:14:35 · 170 阅读 · 0 评论