csp-202203

article/2025/10/5 11:14:06

202203

  • 题目一:未初始化警告【100分】
  • 题目二:出行计划【100分】
  • 题目三:计算资源调度器 【100分】

题目一:未初始化警告【100分】

简单数组操作题

#include<iostream>
using namespace std;
int n,k;
bool ready[10000000];
int main()
{cin>>n>>k;int sum=0;for(int i=0;i<k;i++){int l,r;cin>>l>>r;if(r!=0&&!ready[r])  //是常量并且没出现过 {sum++;}ready[l]=true;}cout<<sum; return 0;
}

题目二:出行计划【100分】

  1. 自己没想到用差分,暴力拿了70,尝试用二分先查找大于等于当前值的最小任务开始时间,但是虽然优化了一部分,整体来看还是O(n^2)的时间复杂度,还是超时
  2. 数组下标不一定就是题目中的序号,也可以是具体的数值,比如题目中的正数时间,基本的差分问题都需要将数据作为数组下标
  3. 跳出基本思维,不从每一次做核酸的时间出发,从这个点出发,每得到一个做核酸时间就要遍历所有的任务,看这个时间做了核酸以后,哪些任务能够出行,时间复杂度就必定为O(n^2)
  4. 从每个任务出发,求出正常出行当前任务,哪些时间做核酸是可以的,那么就对这些整数时间都加上一,表示这些时间点做核酸就能出行当前任务,最后直接对每个做核酸的时间点,直接输出能正常出行的任务数即可
    在这里插入图片描述
    参考了这个大佬博主的思路,并借用了他的图,原文写得很好
    CCF 出行计划(满分代码 + 解题思路)2022-03-2

70分暴力代码:

#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int n,m,k;
typedef pair<int,int>PII;
vector<PII>time;
int main()
{scanf("%d %d %d",&n,&m,&k);for(int i=0;i<n;i++){int ti,ci;scanf("%d %d",&ti,&ci);time.push_back({ti,ci});}for(int i=0;i<m;i++){int q;scanf("%d",&q);int sum=0;for(int j=0;j<time.size();j++){if(q+k<=time[j].first&&time[j].first<=q+k+time[j].second-1){sum++;}}printf("%d\n",sum);}return 0;
} 

AC100分代码:

#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int n,m,k;
typedef pair<int,int>PII;
vector<PII>time;
const int N=200005;
int a[N];
int s[N];
int main()
{scanf("%d %d %d",&n,&m,&k);for(int i=0;i<n;i++){int ti,ci;scanf("%d %d",&ti,&ci);time.push_back({ti,ci});}int len=time.size();for(int j=0;j<len;j++){int l=max(time[j].first-k-time[j].second+1,0);int r=max(time[j].first-k,0);a[l]+=1;a[r+1]-=1;}for(int j=0;j<N;j++){s[j]=s[j-1]+a[j];}for(int i=0;i<m;i++){int q;scanf("%d",&q);printf("%d\n",s[q]);}return 0;
} 

进行区间操作的时候想着前缀和和差分
听说第二题经常考差分问题

题目三:计算资源调度器 【100分】

  1. 拿着这个题都心生畏惧,好长,考验我的阅读能力,本来想不做的,但是想着题目越长没准就越简单,题目短的,考难的算法才更难受,硬着头皮上
  2. 大模拟题,在草稿纸上整理了思路,认真读题,尽量将题目记住,并且将有些信息消化理解成自己的解题方式,草稿纸上跟着样例解析跑一遍样例
  3. 一开始并不用着急想明白整个题目所需要的数据结构是什么,一边做一边寻思需要哪些数组来存储些什么信息,不断地模拟求样例的过程,最后再调试改错,一边模拟一边写代码注释,因为代码一般都会比较长
  4. 有些大模拟题,并且样例很复杂的,如果代码能将样例正确运行出来基本就能过了,所以一定要认真分析样例信息,数据量小,超时问题稍微注意一下就行,不用特别在意,像那种分几个层次的数据量的时候肯定会涉及超时优化

一次过,大模拟题的过程很艰难,但是静下心来认真做,结果还不错
在这里插入图片描述
AC代码:

#include<iostream>
#include<vector>
#include<set>
using namespace std;
const int INF=100000000;
int n,m,g;
int fi,ai,nai,pai,paai,paari;
vector<int>jiedian[1005];   //每个区里面有哪些结点 
multiset<int>renwu[1005];    //每个计算节点中有哪些应用的任务 
vector<int>temp;    //暂时保存满足节点亲和和任务亲和的结点编号
set<int>qu_ying[1005];    //每个区里有哪些应用
int jie_qu[1005];   //每个节点所在的区 
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){int t;cin>>t;jiedian[t].push_back(i);	jie_qu[i]=t;}cin>>g;for(int i=0;i<g;i++){cin>>fi>>ai>>nai>>pai>>paai>>paari;if(nai&&jiedian[nai].size()==0)//结点亲和性,必须分配在某个区,但是该区又没有计算节点 {for(int j=0;j<fi;j++) cout<<0<<" ";cout<<endl;continue;}for(int j=0;j<fi;j++)  //为每个任务分配节点,一个一个地分配 {if(nai)   //限制了某个区 {if(pai&&qu_ying[nai].count(pai)) //限制了该区必须有某个应用temp=jiedian[nai];  else if(!pai) temp.insert(temp.end(),jiedian[nai].begin(),jiedian[nai].end());}else   //不限制某个区 {for(int k=1;k<=m;k++)    //遍历所有的区 {if(pai&&qu_ying[k].count(pai))  //任务亲和性,必须和指定的应用分配在同一个区 {temp.insert(temp.end(),jiedian[k].begin(),jiedian[k].end());	} else if(!pai)  //没有任务亲和要求temp.insert(temp.end(),jiedian[k].begin(),jiedian[k].end());}}if(temp.size()==0)  {cout<<0<<" ";continue;}int ans=INF;int min_size=INF;int len=temp.size();  //所有满足节点亲和和任务亲和的节点 if(paai)   //有反亲和性要求 {for(int j=0;j<len;j++){if(!renwu[temp[j]].count(paai))  //要求任务反亲和并且不包含指定的应用 {if(renwu[temp[j]].size()<min_size)  //找任务数量最少的结点 {ans=temp[j];min_size=renwu[temp[j]].size();}else if(renwu[temp[j]].size()==min_size)  //要编号小的 {if(temp[j]<ans)  ans=temp[j];}}}}else  {for(int j=0;j<len;j++){if(renwu[temp[j]].size()<min_size)  //找任务数量最少的结点 {ans=temp[j];min_size=renwu[temp[j]].size();}else if(renwu[temp[j]].size()==min_size)  //要编号小的 {if(temp[j]<ans)  ans=temp[j];}}} if(ans!=INF) //找到了合适的计算节点{cout<<ans<<" ";renwu[ans].insert(ai);  //当前应用的任务加到节点中去 qu_ying[jie_qu[ans]].insert(ai);     //当前应用加到对应的区中 } else if(paai&&paari==0)  //尽量满足反亲和性,去掉反亲和性 {for(int j=0;j<len;j++){if(renwu[temp[j]].size()<min_size)  //找任务数量最少的结点 {ans=temp[j];min_size=renwu[temp[j]].size();}else if(renwu[temp[j]].size()==min_size)  //要编号小的 {if(temp[j]<ans)  ans=temp[j];}}if(ans!=INF) //找到了合适的计算节点{cout<<ans<<" ";renwu[ans].insert(ai);  //当前应用的任务加到节点中去 qu_ying[jie_qu[ans]].insert(ai);     //当前应用加到对应的区中 }} else	cout<<0<<" ";temp.clear();	} cout<<endl;}return 0;
} 

