首页 > 其他分享 >暑假集训CSP提高模拟16

暑假集训CSP提高模拟16

时间:2024-08-08 14:55:05浏览次数:6  
标签:CSP 16 int max sum pos 200010 ans 集训

暑假集训CSP提高模拟16

组题人: @Muel_imj

\(T1\) P216. 九次九日九重色 \(100pts\)

  • 部分分
    • \(30pts\) :设 \(f_{i,j}\) 表示当前处理到 \(P\) 的第 \(i\) 位,\(Q\) 的第 \(j\) 位时最大的 \(k\) ,状态转移方程为 \(f_{i,j}=\begin{cases} \max(f_{i,j-1},f_{i-1,j}) & p_{i} \nmid q_{j} \\ \max(f_{i,j-1},f_{i-1,j},f_{i-1,j-1}+1) & p_{i}|q_{j} \end{cases}\) 。最终,有 \(f_{n,n}\) 即为所求。
  • 正解
    • 尝试转化到最长公共子序列上去。

    • 发现能对答案产生贡献的只有 \(p_{i}|q_{j}\) 的关键点,对关键点的转移只有 \(f_{i-1,j-1}\) 有用。

    • 记录关键点的位置,树状数组维护前缀 \(\max\) 即可,做法同 luogu P4303 [AHOI2006] 基因匹配

      点击查看代码
      int p[200010],q[200010],f[200010];
      vector<int>pos[200010];
      struct BIT
      {
      	int c[200010];
      	int lowbit(int x)
      	{
      		return(x&(-x));
      	}
      	void add(int n,int x,int val)
      	{
      		for(int i=x;i<=n;i+=lowbit(i))
      		{
      			c[i]=max(c[i],val);
      		}
      	}
      	int getsum(int x)
      	{
      		int ans=0;
      		for(int i=x;i>=1;i-=lowbit(i))
      		{
      			ans=max(ans,c[i]);
      		}
      		return ans;
      	}
      }T;
      int main()
      {
      	int n,ans=0,i,j;
      	cin>>n;
      	for(i=1;i<=n;i++)
      	{
      		cin>>p[i];
      		for(j=1;j*p[i]<=n;j++)
      		{
      			pos[j*p[i]].push_back(i);
      		}
      	}
      	for(i=1;i<=n;i++)
      	{
      		cin>>q[i];
      	}
      	for(i=1;i<=n;i++)
      	{
      		if(pos[q[i]].size()>=1)
      		{
      			for(j=pos[q[i]].size()-1;j>=0;j--)//防止有后效性
      			{
      				f[pos[q[i]][j]]=T.getsum(pos[q[i]][j]-1)+1;//因为转移过程是单调不降的,所以不用取 max
      				T.add(n,pos[q[i]][j],f[pos[q[i]][j]]);
      			}
      		}
      	}
      	for(i=1;i<=n;i++)
      	{
      		ans=max(ans,f[i]);
      	}
      	cout<<ans<<endl;
      	return 0;
      }
      
    • 官方题解写的也很抽象,挂一下吧。

