程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> TC SRM 562 DIV 2

TC SRM 562 DIV 2

編輯:C++入門知識

做的練習賽,最後一題還沒做出來。待續
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.2cto.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; 
    } 
}; 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved