• 2023年CCF-CSP考前冲刺


    202305-1重复局面

    思路
    题目的意思是我们输入n组局面,每个局面由64个字符组成,然后判断有没有相同局面。那么我们就可以开一个map,用字符数组a记录每个局面的字符,然后放入map中,每次输出它的次数即可。
    代码

    #include
    using namespace std;
    int n;
    char a[64];
    map<string,int> mp;
    int main(){
    	cin>>n;
    	for(int i=0;i<n;i++){
    		for(int j=0;j<64;j++) cin>>a[j];
    		if(mp.count(a)) mp[a]++;
    		else mp[a]=1;
    		cout<<mp[a]<<endl; 
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    202305-2矩阵运算

    思路
    根据题目描述,本题就是简单的矩阵运算,关键在于先算哪个。在纸上列一下矩阵运算的过程,用for循环即可求解。
    代码

    #include
    using namespace std;
    typedef long long ll;
    const int N=10010,D=30;
    ll tmp[D][D],ans[N][N];
    int n,d;
    int Q[N][D],K[N][D],V[N][D],W[N];
    int main(){
    	cin>>n>>d;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=d;j++){
    			cin>>Q[i][j];
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=d;j++){
    			cin>>K[i][j];
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=d;j++){
    			cin>>V[i][j];
    		}
    	}
    	for(int i=1;i<=n;i++) cin>>W[i];
    	
    	//计算K的转置*V=tmp
    	for(int i=1;i<=d;i++){
    		for(int j=1;j<=d;j++){
    			for(int k=1;k<=n;k++){
    				tmp[i][j]+=K[k][i]*V[k][j];
    			}
    		}
    	}
    	
    	//计算Q*tmp=ans
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=d;j++){
    			for(int k=1;k<=d;k++){
    				ans[i][j]+=Q[i][k]*tmp[k][j];
    			}
    			ans[i][j]*=(ll)W[i];
    		}
    	} 
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=d;j++){
    			cout<<ans[i][j]<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    202303-1 田地丈量

    思路
    这个题在于画图明确面积的计算公式。
    画图可知,每块面积的计算公式为x*y
    x是右边界减去左边界
    右边界取相应的最小值,左边界取相应的最大值
    上下边界同理
    代码

    #include
    using namespace std;
    int main(){
    	int n,a,b;
    	int x1,y1,x2,y2;
    	int x,y;
    	int sum=0;
    	cin>>n>>a>>b;
    	for(int i=1;i<=n;i++){
    		cin>>x1>>y1>>x2>>y2;
    		x=min(a,x2)-max(0,x1);
    		y=min(b,y2)-max(0,y1);
    		if(x>=0&&y>=0){
    			sum+=x*y;
    		}
    	}
    	cout<<sum;
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    202303-2垦田计划

    思路
    我们用flag标记用时i天的区域缩短一天所用的时间
    然后从max(所用的最长时间)开始判断max和k的大小,如果相等了,就直接退出循环
    否则判断手中资源m和所用最大时间对应缩短一天需要的资源数flag[i]进行比较,如果大于的话,资源m就减去flag[i],然后把这些资源数放到flag[i-1]上,max–。直到资源不够为止。
    然后输出max。
    感觉这道题主要是一个分类的思想。重点在于把每个相同时间的缩短一天所用资源数放在一起。
    代码

    #include
    using namespace std;
    int n,k;
    long long m;
    map<int,int> tim,res,flag;
    int main(){
    	cin>>n>>m>>k;
    	int max=0;
    	for(int i=0;i<n;i++){
    		cin>>tim[i]>>res[i];
    		max=max>tim[i]?max:tim[i];
    		flag[tim[i]]+=res[i];//flag[i]为用时i天的区域缩短一天所用时 
    	}
    	for(int i=max;i>0;i--){
    		if(max==k) break;
    		if(m>flag[i]){
    			m=m-flag[i];
    			flag[i-1]+=flag[i];
    			max--;
    		}else break;
    	} 
    	cout<<max;
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    怎么办理水污染防治资质,水污染防治工程设计专项乙级办理条件有哪些
    配电房智能化改造在加油站等的应用
    SRT参数说明
    零基础5分钟上手亚马逊云科技AWS核心云开发/云架构知识 - 成本分析篇
    前端两个重点:性能优化、安全
    猿创征文 | 国产数据库之使用PXD在Docker环境下部署PolarDB-X集群
    Python中的进制转换
    Linux用户管理— 用户管理命令
    Spring boot 实战指南(二):Mybatis、动态绑定、多数据源、分页插件、Mybatis-Plus
    自动驾驶:控制算法概述
  • 原文地址:https://blog.csdn.net/manerzi/article/details/132858563