\(T2\) P217. 天色天歌天籁音 \(80pts\)

  • 原题: luogu P3709 大爷的字符串题

  • 部分分

    • \(10pts\) :输出 \(-1\) 。

  • 正解

    • 懒得复制一遍了,直接粘自己当时写的 题解链接 了。

      点击查看代码
      int a[200010],b[200010],pos[200010],L[200010],R[200010],ans[200010],num[200010],cnt[200010],klen,ksum;
      struct ask
      {
      	int l,r,id;
      }q[200010];
      bool q_cmp(ask a,ask b)
      {
      	return (pos[a.l]==pos[b.l])?((pos[a.l]%2==1)?(a.r<b.r):(a.r>b.r)):(a.l<b.l);
      }
      void init(int n,int m)
      {
      	klen=n/sqrt(m)+1;
      	ksum=n/klen;
      	for(int i=1;i<=ksum;i++)
      	{
      		L[i]=R[i-1]+1;
      		R[i]=R[i-1]+klen;
      	}
      	if(R[ksum]<n)
      	{
      		ksum++;
      		L[ksum]=R[ksum-1]+1;
      		R[ksum]=n;
      	}
      	for(int i=1;i<=ksum;i++)
      	{
      		for(int j=L[i];j<=R[i];j++)
      		{
      			pos[j]=i;
      		}
      	}
      }
      void add(int x,int &sum)
      {
      	num[cnt[a[x]]]--;
      	cnt[a[x]]++;
      	num[cnt[a[x]]]++;
      	sum=max(sum,cnt[a[x]]);
      }
      void del(int x,int &sum)
      {
      	num[cnt[a[x]]]--;
      	sum-=(sum==cnt[a[x]]&&num[cnt[a[x]]]==0);
      	cnt[a[x]]--;
      	num[cnt[a[x]]]++;
      }
      int main()
      {
      	int n,m,l=1,r=0,sum=0,i;
      	cin>>n>>m;
      	for(i=1;i<=n;i++)
      	{
      		cin>>a[i];
      		b[i]=a[i];
      	}
      	sort(b+1,b+1+n);
      	b[0]=unique(b+1,b+1+n)-(b+1);
      	for(i=1;i<=n;i++)
      	{
      		a[i]=lower_bound(b+1,b+1+b[0],a[i])-b;
      	}
      	init(n,m);
      	for(i=1;i<=m;i++)
      	{
      		cin>>q[i].l>>q[i].r;
      		q[i].id=i;
      	}
      	sort(q+1,q+1+m,q_cmp);
      	for(i=1;i<=m;i++)
      	{
      		while(l>q[i].l)
      		{
      			l--;
      			add(l,sum);
      		}
      		while(r<q[i].r)
      		{
      			r++;
      			add(r,sum);
      		}
      		while(l<q[i].l) 
      		{
      			del(l,sum);
      			l++;
      		}
      		while(r>q[i].r)
      		{
      			del(r,sum);
      			r--;
      		}
      		ans[q[i].id]=-sum;
      	}
      	for(i=1;i<=m;i++)
      	{
      		cout<<ans[i]<<endl;
      	}
      	return 0;
      }
      

\(T3\) P218. 春色春恋春熙风 \(20pts\)

  • 原题: CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
  • 字符重排后可以形成回文串当且仅当至多有一个字符的出现次数为奇数。
  • 部分分
    • \(20pts\) :\(O(n^{2}|\sum|)\) 预处理出任意两点间是否存在「春」,转成 \(DFS\) 序后查询时等价于查询一个矩阵的最大值,暴力枚举即可。

\(T4\) P219. 雪色雪花雪余痕 \(10pts\)

  • 部分分
    • \(10pts\) :暴搜。
  • 正解
    • 移项有 \(a_{i}-a_{i-1} \le a_{i+1}-a_{i}\) 。
    • 得到差分序列 \(\begin{cases} b_{1}=a_{1} \\ b_{i}=a_{i}-a_{i-1}(i \in [2,n-1]) \end{cases}\) ,此时通过统计差分序列 \(\{\}\) 的个数一定程度上可以反映 \(a\) 的个数。
    • 题意转化为求 \(\sum\limits_{i=1}^{n-1}b_{i}(n-i+1)=m\) 且 \(\forall i \in [2,n-2],b_{i} \le b_{i+1}\) 的个数。

总结

  • 赛时历程:莫名觉得 \(T1\) 不可做,所以先开 \(T2\) 。\(20 \min\) 码完怕拿首切没敢立刻交,大样例过了就没管。然后写 \(T3,T4\) 的部分分。给 \(T1\) 留了 \(1h+40 \min\) 的时间,结果想 \(40pts\) 的部分分就想了 \(30 \min\) ,然后在犹豫能不能和最长公共子序列一个做法,改完后发现过样例了就交上去了。
  • \(T2\) \(n,m\) 写反了,挂了 \(20pts\) 。

