这次凭借这超强的手速终于打到了Rank76
由于这是手速场,所以题目都偏简单,但惯后面两题还是很不可做的
A. 贝壳找房均价计算
这道题题意很清楚了吧,但是有一个坑点:|Y|表示的是字符串Y的长度,而不是Y的绝对值
然后模拟即可,不得不说道题5minA了还是挺快的
CODE
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
char s[1005];
LL x;
int t,y;
int main()
{
register int i; scanf("%d",&t);
while (t--)
{
scanf("%lld.%s",&x,s+1);
int len=strlen(s+1);
for (i=len;i>1;--i)
if (s[i]>='5') ++s[i-1];
if (s[1]>='5') ++x;
printf("%lld
",x);
}
return 0;
}
B. 贝壳找房搜房(简单)
这个的话由于数据范围小,我们n!枚举全排列然后暴力判断即可
但是这里有一个巨大无比的坑点:集合无序
这么说对于这组数据:
2 1
2 2 1
的输出应该是1 2而不是2 1
然后我们只要在以上基础上sort一下即可
CODE
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=10;
int num[N],a[30][30],n,m,t[30];
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline bool check(int l,int r,int id)
{
register int i; int cnt=0;
for (i=l;i<=r;++i)
t[++cnt]=num[i];
sort(t+1,t+cnt+1);
for (i=1;i<=cnt;++i)
if (a[id][i]!=t[i]) return 0;
return 1;
}
inline void print(void)
{
for (register int i=1;i<n;++i)
printf("%d ",num[i]); printf("%d
",num[n]);
}
int main()
{
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
register int i,j,k;
read(n); read(m);
for (i=1;i<=m;++i)
for (read(a[i][0]),j=1;j<=a[i][0];++j)
read(a[i][j]);
for (i=1;i<=m;++i)
sort(a[i]+1,a[i]+a[i][0]+1);
for (i=1;i<=n;++i)
num[i]=i;
do
{
bool sign=1;
for (i=1;i<=m;++i)
{
bool flag=0;
for (j=1;j<=n-a[i][0]+1;++j)
if (check(j,j+a[i][0]-1,i)) { flag=1; break; }
if (!flag) { sign=0; break; }
}
if (sign) { print(); return 0; }
}while (next_permutation(num+1,num+n+1));
puts("-1");
return 0;
}
C. 贝壳找房搜房(中等)&&D. 贝壳找房搜房(困难)
这两题也是很不可做的,SOL写得比较简略,可以O(n^2)贪心判断
但是我不会啊,我真的是太弱了
跪求大佬题解ing......