浙江中医药大学2018级新生程序设计竞赛题解

本文详细解读了2018年浙江中医药大学新生程序设计竞赛的题目,包括简单贪心策略、大数取余、辗转相除法、素数判断、动态规划等算法的应用。
摘要由CSDN通过智能技术生成

【...】

网上代码比较多我就尽量不挂了,简单讲下思路吧。

oj : acm.zcmu.edu.cn

【Problem A: 画正方形】

签到题,注意下输出格式(组与组之间有且仅有一个空行)就行。

至于怎么注意..判断第一组输出前不输出空行或者最后一组输出后不输出空行就行...反正几组数据都告诉你了。

如果几组数据未知就判断第一组然后改变状态即可。

【Problem B: 勇者斗恶龙】

简单贪心。把恶龙每个头的直径和骑士的能力存到数组里然后升序(或者降序也行)排序,然后按恶龙(或者骑士也行)的头的直径从小到大去匹配能力从小到大的骑士,保证最优解,如果头最大的那个可以匹配到对应的骑士,那么就输出解,否则无解。这里我用了sort()函数,因为方便,自行百度头文件和用法,还可以结构体排序哦。

//其中一种做法
#include<bits/stdc++.h>  //这其实是万能头文件了,自行百度
using namespace std;  
main() 
{ 
    int n,m,i,j,a[20005],b[20005]; 
    while(~scanf("%d%d",&n,&m),n&&m) 
    { 
        for(i=0;i<n;i++) 
            scanf("%d",&a[i]); 
        sort(a,a+n); 
        for(i=0;i<m;i++) 
            scanf("%d",&b[i]); 
        sort(b,b+m); 
        int sum=0; 
        i=0,j=0; 
        while(i<n&&j<m) 
        { 
            if(b[j]>=a[i]) 
            { 
                sum+=b[j]; 
                i++; 
            } 
            j++; 
        } 
        if(i==n) printf(
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值