当前位置:编程学习 > C/C++ >>

TC SRM 562 DIV 2

做的练习赛,最后一题还没做出来。待续
A。水题~但是出了个很神奇的错误。
return “NO”。我居然把O打成0了。。
[cpp]  
#include <iostream> 
#include <cstdio> 
#include <algorithm> 
#include <string> 
#include <cmath> 
#include <cstring> 
#include <queue> 
#include <set> 
#include <vector> 
#include <stack> 
#include <map> 
#include <iomanip> 
#define PI acos(-1.0) 
#define Max 2005 
#define inf 1<<28 
#define LL(x) (x<<1) 
#define RR(x) (x<<1|1) 
#define FOR(i,s,t) for(int i=(s);i<=(t);++i) 
#define ll long long 
using namespace std; 
 
bool cmp(int a,int b) 

    return a>b; 
}  www.zzzyk.com
class CucumberMarket { 
    public: 
    string check(vector <int> price, int budget, int k) { 
        int num=price.size(); 
        int *a=new int[num]; 
        for(int i=0;i<num;i++) 
        a[i]=price[i]; 
        sort(a,a+num,cmp); 
        int sum=0; 
       for(int i=0;i<k&&i<num;i++) 
       sum+=a[i]; 
        if(sum>budget) 
        return "NO"; 
        else 
        return "YES"; 
 
    } 
}; 
B,模拟题,讲每个'B'标记一下,然后每找到一个‘B’,则从这里开始,沿着对角线遍历,找出下一个‘B’,比较两个之间的距离,sum+=min(两者的距离,T),因为有可能两个‘B’之间形不成直线,因为T的次数太小,所以得找出最小值。
[cpp] 
int num[100][100]; 
class PastingPaintingDivTwo { 
    public: 
    long long countColors(vector <string> clipboard, int T) { 
        memset(num,0,sizeof(num)); 
        int n,m; 
        for(int i=0;i<clipboard.size();i++) 
        { 
            n=clipboard.size(); 
            for(int j=0;j<clipboard[i].length();j++) 
            { 
                m=clipboard[i].length(); 
                if(clipboard[i][j]=='B') 
                { 
                    num[i][j]++; 
                } 
            } 
        } 
        ll sum=0; 
        for(int i=0;i<n;i++) 
        { 
            for(int j=0;j<m;j++) 
            { 
                int spn=0; 
                int k; 
                int spp=0; 
                if(num[i][j]) 
                { 
                    for(k=0;k<=min(n-i,m-j);k++) 
                    { 
                        if(num[i+k][j+k]) 
                        { 
                            spp+=spn; 
                            spn=k-spp; 
                            sum+=min(spn,T); 
                        } 
                        num[i+k][j+k]=0; 
                    } 
                    //sum+=spn; 
                    sum+=T; 
                } 
            } 
        } 
        return sum; 
    } 
}; 

 

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,