ACL Beginner Contest 总结——F多项式待补

A - Repeat ACL

签到题1

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=500010;
int main()
{IO;int T=1;//cin>>T;while(T--){int n;cin>>n;string s="ACL";while(n--) cout<<s;cout<<'\n';}return 0;}

B - Integer Preference

签到题2

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{IO;int T=1;//cin>>T;while(T--){ll a,b,c,d;cin>>a>>b>>c>>d;if(b<c||d<a) cout<<"No\n";else cout<<"Yes\n";}return 0;
}

C - Connect Cities

简单并查集维护连通关系即可

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=500010;
int n,m;
int p[N];
int find(int x)
{return x==p[x]?x:p[x]=find(p[x]);
}
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>m;for(int i=1;i<=n;i++) p[i]=i;while(m--){int a,b;cin>>a>>b;p[find(a)]=find(b);}int res=0;for(int i=1;i<=n;i++)if(i==p[i]) res++;cout<<res-1<<'\n';}return 0;}

D - Flat Subsequence

刚开始把相邻看成整个子序列绝对值差都不大于K,于是先做的E
值域线段树优化dp
状态表示:fif_ifi考虑前iii个数,且选择aia_iai作为子序列结尾的集合。
状态转移:fi=max(fi,fj+1)(∣aj−ai∣≤K)f_i=max(f_i,f_j+1)(|a_j-a_i|\leq K)fi=max(fi,fj+1)(ajaiK)
考虑优化:能够更新fif_ifi必须满足ai−K≤aj≤ai+Ka_i-K\leq a_j\leq a_i+KaiKajai+K,于是考虑权值线段树维护区间,每次把aia_iai打到权值线段树中,值为fif_ifi,然后只需要求区间最值即可。单点修改、区间查询。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=300010;
const ll mod=998244353;
int f[N];
int n,k;
int a[N];
struct node
{int l,r;//值域int val;
}tree[N*4];
void pushup(int u)
{tree[u].val=max(tree[u<<1].val,tree[u<<1|1].val);
}
void build(int u,int l,int r)
{tree[u]={l,r,0};if(l==r) return;int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);
}
void modify(int u,int pos,int val)
{if(tree[u].l==tree[u].r) {tree[u].val=max(tree[u].val,val);return;}int mid=tree[u].l+tree[u].r>>1;if(pos<=mid) modify(u<<1,pos,val);else modify(u<<1|1,pos,val);pushup(u);
}
int query(int u,int l,int r)
{if(tree[u].l>=l&&tree[u].r<=r) return tree[u].val;int mid=tree[u].l+tree[u].r>>1;int v=0;if(l<=mid) v=max(v,query(u<<1,l,r));if(r>mid) v=max(v,query(u<<1|1,l,r));return v;
}
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i];build(1,0,300000);int res=0;for(int i=1;i<=n;i++){int l=max(0,a[i]-k),r=min(300000,a[i]+k);f[i]=1+query(1,l,r);modify(1,a[i],f[i]);res=max(res,f[i]);}cout<<res<<'\n';}return 0;}

E - Replace Digits

线段树维护十进制下的数即可(取模)
预处理num[][]数组,num[i][j]表示iii…i(j个i)iii\dots\ i(j个i)iii i(ji)ten[]数组,ten[i]表示10i10^i10i,注意取模保存,有了这两个数组,区间合并就很好写了。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<queue>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=200010;
const ll mod=998244353;
int n,m;
struct node
{int l,r;ll s;int lazy;
}tree[N*4];
ll ten[N];
ll num[10][N];
void pushup(int u)
{int lenr=tree[u<<1|1].r-tree[u<<1|1].l+1;tree[u].s=(tree[u<<1].s*ten[lenr]%mod+tree[u<<1|1].s)%mod;
}
void build(int u,int l,int r)
{tree[u]={l,r,0,0};if(l==r){tree[u].s=1;return ;}int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);
}
void pushdown(int u)
{if(!tree[u].lazy) return;tree[u<<1].lazy=tree[u<<1|1].lazy=tree[u].lazy;tree[u<<1].s=num[tree[u].lazy][tree[u<<1].r-tree[u<<1].l+1];tree[u<<1|1].s=num[tree[u].lazy][tree[u<<1|1].r-tree[u<<1|1].l+1];tree[u].lazy=0;
}
void modify(int u,int l,int r,int x)
{if(tree[u].l>=l&&tree[u].r<=r){tree[u].s=num[x][tree[u].r-tree[u].l+1];tree[u].lazy=x;return;}pushdown(u);int mid=tree[u].l+tree[u].r>>1;if(l<=mid) modify(u<<1,l,r,x);if(r>mid) modify(u<<1|1,l,r,x);pushup(u);
}
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>m;ten[0]=1;for(int i=1;i<=n;i++) ten[i]=10*ten[i-1]%mod;for(int i=1;i<=9;i++){for(int j=1;j<=n;j++)num[i][j]=(num[i][j-1]*10%mod+i)%mod;}build(1,1,n);while(m--){int l,r,x;cin>>l>>r>>x;modify(1,l,r,x);cout<<tree[1].s<<'\n';}}return 0;}