http://chatgpt.dhexx.cn/article/xjhOxFHe.shtml

相关文章

【CS231n系列】

Stanford-cs231n课程学习笔记&#xff08;一&#xff09; Stanford课程原版是英文&#xff0c;奈何本人英语菜的一批。原版网站放在下面&#xff0c;xdm可以多多学习。BUT&#xff01; B站up<同济子豪兄>yyds好吧&#xff01;&#xff01;&#xff01; Stanford231n 文章…

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

向AI转型的程序员都关注了这个号&#x1f447;&#x1f447;&#x1f447; 机器学习AI算法工程 公众号&#xff1a; datayx 作为全球计算机四大名校之一&#xff0c;斯坦福大学的CS230《深度学习》课程一直受到全球计算机学子和从业人员的热烈欢迎。 CS230授课人为全球著名计算…

CS230学习笔记(一)

CS230学习笔记(一) 1.前言 ok&#xff0c;前思后想&#xff0c;左思右想&#xff0c;我还是觉得自己得督促一下自己&#xff0c;所以&#xff0c;我觉得开始更新cs230的笔记&#xff0c;当然&#xff0c;我前面的六篇pytorch学习笔记我是不会放着不管的&#xff0c;后面肯定会…

目标检测(CS230)

内容来自CS230课程。 目录 目标定位&#xff08;Object localization&#xff09; 特征点检测&#xff08;Landmark detection&#xff09; 基于滑动窗口的目标检测算法 滑动窗口的卷积实现 &#xff08;Convolutional implementation of sliding windows&#xff09; 网络中的…