后记

  • \(T2\) 改后的题面还是很抽象。

标签:CSP,16,int,max,sum,pos,200010,ans,集训
From: https://www.cnblogs.com/The-Shadow-Dragon/p/18348962

相关文章

  • SublimeText 4.4169 中文授权版
    SublimeText是编辑器中的一款神级IDE,非常有名,虽然比较轻量,但是呢软件拓展性非常强大,适用于多种编程语言,当然,当一个编辑器,也是非常不错的。SublimeText支持但不限于C,C++,C#,CSS,D,Erlang,HTML,Groovy,Haskell,HTML,Java,JavaScript,LaTeX,Lisp,Lua,Markdown,......
  • [CSP-J 2023] 小苹果
    [CSP-J2023]小苹果【官方数据】题目描述小Y的桌子上放着 nn 个苹果从左到右排成一列,编号为从 11 到 nn。小苞是小Y的好朋友,每天她都会从中拿走一些苹果。每天在拿的时候,小苞都是从左侧第 11 个苹果开始、每隔 22 个苹果拿走 11 个苹果。随后小苞会将剩下......
  • [CSP-S 2023] 密码锁
    题目描述小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从 00 到 99 的数字。每个拨圈都是从 00 到 99 的循环,即 99 拨动一个位置后可以变成 00 或 88,因为校园里比较安全,小Y采用的锁车方式是:从正确密码开始,随机转动密码锁仅一次;每次都是以某个幅度仅转......
  • 169.254.x.x是什么地址
    ‌APIPA169.254.x.x地址是一个特殊的IP地址范围,被称为“APIPA”(AutomaticPrivateIPAddressing)地址,主要用于在网络通信设置不当时确保最基本的计算机网络连接性。这种地址是由操作系统自动分配给计算机的私有IP地址,当计算机无法通过‌DHCP(动态主机配置协议)服务......
  • 预训练大语言模型综述来了!中国人民大学教授发表包含了416个参考文献的大语言模型综述
    尽管大语言模型在最近今年发展十分迅速,但是相关的综述却相对比较落后。本文是由中国人民大学教授WayneXinZhao等人前几天刚公开的关于大语言模型的综述,论文正文部分共32页,包含了416个参考文献。内容十分详实。这份大模型综述我已经打包好了,还有完整版的大模型AI学习资......
  • 【题解】Solution Set - NOIP2024集训Day2 线段树
    【题解】SolutionSet-NOIP2024集训Day2线段树https://www.becoder.com.cn/contest/5431「CF1149C」TreeGenerator™结论:对于括号序列的一个子段,删去所有的匹配括号之后,剩下的不匹配的括号,按顺序构成树上的一条路径。Why?从括号序列的构造出发。每次(相当于开始遍历......
  • Xcode16升级后,如何直接安装iOS 18 Simulator
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!! 苹果官方下载链接:【操作系统OperatingSystems】:https://developer.apple.com/download/【应用Applications】:https://developer.apple.com/download/applications/【描述文件Pr......
  • 【愚公系列】《微信小程序开发解析》016-位置API
    ......
  • CSP初赛知识点讲解(二)
    CSP初赛知识点讲解(二)进制转换基本定义n进制转十进制十进制转n进制n进制转m进制小数的进制转换例题训练(四)进制转换基本定义十进制:逢十进一(包含数字0~9)(365......
  • (未完工)Contest7516 - 平面图
    Contest笔记欧拉定理欧拉定理连通平面图满足\(V-E+F=2\)。有\(C\)个连通块的平面图满足\(V-E+F=C+1\)。简单连通平面图满足\(E\le3V-6\)。重要:平面图满足\(E=O(V)\)。可以用于证明\(K_5\)不是平面图。一个\(V\ge3\)的简单连通平......