F - Heights and Pairs

不会多项式,会了可能补

先贴个代码,搞会儿信号与系统晚上再补剩余的QaQ
要加油哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P5319-[BJOI2019]奥术神杖【0/1分数规划,AC自动机,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5319 题目大意 一个长度为nnn的串TTT&#xff0c;用0∼90\sim 90∼9填充所有的...。 然后给出mmm个串和它们的价值。 一个填充方案的价值等于&#xff1a;若TTT中出现了ccc个给出的串&#xff0c;那价值等于它们的价值乘积…

微软向Linux表白: 向Linux社区开放60000多项专利

10 月 10 日&#xff0c;微软在博客中宣布正式加入开放创新网络&#xff08;Open Invention Network, 简称“OIN”&#xff09;&#xff0c;向所有开源专利联盟的成员开放其专利组合。对开源&#xff0c;微软是认真的OIN 的首席执行官 Keith Bergelt 在采访中说道&#xff1a;微…

【线段树】扇形面积并(P3997)

正题 P3997 题目大意 给若干扇形&#xff0c;问你叠了至少k次的面积 解题思路 把园展开&#xff0c;然后用线段树维护每个点的出现次数 当最大次数大于k&#xff0c;用log的时间查找该点&#xff0c;然后计算结果&#xff0c;因为最多只有2*n次查找&#xff0c;所以不会TLE…

Codeforces Round #675 (Div. 2)——F主席树待补?

A - Fence 把凑得那条边当成最长的边&#xff0c;如果abcd那么将会共线&#xff0c;只要稍微abc大一点即可满足四边形。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath…

牛客网dp专题 数位dp

文章目录数位dp例题&#xff1a;NC116652 uva11038 How many 0sNC15035 送分了QAQNC20669 诡异数字NC20665 7的意志NC17385 Beautiful NumbersCF55D NC108918 Beautiful numbers习题&#xff1a;NC17867 明七暗七NC19327 好朋友NC19945 [CQOI2016]手机号码NC20268 [SCOI2009]WI…

YbtOJ#463-序列划分【二分答案,线段树,dp】

正题 题目链接:https://www.ybtoj.com.cn/problem/463 题目大意 给出长度为nnn的序列A,BA,BA,B。要求划分成若干段满足 对于任何i<ji<ji<j&#xff0c;若iii和jjj不是同一段的&#xff0c;要求满足Bi>AjB_i>A_jBi​>Aj​每一段AiA_iAi​的最大值的和不能超…

微软技术大会预览:DevOps顾问是怎样开发自己的产品的

“没有人比我们更懂DevOps”&#xff0c;这句话不是谁都敢说的。从无人问津到整个IT行业趋之若鹜&#xff0c;DevOps火起来也不过是3年的事情&#xff0c;但是leansoftX.com的DevOps资深顾问都是在这个行业已经摸爬滚打了10年的老兵了&#xff0c;从一开始的SDLC&#xff0c;到…

【双指针】Square Pasture G(P7153)

正题 P7153 题目大意 给你平面上的若干点&#xff0c;让你画一个正方形&#xff0c;问框住的点有多少种组合 解题思路 先枚举正方形左右两边的点&#xff0c;然后用双指针计算正方形移动过程中1框住的点 然后把所有点x,y坐标取反&#xff0c;再做一次&#xff0c;这样可以把…

Neat Tree

