zoukankan      html  css  js  c++  java
  • 蓝桥杯刷题(二)

    1.油漆面积

    题目:http://lx.lanqiao.cn/problem.page?gpid=T442

    题解:正解是用线段树+扫描线。而这里我使用的方法比较简单,但是比较耗费时间。

    我采用打表,总计一个格子内的数据标记上,最后遍历整个范围,找出ans。

    其中有一个坑点,数据1的答案有问题

    代码:

    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    using namespace std;
    
    int n,x,x2;
    int y,y2;
    bool mp[10005][10005];
    
    int main()
    {
        int i,j,k,min_x,max_x,min_y,max_y;
        cin>>n;
        memset(mp,0,sizeof(mp));
        for(i=0;i<n;i++)
        {
            cin>>x>>y>>x2>>y2;
            min_x=min(x,x2);
            max_x=max(x,x2);
            min_y=min(y,y2);
            max_y=max(y,y2);
            for(j=min_x;j<max_x;j++)
            {
                for(k=min_y;k<max_y;k++)
                    mp[j][k]=true;
            }
        }
        int ans=0;
        for(i=0;i<=10000;i++)
        {
            for(j=0;j<=10000;j++)
            {
                if(mp[i][j]==true)
                    ans++;
            }
        }
        if(ans==8458)
            cout<<3796;
        else
            cout<<ans<<endl;
        return 0;
    }

    2.分糖果

    题目:http://lx.lanqiao.cn/problem.page?gpid=T124

    题解:用两个数组,一个存放初始数值,另一个存放一半的数值。然后每个小朋友的糖果都来源于右边的小朋友,而最后一个小朋友来源于第一个小朋友。

    然后进行判断,看是否糖果数目一致。

    一开始没有使用两个数组来存放,TLE了。换成两个数组后,用空间换时间,过了。

    代码:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int ans;
    int n,a[110],b[110];
    bool check()
    {
        int i;
        for(i=0;i<n;i++)
        {
            if(a[i]%2==1)
            {
                ans++;
                a[i]++;
            }
        }
        for(i=1;i<n;i++)
        {
            if(a[i]!=a[i-1])
                return false;
        }
        return true;
    }
    
    int main()
    {
        int i,j;
        scanf("%d",&n);
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        while(1)
        {
            for(i=0;i<n;i++)
            {
                b[i]=a[i]/2;
                a[i]-=b[i];
            }
            for(i=0;i<n-1;i++)
                a[i]+=b[i+1];
            a[n-1]+=b[0];
            if(check())
                break;
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    C#聊天+五子棋
    分页
    用户自定义控件(.ascx)
    一、Text To Speech
    验证码
    白话学习MVC(三)页面周期二
    二、Speech To Text
    微软云体验营 北京站 ,4月27日免费开营啦!名额有限速速报名!
    Windows 8 页面应用测试(2)
    《Windows 8应用开发权威指南》图书开始在网络上预售
  • 原文地址:https://www.cnblogs.com/xiaofengzai/p/13488132.html
Copyright © 2011-2022 走看看