暑假集训CSP提高模拟17

暑假集训CSP提高模拟17

组题人: @joke3579

\(T1\) P222. 符号化方法初探 \(70pts\)

  • 原题: [ABC081D] Non-decreasing

  • 部分分

    • 测试点 \(1\) :输出样例 \(1\)
    • 测试点 \(11 \sim 15\) :由于 \(\{ a \}\) 非负,所以对 \(\{ a \}\) 作前缀和即可。
    • 随机 \(pts\) :乱搞。
  • 正解

    • \(\{ a \}\) 都是负数时,对 \(\{ a \}\) 作后缀和即可。
    • 问题来到了怎么让 \(\{ a \}\) 的符号都相同。
    • \(\{ a \}\) 中绝对值最大的一个数,让其他数都加上这个数即可。
    • 总次数为 \(2n-2\)
    点击查看代码
    int a[100010];
    int main()
    {int n,maxx=0,pos=0,flag=1,i;cin>>n;for(i=1;i<=n;i++){cin>>a[i];if(abs(a[i])>maxx){maxx=abs(a[i]);pos=i;}if(i>=2){flag&=((a[i]>=0&&a[i-1]>=0)||(a[i]<0&&a[i-1]<0));}}if(flag==1){cout<<n-1<<endl;if(a[1]>=0){for(i=2;i<=n;i++){cout<<i-1<<" "<<i<<endl;}}else{for(i=n-1;i>=1;i--){cout<<i+1<<" "<<i<<endl;}}}else{cout<<2*n-2<<endl;for(i=1;i<=n;i++){if(i!=pos){cout<<pos<<" "<<i<<endl;}}if(a[pos]>=0){for(i=2;i<=n;i++){cout<<i-1<<" "<<i<<endl;}}else{for(i=n-1;i>=1;i--){cout<<i+1<<" "<<i<<endl;}}}return 0;
    }
    

\(T2\) P223. 无标号 Sequence 构造 \(40pts\)

  • 原题: luogu P10102 [GDKOI2023 提高组] 矩阵

  • 部分分

    • \(25 \sim 50pts\) :使用 \(O(n^{3})\) 的矩阵乘法暴力判断。
  • 正解

    • 发现仅需要判断相不相等,且只需要找到一个位置不同即可。
    • 考虑随机化,随机选择 \(1\) 个点进行判断的正确率太低,那么我们可以随机一个 \(1 \times n\) 的矩阵 \(D\) ,判断 \(D \times A \times B\) 是否等于 \(D \times C\)
    • 由秩-零化度定理可以知道这样判断错误的概率不超过 \(\frac{1}{998244353}\) ,不放心可以多随几次。
    点击查看代码
    const ll p=998244353;
    int a[3010][3010],b[3010][3010],c[3010][3010],d[2][3010],e[2][3010],f[2][3010];
    int main()
    {ll t,n,flag,i,j,k,h;scanf("%lld",&t);srand(time(0));for(k=1;k<=t;k++){flag=0;scanf("%lld",&n);for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%d",&a[i][j]);}}for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%d",&b[i][j]);}}for(i=1;i<=n;i++){for(j=1;j<=n;j++){scanf("%d",&c[i][j]);}}for(i=1;i<=n;i++){d[1][i]=rand();}for(i=1;i<=1;i++){for(j=1;j<=n;j++){e[i][j]=0;for(h=1;h<=n;h++){e[i][j]=(1ll*e[i][j]+1ll*d[i][h]*a[h][j]%p)%p;}}}for(i=1;i<=1;i++){for(j=1;j<=n;j++){f[i][j]=0;for(h=1;h<=n;h++){f[i][j]=(1ll*f[i][j]+1ll*e[i][h]*b[h][j]%p)%p;}}}for(i=1;i<=1;i++){for(j=1;j<=n;j++){e[i][j]=0;for(h=1;h<=n;h++){e[i][j]=(1ll*e[i][j]+1ll*d[i][h]*c[h][j]%p)%p;}}}for(i=1;i<=1;i++){for(j=1;j<=n;j++){if(e[i][j]!=f[i][j]){flag=1;break;}}if(flag==1){break;}}if(flag==1){printf("No\n");}else{printf("Yes\n");}}return 0;
    }
    

\(T3\) P224. 无标号 Multiset 构造 \(5pts\)

  • 部分分
    • \(5pts\) :输出样例 \(1\)
  • 正解