PHP配置环境变量

1.找到“高级系统设置”&#xff08;二选一的方法找到环境变量&#xff09; ① 我的电脑-属性-高级-环境变量 ②win8,10 直接在搜索框搜 “查看高级系统设置”-环境变量 2.找到变量"Path" ①加上 “E:\phpStudy\PHPTutorial\php\php-7.0.12-nts” &#xff08;php.e…

PHPstudy 设置PHP为环境变量

1.首先启动phpstudy点击‘切换版本’查看当前使用环境的php版本 2.在右键点击桌面的phpstudy图标进入文件夹位置 2.点击PHPTutorial->PHP 3.点击你的开发版本的php文件&#xff0c;我们会看到php.exe文件&#xff0c;复制当前文件位置路径 4.右键点击计算机或者我的电脑选择…

windows环境下设置多个PHP版本的环境变量

windows环境下设置多个PHP版本的环境变量 所在位置修改系统变量修改用户变量重启电脑 所在位置 我的电脑->属性->高级系统设置->高级->环境变量 根据图示&#xff0c;找到相应的变量 修改系统变量 环境变量->系统变量->Path 系统变量&#xff1a;把两个…

windows10的PHP环境变量

win10 环境变量配置 如何在命令行运行php文件 1.配置环境变量 2.进入php所在路径 然后输入 php 文件路径/文件名 即可 参考文献&#xff1a; https://blog.csdn.net/QQ2542920524/article/details/78692116

Windows环境下,PHPStudy设置环境变量

win7系统设置环境变量 1、选中计算机&#xff0c;点击 鼠标右键&#xff0c;选择属性 2、选择高级系统设置&#xff0c;打开&#xff0c;打开后选择高级&#xff0c;然后就能看到环境变量 3、打开环境变量&#xff0c;查找Path &#xff0c;选中path&#xff0c;再点击编辑即可…

【PHP】配置环境变量,查看php版本(保姆级图文)

目录 配置环境变量找到php所在的目录&#xff08;有一个php.exe文件&#xff09;环境变量path中添加重启电脑&#xff08;可选&#xff09; 查看php版本&#xff08;检测是否成功配置了php&#xff09;总结 『PHP』分享PHP环境配置到项目实战个人学习笔记。 欢迎关注 『PHP』 系…

