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;
}

csp-202203相关推荐

  1. CSP 202203 题解:未初始化警告,出行计划,计算资源调度器,通信系统管理,博弈论与石子合并

    试题内容请前往CCF官网查看: CCF-CSP计算机软件能力认证考试 http://118.190.20.162/home.page CCF 官方题解请点击这里. 阅读本题解前,您应当了解下列知识: ...

  2. CCF CSP 201609-2 火车购票

    题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...

  3. Go 分布式学习利器(19)-- Go并发编程 之 CSP(communicating sequential processes) 机制

    文章目录 前言 CSP 特点 CSP代码 演示 1. 正常流程的代码 2. CSP 未设置buffer 代码 3. 设置指定大小的channel buffer 总结 前言 CSP 这个名词大家会比较陌 ...

  4. 考csp所需算法_CSP vs RxJS:您所不知道的。

    考csp所需算法 by Kevin Ghadyani 通过凯文·加迪亚尼(Kevin Ghadyani) CSP vs RxJS:您所不知道的. (CSP vs RxJS: what you don' ...

  5. CSP浏览器安全策略备忘

    挺久之前过了一遍CSP的安全策略,很多人把它喻为XSS攻击的终结者,因为这种策略不再像传统只靠各种正则和特征匹配来识别跨站攻击Payload,而是直接从协议层把一些存在安全隐患的用法默认给干掉了,把同 ...

  6. 计算机方面特长特招进北大,成为科技特长生并不难,CSP普及组三等奖就可以

    每一步,与世界同步 5月18日,人大附中发布<2021年高中入学科技特长生招生简章>. 在这份<招生简章>中,值得注意的有4点: 科技特长生增加了40%的名额: 招生范围从海淀 ...

  7. 周期同步位置模式(CSP),轮廓位置模式(PPM),位置模式(PM)

    什么是运动控制? 运动控制就是通过机械传动装置对运动部件的位置.速度进行实时的控制管理,使运动部件按照预期的轨迹和规定的运动参数(如速度.加速度参数等)完成相应的动作. 运动控制系统的典型构成 1. ...

  8. CSP:CSP认证考试:202012-1(期末预测之安全指数)满分答案,Java版

    CSP:CSP认证考试:202012-1(期末预测之安全指数)满分答案,Java版 一.题目: 二.Java满分答案 import java.util.Scanner;public class Mai ...

  9. CSP:CSP认证考试:202104-1(灰度直方图)满分答案,Java版

    CSP:CSP认证考试:202104-1(灰度直方图)满分答案,Java版 一.题目: 二.Java满分答案 import java.util.ArrayList; import java.util. ...

  10. CSP:CSP认证考试:202109-2(非零段划分)70分答案,Java版

    CSP:CSP认证考试:202109-2(非零段划分)70分答案,Java版 一.题目: 二.Java70分答案 import java.util.ArrayList; import java.uti ...

最新文章

  1. 为分支机构和移动人员实施路由的导图
  2. jQuery源码学习(1)——addClass
  3. vc 添加打开文件对话框并读取文件
  4. 删除logs mysql_关于删除MySQL Logs的问题记录_MySQL
  5. 容斥原理应用(求1~r中有多少个数与n互素)
  6. space index.php 7-14,disk_free_space()
  7. 编译Mysql 5.5时报do_abi_check错误
  8. 一道微软Python面试题(文末附python教程丶电子书资料分享)
  9. 2017 开源软件排行_2017年最佳开源教程
  10. Elasticsearch--进阶-filter过滤---全文检索引擎ElasticSearch工作笔记014
  11. vscode中文_VS Code 中文社区正式成立啦!VS Code Day 圆满落幕!
  12. 高质量前端资源周刊(第三十周)
  13. autocad不能画图_学了这些CAD技巧,画图速度迅速提高
  14. 查看单元测试用例覆盖率新姿势:IDEA 集成 JaCoCo
  15. HTML特殊字符符号大全
  16. 开放平台-web实现QQ第三方登录
  17. Py之shap:shap.explainers.shap_values函数的简介、解读(shap_values[1]索引为1的原因)、使用方法之详细攻略
  18. mysql实现添加图片_如何往mysql中添加图片
  19. 470余万条疑似12306用户数据遭贩卖 嫌疑人被刑拘
  20. Beej网络编程指南《一》

热门文章

  1. 书单分享:阅读应该是一种享受
  2. MOS管与三极管比较及应用
  3. 创新实训(46)——基于ElasticSearch的Completion Suggest实现搜索提示
  4. VS中使用Qt方法详解
  5. visual stdio 2015社区版、专业版的下载
  6. Java中如何给map数组制空,java.util.HashMap可以存储null键和null值。( )
  7. BIOS开启Fast Boot后导致开机时键盘无法使用,无法进入BIOS
  8. 2015年高教社杯全国大学生数学建模竞赛A题 “互联网+”时代的出租车资源配置
  9. 第二章 BIRT设计器概述及本地化支持
  10. hdu 4544 湫湫系列故事——消灭兔子