今天的总结吧

首先做了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。因为不会链式向前星。其实之前早就已经想学的,但是只看了一半,然后做这道题的时候没有想到。我以前问过链式向前星是不是必要的,回答是作为一种优化手段,所以我就放弃了。现在想想真的可笑,其实我们学的东西什么都是优化,不然有暴力作为一种最基础的解法我们学什么其他优化呢?能学则学,这是我今天对自己说的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值