F-DPS
题意

解题思路
代码
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef long long ll;
int n,d[111],maxn;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&d[i]);
maxn=max(maxn,d[i]);
}
for(int i=1;i<=n;i++)
{
if(d[i]==0)
{
printf("++\n");
printf("||0\n");
printf("++\n");
continue;
}
ll s=1ll*d[i]*50,x=0;
if(s%maxn>0)x=1;
x+=s/maxn;
printf("+");
for(int i=1;i<=x;i++)printf("-");
printf("+\n|");
for(int i=1;i<x;i++)printf(" ");
if(d[i]==maxn)printf("*|");
else printf(" |");
printf("%d\n",d[i]);
printf("+");
for(int i=1;i<=x;i++)printf("-");
printf("+\n");
}
return 0;
}
I-Hard Math Problem
题意
- 链接:Hard Math Problem
- 给出一个n*m的网格,每个格子可放H、E、G中的一个,要求H的上下左右至少要有一个E和一个G,问n、m都取无穷大时放H的个数占总格数的多少
解题思路
- 取一条斜线,在斜线上交错摆E和G,这样斜线之上和之下的两条斜线都可以摆放H,则占比为2/3
代码
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
printf("0.666667\n");
return 0;
}