首先做了2套题,附链接:
https://www.nowcoder.com/acm/contest/67#question
https://vjudge.net/contest/208487
有一说一,牛客网的题不知道为什么这么喜欢找规律(?)。然后是牛客网的我已经做完的感觉稍微难一点的题:
先来J-闯关的lulu,这个规律一开始心没静下来的时候没找到,而且越来越烦。后来发觉是这样的(自己也感觉总结不好)。n为奇数的话就是n的1,n为偶数就是n-1个1和0。然后3个1合成一个2,4个2合成一个3,5个3合成一个2,依次类推……明白了之后代码很简单
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<stack>
#include<math.h>
using namespace std;
int main(){
int T;
cin>>T;
while(T-->0){
int n;
cin>>n;
int a[100];
int i=0;
int k;
k=n%2;
a[i]=k;
i++;
if(k==1) n=n-1;
else ;
for(int j=3;n>0;j++){
k=n%j;
a[i]=k;
i++;
n=n/j;
}
for(int j=i-1;j>=0;j--){
while(a[j]>0){
cout<<j;
a[j]--;
}
}
cout<<endl;
}
}
其次
G-圆圈。dfs.建一个a[3^7][3^7]就很容易解决。但要注意的点是O后面不能带空格,这样的输出就比较恶心了,但是可以通过dfs的时候预先在有图的那些位置直接铺上一层来解决,我是1代表O,0代表' ',遇到-1就回车。代码:
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<stack>
#include<math.h>
using namespace std;
int a[2188][2188];
void shuchu(int x,int y,int n){
if(n==0) a[x][y]=1;
else{
int f=pow(3,n-1);
for(int i=0;i<f;i++){
for(int j=0;j<f;j++){
a[x+i][y+j]=0;
}
}
for(int i=f;i<2*f;i++){
for(int j=0;j<2*f;j++){
a[x+i][y+j]=0;
}
}
for(int i=2*f;i<3*f;i++){
for(int j=0;j<f;j++){
a[x+i][y+j]=0;
}
}
shuchu(x,y+f,n-1);
shuchu(x+f,y,n-1);
shuchu(x+f,y+2*f,n-1);
shuchu(x+2*f,y+f,n-1);
}
}
int main(){
int T;
cin>>T;
while(T-->0){
memset(a,-1,sizeof a);
int n;
cin>>n;
shuchu(0,0,n);
int f=pow(3,n);
for(int i=0;i<f;i++){
for(int j=0;j<2188;j++){
if(a[i][j]==0) cout<<' ';
if(a[i][j]==1) cout<<"O";
if(a[i][j]==-1){
cout<<endl;
break;
}
}
}
}
}
偷偷说一下c,其实感觉c也是比较基础的搜索了,但是没做完,希望我日后补上。
然后来vj上的题:
全是cf。这个我不是来讲的,因为肯定有人比我讲的好和全面,主要针对一个H题。卡了半天tle。因为不会链式向前星。其实之前早就已经想学的,但是只看了一半,然后做这道题的时候没有想到。我以前问过链式向前星是不是必要的,回答是作为一种优化手段,所以我就放弃了。现在想想真的可笑,其实我们学的东西什么都是优化,不然有暴力作为一种最基础的解法我们学什么其他优化呢?能学则学,这是我今天对自己说的。