Neat Tree 题意&#xff1a; n个数&#xff0c;每个区间的贡献为区间内最大值减最小值&#xff0c;问这个n个数的总贡献是多少&#xff1f;也就是n所能组成的所有区间的贡献值之和 题解&#xff1a; 我们可以用单调栈来做 第i个数对答案的贡献值为h[i] * 作为最大值出现的次…

PEACHPIE 0.9.11 版本发布,可以上生产了

PeachPie在官方博客&#xff08;https://www.peachpie.io/2018/10/release-0911-visual-studio.html&#xff09;发布了PeachPie的0.9.11版本 - 用于.NET和.NET Core的PHP编译器和运行时。此更新为项目管理引入了许多新功能&#xff0c;兼容性增强和改进。0.9.11是第一个非预览…

YbtOJ#573-后缀表达【二分图匹配】

正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/2 题目大意 给出一个包含字母变量和若干种同级操作符的后缀表达式。求一个等价的表达式满足该表达式的连续相同段最少。 1≤∣S∣≤25001\leq |S|\leq 25001≤∣S∣≤2500 解题思路 构建出表达树先&#xff0c;…

【DP】Sleeping Cows P(P7154)

正题 P7154 题目大意 有n头牛和n个牛棚&#xff0c;每头牛可以进入体积大于等于该牛的牛棚&#xff0c;当一个所有未进入牛棚的牛都不能再进时&#xff0c;称为极大的匹配&#xff0c;问你有多少种极大的匹配 解题思路 先把牛棚和牛放到一起&#xff0c;然后按体积排序 那么…

[ZJOI2007]棋盘制作

文章目录[ZJOI2007]棋盘制作题意&#xff1a;题解&#xff1a;单调栈代码&#xff1a;悬线法[ZJOI2007]棋盘制作 题意&#xff1a; 选取最大的01相邻的正方形和矩形&#xff0c;输出面积 题解&#xff1a; 单调栈 如图&#xff1a; 左图为题目给的样例&#xff0c;我们要找…

.net core实践系列之SSO-同域实现

前言SSO的系列还是以.Net Core作为实践例子与大家分享&#xff0c;SSO在Web方面复杂度分同域与跨域。本篇先分享同域的设计与实现&#xff0c;跨域将在下篇与大家分享。如有需要调试demo的&#xff0c;可把SSO项目部署为域名http://sso.cg.com/&#xff0c;Web1项目部署为http:…

牛客练习赛 56 E tarjan 割边

A - 小蒟和他的乐谱 签到题&#xff0c;将原序列对 7 取模之后将序列扫描一遍就可以得到答案 不过感觉题目意思还需要理解理解 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<…

YbtOJ#903-染色方案【拉格朗日插值,NTT,分治】

正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/3 题目大意 两个长度为n1n1n1的序列a,ba,ba,b aia_iai​表示涂了iii个格子的可以获得的价值。 bib_ibi​表示恰好用iii种颜色图最多nnn个格子可以获得的总价值。 给出序列bbb&#xff0c;求序列aaa n∈[1,105]n…

【并查集】封锁阳光大学(P1330)

正题 P1330 题目大意 给你一张无向图&#xff0c;问你最少选择多少个点&#xff0c;使得每一条边都有且只有一个端点被选择 解题思路 每一条边只能选一个点&#xff0c;那么考虑对这个图黑白染色 可以用扩展域并查集判二分图&#xff0c;然后两边的点选小的就好了 code #i…

【悬线法】学习总结

【悬线法】学习总结 主要用于求满足某条件的最大矩阵 定义&#xff1a; 一条竖线&#xff0c;竖线的上端点位于矩阵的上边界或是一个障碍点&#xff0c;然后对这条悬线进行左右移动&#xff0c;直到移至障碍点或者是矩阵边界&#xff0c;进行确定这条悬线所在的极大矩阵。 底…

开源硬件论坛,燃烧你的创造力

写在大会前开源融合&#xff1a;比特与原子开源硬件延伸着开源软件的理念&#xff0c;包括硬件设计文件及基于此文件的产品都使用具有开源性质的许可协议&#xff0c;自由使用分享。虽然&#xff0c;从仅开放硬件所配套软件到对硬件本身设计也进行开放的过程&#xff0c;曾经一…

牛客练习赛 55

A - 等火车 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<cmath> #include<queue> #include<string> #include<vector> #include<cstdio> #inclu…