首页 > 其他分享 >AtCoder Beginner Contest 339

AtCoder Beginner Contest 339

时间:2024-02-03 23:01:11浏览次数:20  
标签:AtCoder 339 Beginner int 线段 seg LIS 最大值

基本情况

ABC秒了,D读错题卡了一段时间,还好爆搜强项,E感觉极其类似LIS,但是似乎又不能用二分DP来写。

E

感觉极其类似LIS,但是暴力DP肯定T,又知道不能用二分优化

事实如此,确实类似LIS,但是通过线段树来维护区间最大值.

暂时还没有熟练线段树,先用atc的库来平替.

实现上就是将元素依次加入线段树 , 然后用当前元素符合条件区间的最大值来更新当前元素对应点的值.

最后输出总区间最大值即可.

int op(int a, int b) { return max(a, b); }
int e() { return 0; }
const int A = 500010;

int main()
{
	int n, d;
	cin >> n >> d;
	atcoder::segtree<int, op, e> seg(A);
	for (int i = 0, x; i < n; i++) {
		cin >> x;
		int l = max(0, x - d);
		int r = min(A - 1, x + d);
		int MAX = seg.prod(l, r + 1);
		seg.set(x, MAX + 1);
	}
	cout << seg.all_prod() << endl;
	return 0;
}

标签:AtCoder,339,Beginner,int,线段,seg,LIS,最大值
From: https://www.cnblogs.com/kdlyh/p/18005356

相关文章

  • Atcoder Beginner Contest 339 解题报告
    AtcoderBeginnerContest339场评:B>C,D>E,F>G,中国选手最擅长的G,集体上分。A-TLDSimulate.strings;voidSolve(){ charc; while(cin>>c) { if(c=='.')s=""; elses+=c; } cout<<s;}B-Langton'sTakahashiSimulat......
  • ABC339
    题解不应该流露出太多感情,对吧。E建议评黄。首先我们可以想到暴力dp。定义\(dp_i\)为以\(a_i\)为结尾满足题目意思的最长序列的长度。很明显,时间复杂度为\(O(n^2)\)不可通过本题。我们发现一个序列以\(a_i\)为结尾,那么上一位绝对是以\(a_i-k\)到\(a_i+k\)中的......
  • AtCoder Beginner Contest 339
    A-TLD(abc339A)题目大意给一个网址,问它的后缀是多少。解题思路找到最后的'.'的位置,然后输出后面的字符串即可。python可以一行。神奇的代码print(input().split('.')[-1])B-Langton'sTakahashi(abc339B)题目大意二维网格,上下左右相连,左上原点。初始全部为......
  • ABC339 题解
    AK了。A-TLD给出一个字符串\(s\),输出最后一个.后面的内容。\(|s|\le100\)。\(\text{2sec/1024MB}\)。按照题意模拟即可,时空复杂度均为\(\mathcal{O}(|s|)\)。ACCodeB-Langton'sTakahashi给出\(H\timesW\)的网格。初始你在\((1,1)\),方向......
  • ABC 339 破防记
    我是沙波。嘿!A好难。Code#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;intmain(){ ios::sync_with_stdio(false); cin.tie(0); strings; cin>>s; stringt=s; reverse(t.begin(),t.end()); stringx; for(inti=0;i<t.s......
  • ABC339 题解(A~G)
    A从后向前找到第一个.就行了。B按照题意模拟,设当前位置\(x,y\)移动方向\(dx,dy\)。那么下一步为\((x+dx,y+dy)\)设新的移动方向为\(dx',dy'\)如果顺时针旋转,则有\(dy'\gets-dx,dx'\getsdy\);如果逆时针,则有\(dx'\gets-dy,dy'\getsdx\)。C鉴定为除A以外......
  • AtCoder Beginner Contest 333
    ABC334总结https://atcoder.jp/contests/abc333A-ThreeThrees翻译输入一个正整数\(n\),输出\(n\)遍这个正整数。\(1\len\le9\)。分析没啥好说的,直接输出就好了。code#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;intn;intmain()......
  • E - Revenge of "The Salary of AtCoder Inc."
    E-Revengeof"TheSalaryofAtCoderInc."ProblemStatementAoki,anemployeeatAtCoderInc.,hashissalaryforthismonthdeterminedbyaninteger$N$andasequence$A$oflength$N$asfollows.First,heisgivenan$N$-sideddie(dice)th......
  • AtCoder Beginner Contest 330 ABCDE
    AtCoderBeginnerContest330ABCDEA-CountingPasses签到题,不多说。//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmod=1e9+7;constintN=2e5+10;intmain(){ios::sync_with_stdi......
  • AtCoder Beginner Contest 336
    ABC336总结AtCoderBeginnerContest336A-LongLoong翻译给定一个数\(n\),请输出一个由一个L、\(n\)个o、一个n和一个g组成的字符串(区分大小写)。分析按题意模拟即可。code#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1......