windows中设置php环境变量

1.我的电脑-》右键&#xff08;选择我的属性&#xff09; 2.点击高级设置 3.点击环境变量 4.在系统变量中找到Path 点击 5.找到php.exe的文件目录&#xff0c;添加到path中 6.php -v 显示版本&#xff0c;表示成功

Linux有多个php版本的时候指定php版本设置环境变量

最近在安装swoole的时候老是出错&#xff0c;安装完成以后再php-m中能看到swoole扩展已经开启&#xff0c;而在 phpinfo中却看不到。查看了下php.ini的位置发现这两个指向的路径不同。查看了下安装的php有两个版本&#xff0c;一个是自带的在/usr/bin/php&#xff0c;一个是自己…

windows设置php环境变量

1、找到要设置的php版本路径,然后进行复制 2、添加环境变量&#xff08;控制面板->高级系统设置->环境变量->最上方的李硕的系统变量Path->新增两条php路径即可&#xff09; 3、打开cmd输入php-v 即可查看添加的php版本信息 最后问题没有解决的话&#xff0c;或者有…

配置windows系统中 PHP的环境变量

1&#xff0e; 首先到php官网下载php-5.3.6-nts-Win32-VC9-x86.ZIP 解压到电脑硬盘。将文件解压到文件夹php5.3.6 下载地址&#xff1a;http://www.php.net/downloads.php 2&#xff0e; 将解压后的php5.3.6文件夹放到E:\Program Files文件夹下面 3&#xff0e; php目录下的“p…

w11 php 环境变量

PHP 安装 解压完成后 进入目录 php -v 得到版本号就OK&#xff0c;配置环境变量 安装composer 全部下一步就可以了 命令行中 composer 出现composer版本号安装没问题&#xff0c;如果没有从新找下 加入到环境变量中&#xff0c;如果还不行&#xff0c;就重新安装 更新 co…

Windows 系统配置 PHP 环境变量(PhpStudy集成环境)

打开系统的【高级系统设置】&#xff0c;点击【环境变量】。 选择【系统变量】中的【Path】&#xff0c;点击编辑。 点击【新建】&#xff0c;填入当前 PHP 版本 php.exe 所在目录&#xff0c;点击确定。 验证有效性 打开命令行窗口&#xff0c;输入 php -v 查看。 出现 PHP 的…

windows下设置PHP环境变量

# 安装php # 扩展 mysql 、gd、sockets &#xff08;我的是已安装好的wamp&#xff09; #在php目录下的、打开php.ini 去掉下面注释&#xff08;前面的分号&#xff09; ; On windows: ; extension_dir "ext" #添加环境变量 win7为:右击计算机-属性-高级系统设…

为php设置系统变量、环境变量

看到这个标题&#xff0c;有两个疑问&#xff0c;是给php.exe设置系统环境变量&#xff0c;还是给编程语言设置可直接调用环境变量&#xff0c;说到这里有的人可能晕了&#xff0c;因为我们常见到的都是第一种&#xff0c;相当于给某个命令设置快捷键&#xff0c;不用进到安装该…

配置php环境变量及其作用

未配置PHP环境变量 一般情况下&#xff0c;在使用php时&#xff0c;不需要配置环境变量&#xff0c;只要在PHP.ini指定扩展的组件dll的ext路径和include环境路径即可&#xff0c;但cmd命令行在其他目录下运行php会报错。 配置PHP环境变量 配置环境变量&#xff0c;我们可以轻松…

Java IO操作详解

在Java编程中&#xff0c;IO&#xff08;输入输出&#xff09;是重要的组成部分&#xff0c;Java应用常常需要从外界输入数据或者把数据输出到外界。 Java IO的核心用一句话概括&#xff1a;抽象类或接口之中的抽象方法会根据实例化子类的不同&#xff0c;会完成不同的功能。所…