终于等到了一场不是凌晨开始的CF了~(≧▽≦)/~
读题慢,手速慢,破题慢,代码实现能力不够,一AC不行,rating掉……
题目链接
第一题:有一个根长度为 n 的木棍,将它做成一个矩形(不能是正方形)。求有多少种方案(长和宽交换是一种)。
水题一道。
#include <iostream>
#include <cstdio>
using namespace std;
int n;
int main()
{
scanf("%d",&n);
if(n<=4||n%2)
{
puts("0");
return 0;
}
n/=2;
printf("%d\n",(n-1)/2);
return 0;
}
第二题:有
水题一道。先求出完整的周期,即
#include <iostream>
#include <cstdio>
#define MAXN 200005
#define LL long long int
using namespace std;
int cnt[MAXN], m=2147483647, before, add, add2;
LL ans, n;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d",&cnt[i]);
m=min(m,cnt[i]);
}
for(int i=1;i<=n;++i)cnt[i]-=m;
for(int i=1;i<=n+1;++i)
if(cnt[i]==0)
{
add=max(add,i-before-1);
before=i;
}
for(int i=1;i<=n;++i)
if(cnt[i])++add2;
else break;
for(int i=n;i>0;--i)if(cnt[i])++add2;else break;
ans=n*m+max(add,add2);
printf("%I64d\n",ans);
return 0;
}
第三题:构造一个 2k 个 2k 维的向量,要求向量之间两两互质。( 0<=k<=9 )
找规律。先打一个小表。
发现第
i
个答案到第
#include <iostream>
#include <cstdio>
#include <cstring>
#define MAXN 1005
using namespace std;
int k;
bool w[MAXN][MAXN];
int main()
{
scanf("%d",&k);
if(k==0)
{
puts("+");
return 0;
}
w[1][1]=w[2][1]=w[2][2]=1, w[1][2]=0;
for(int l=2,i;l<=k;++l)
{
i=l-1;
i=1<<i;
for(int j=1;j<=i;++j)
memcpy(w[j+i],w[j],sizeof w[j]);
for(int j=1;j<=i;++j)
{
for(int k=1;k<=i;++k)
w[j][i+i-k+1]=w[j][k];
}
for(int j=i+1;j<=i+i;++j)
{
for(int k=1;k<=i;++k)
w[j][i+i-k+1]=!w[j][k];
}
}
int tmp=1<<k;
for(int i=1;i<=tmp;++i)
{
for(int j=1;j<=tmp;++j)
{
if(w[i][j])printf("+");
else printf("*");
}
puts("");
}
return 0;
}
之后的题,就是木有在当时做出来的…
%%现场AK的大牛。
第四题:在
大牛们说这是一个裸的矩形面积并,扫描线。
就是确定以
x
轴还是以
第五题:先给你一个字符串,然后有两种操作。
操作一:将字符串中的某一段全部改成同一个字符。
操作二:给你另一个字符串,求至少需要将该字符串复制多少次才能使得原字符串是该字符串的子序列。
大牛们说这又是一道线段覆盖的裸题233
这样看来蒟蒻有关线段覆盖的问题根本就木有这么学……