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