\(T4\) P225. 有限制的构造 \(40pts\)

  • 原题: [ABC364E] Maximum Glutton
  • 考虑求出要求玩过的游戏的画面质量之和 \(\le A\) 且不可玩度之和 \(\le B\) 的最多游戏数,然后多玩一个即可(若还有剩的)。
  • 部分分
    • \(25 \sim 40pts\) :设 \(f_{i,j,k}\) 表示处理到第 \(i\) 个游戏时玩过的游戏的画面质量之和 \(\le j\) 且不可玩度之和 \(\le k\) 的最多游戏数,状态转移方程为 \(f_{i,j,k}=\max(f_{i-1,j,k},f_{i-1,j-a_{i},k-b_{i}}+1)\),跑一遍二维 \(01\) 背包 \(DP\) ,稍微压一下空间。

      点击查看代码
      int w[100],v[100];
      short f[10010][6510];
      int main()
      {int n,a,b,i,j,k;short sum;cin>>n>>a>>b;for(i=1;i<=n;i++){cin>>w[i]>>v[i];if(a<b){swap(w[i],v[i]);}}if(a<b){swap(a,b);}for(i=1;i<=n;i++){for(j=a;j>=w[i];j--){for(k=b;k>=v[i];k--){sum=f[j-w[i]][k-v[i]]+1;f[j][k]=max(f[j][k],sum);}}}cout<<f[a][b]+(f[a][b]!=n)<<endl;return 0;
      }
      
  • 正解
    • 由 AT_dp_e Knapsack 2 | CF922E Birds 的经验,考虑优化状态设计。

    • \(f_{i,j,k}\) 表示前 \(i\) 个游戏中玩了 \(j\) 个游戏,画面质量之和 \(\le k\) 时不可玩度之和的最小值,状态转移方程为 \(f_{i,j,k}=\min(f_{i-1,j,k},f_{i-1,j-1,k-a_{i}}+b_{i})\)

      点击查看代码
      int w[100],v[100],f[2][100][10010];
      int main()
      {int n,a,b,i,j,k;cin>>n>>a>>b;memset(f,0x3f,sizeof(f));for(i=1;i<=n;i++){cin>>w[i]>>v[i];}f[0][0][0]=0;for(i=1;i<=n;i++){for(j=0;j<=i;j++){for(k=0;k<=a;k++){f[i&1][j][k]=f[(i-1)&1][j][k];if(j-1>=0&&k-w[i]>=0){f[i&1][j][k]=min(f[i&1][j][k],f[(i-1)&1][j-1][k-w[i]]+v[i]);}}}}for(i=n;i>=0;i--){for(k=0;k<=a;k++){if(f[n&1][i][k]<=b){cout<<i+(i!=n)<<endl;return 0;}}}
      }
      

总结

后记

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

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

相关文章

一款.NET开发的AI无损放大工具

前言 今天大姚给大家分享一款由.NET开源(GPL-3.0 license)、基于腾讯ARC Lab提供的Real-ESRGAN模型开发的AI无损放大工具:AI-Lossless-Zoomer。Real-ESRGAN模型专注于人像和动漫图片的高质量无损放大。项目功能 支持多线程处理、批量图片处理、设置选项、自定义输出格式和自…

Java知识点1

Java知识点 什么是字节码?采用字节码的好处是什么? 在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。字节码…

Python-快速语法参考-全-

Python 快速语法参考(全)原文:The Python Quick Syntax Reference 协议:CC BY-NC-SA 4.0零、简介 Python 提供的最好的东西之一是一个广泛的标准库,它提供了广泛的包含特性,从网络功能、数据库处理和 XML 处理一直到 zip 文件处理。有数百个额外的库扩展了 Python 的能力…

最小斯坦纳树(动态规划求解+原创讲解细节)

最小斯坦纳树给定点的“最小生成树”问题。背景 给定无向连通图 \(G=(V,E)\),给出包含 \(k\) 个结点的点集 \(S\),包含点集 \(S\) 的连通图被称作 斯坦纳树。但我们关注的是如何求出包含点集 \(S\) 的最小连通图 \(G=(V,E)\) 即 最小斯坦纳树。其中\(S\subseteq V,E\subseteq…

Convert类型转换

static void Main(string[] args){//Convert转换:不同数据类型之间的转换;//大前提: 面儿上一定要过得去Console.WriteLine("请输入你的姓名:");string strName = Console.ReadLine();Console.WriteLine("请输入你的数学成绩:");double douMath = Convert.…

python程序代码这样加密保护,你觉得可以吗?

python程序代码很容易反编译,下面我体验了pyhton代码保护的好方法,方案支持windows与Linux系统,下面以linux系统为例进行加密演示。 下载最新Linux平台开发工具包http://chinadlp.com/?list-DriveDownload.html 拷贝到有桌面的Ubuntu系统中 解压:tar -xzf Sentinel-LDK.ta…

win+jenkins+git+allure+tomcat+jdk部署(万人坑)

万人坑:之所以叫万人坑,是一些网站真的是非常非常非常坑,且不说按照他们的方法一次都没成功,还遇到了各种千奇百怪的问题,浪费了本人3.1415926h的时间,真想给他们竖起一个超大号的倒拇指。下面开始踩坑之路! 一.本地环境 jdk:1.8 tomcat:8.5.59 jenkins:2.264 git:2…

stm32寄存器工程创建

一、 寄存器需要库的文件如下,可以从库函数开发里直接拷贝。STM32F40_41xxx记得要把库路径添加进去,否则会报错

005.Vue3入门,使用绑定属性时,绑定多个自定义属性

1、代码如下:<template><div v-bind:id="myId1" v-bind:class="testCls" v-bind="objAttrs">测试1</div> </template><script> export default {data() {return {testCls: "appclass",myId1: "ap…

004.Vue3入门,使用绑定属性时undefined和disabled用法

1、代码如下:<template><div v-bind:id="myId1" v-bind:class="testCls">测试1</div><div v-bind:id="myId2" v-bind:title="testTitle">测试2</div><div :id="myId3" :class="test…

next.js本地开发https实现

很奇怪的需求,本地开发一般都是http://localhost:3000,但有些情况需要https://localhost:3000来debug,这类需求估计比较少,我看使用next.js的中文教程也比较少,这里记录一下。 网上很多找到的教程都是自己去转一堆软件和依赖,还要分Mac和Windows,看着就头疼,这个实现方…

开源图片编辑器的插件化架构

大家好,我是开源图片编辑器的作者,在开发图片编辑器的过程中,因为一些功能无法扩展,出现过一次较大的重构,将整个编辑器改为了插件化的架构,经历过这次重构,规范了编辑器功能的扩展方式,解决了项目里很多重要的问题。 如果你也在做类似的项目,或者对图片编辑器架构比较…