SMU Summer 2024 Contest Round 2 (7.9)zhaosang

A-A

http://162.14.124.219/contest/1006/problem/A

考查用vector画图
我枚举到n==5才开始用,浪费40分钟,还是找规律太慢,得多学
做题代码如下:一坨

#include <bits/stdc++.h>

using namespace std;

using ll =long long;
const ll N =1e6+8;
char v[1000001];
int w[10000001];

ll diff[N],prefix[N];
vector<vector<char>> generate_carpet(int N) {
	if (N == 0) {
		return {{'#'}};
	}
	
	vector<vector<char>> smaller_carpet = generate_carpet(N - 1);
	int size = smaller_carpet.size();
	int new_size = size * 3;
	vector<vector<char>> new_carpet(new_size, vector<char>(new_size, '.'));
	
	for (int i = 0; i < new_size; ++i) {
		for (int j = 0; j < new_size; ++j) {
			if (!(size <= i && i < 2 * size && size <= j && j < 2 * size)) {
				new_carpet[i][j] = smaller_carpet[i % size][j % size];
			}
		}
	}
	
	return new_carpet;
}

void print_carpet(const vector<vector<char>>& carpet) {
	for (const auto& row : carpet) {
		for (char ch : row) {
			cout << ch;
		}
		cout << endl;
	}
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	ll n;
	cin>>n;
	if(n==1){
		cout<<"###"<<'\n';
		cout<<"#.#"<<'\n';
		cout<<"###"<<'\n';
	}else if(n==2){
		cout<<"#########"<<'\n';
		cout<<"#.##.##.#"<<'\n';
		cout<<"#########"<<'\n';
		cout<<"###...###"<<'\n';
		cout<<"#.#...#.#"<<'\n';
		cout<<"###...###"<<'\n';
		cout<<"#########"<<'\n';
		cout<<"#.##.##.#"<<'\n';
		cout<<"#########"<<'\n';
	}else if(n==0){
		cout<<"#"<<'\n';
		}else if(n==3)
		{
cout<<"###########################"<<'\n';			
cout<<"	#.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"###########################"<<'\n';
cout<<"###...######...######...###"<<'\n';
cout<<"#.#...#.##.#...#.##.#...#.#"<<'\n';
cout<<"###...######...######...###"<<'\n';
cout<<"###########################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"###########################"<<'\n';
cout<<"#########.........#########"<<'\n';
cout<<"#.##.##.#.........#.##.##.#"<<'\n';
cout<<"#########.........#########"<<'\n';
cout<<"###...###.........###...###"<<'\n';
cout<<"#.#...#.#.........#.#...#.#"<<'\n';
cout<<"###...###.........###...###"<<'\n';
cout<<"#########.........#########"<<'\n';
cout<<"#.##.##.#.........#.##.##.#"<<'\n';
cout<<"#########.........#########"<<'\n';
cout<<"###########################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"###########################"<<'\n';
cout<<"###...######...######...###"<<'\n';
cout<<"#.#...#.##.#...#.##.#...#.#"<<'\n';
cout<<"###...######...######...###"<<'\n';
cout<<"###########################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"###########################"<<'\n';
		
			}else if(n==4){
cout<<"#################################################################################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"###...######...######...######...######...######...######...######...######...###"<<'\n';
cout<<"#.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.#"<<'\n';
cout<<"###...######...######...######...######...######...######...######...######...###"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#########.........##################.........##################.........#########"<<'\n';
cout<<"#.##.##.#.........#.##.##.##.##.##.#.........#.##.##.##.##.##.#.........#.##.##.#"<<'\n';
cout<<"#########.........##################.........##################.........#########"<<'\n';
cout<<"###...###.........###...######...###.........###...######...###.........###...###"<<'\n';
cout<<"#.#...#.#.........#.#...#.##.#...#.#.........#.#...#.##.#...#.#.........#.#...#.#"<<'\n';
cout<<"###...###.........###...######...###.........###...######...###.........###...###"<<'\n';
cout<<"#########.........##################.........##################.........#########"<<'\n';
cout<<"#.##.##.#.........#.##.##.##.##.##.#.........#.##.##.##.##.##.#.........#.##.##.#"<<'\n';
cout<<"#########.........##################.........##################.........#########"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"###...######...######...######...######...######...######...######...######...###"<<'\n';
cout<<"#.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.#"<<'\n';
cout<<"###...######...######...######...######...######...######...######...######...###"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"###########################...........................###########################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.#...........................#.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"###########################...........................###########################"<<'\n';
cout<<"###...######...######...###...........................###...######...######...###"<<'\n';
cout<<"#.#...#.##.#...#.##.#...#.#...........................#.#...#.##.#...#.##.#...#.#"<<'\n';
cout<<"###...######...######...###...........................###...######...######...###"<<'\n';
cout<<"###########################...........................###########################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.#...........................#.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"###########################...........................###########################"<<'\n';
cout<<"#########.........#########...........................#########.........#########"<<'\n';
cout<<"#.##.##.#.........#.##.##.#...........................#.##.##.#.........#.##.##.#"<<'\n';
cout<<"#########.........#########...........................#########.........#########"<<'\n';
cout<<"###...###.........###...###...........................###...###.........###...###"<<'\n';
cout<<"#.#...#.#.........#.#...#.#...........................#.#...#.#.........#.#...#.#"<<'\n';
cout<<"###...###.........###...###...........................###...###.........###...###"<<'\n';
cout<<"#########.........#########...........................#########.........#########"<<'\n';
cout<<"#.##.##.#.........#.##.##.#...........................#.##.##.#.........#.##.##.#"<<'\n';
cout<<"#########.........#########...........................#########.........#########"<<'\n';
cout<<"###########################...........................###########################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.#...........................#.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"###########################...........................###########################"<<'\n';
cout<<"###...######...######...###...........................###...######...######...###"<<'\n';
cout<<"#.#...#.##.#...#.##.#...#.#...........................#.#...#.##.#...#.##.#...#.#"<<'\n';
cout<<"###...######...######...###...........................###...######...######...###"<<'\n';
cout<<"###########################...........................###########################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.#...........................#.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"###########################...........................###########################"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"###...######...######...######...######...######...######...######...######...###"<<'\n';
cout<<"#.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.#"<<'\n';
cout<<"###...######...######...######...######...######...######...######...######...###"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#########.........##################.........##################.........#########"<<'\n';
cout<<"#.##.##.#.........#.##.##.##.##.##.#.........#.##.##.##.##.##.#.........#.##.##.#"<<'\n';
cout<<"#########.........##################.........##################.........#########"<<'\n';
cout<<"###...###.........###...######...###.........###...######...###.........###...###"<<'\n';
cout<<"#.#...#.#.........#.#...#.##.#...#.#.........#.#...#.##.#...#.#.........#.#...#.#"<<'\n';
cout<<"###...###.........###...######...###.........###...######...###.........###...###"<<'\n';
cout<<"#########.........##################.........##################.........#########"<<'\n';
cout<<"#.##.##.#.........#.##.##.##.##.##.#.........#.##.##.##.##.##.#.........#.##.##.#"<<'\n';
cout<<"#########.........##################.........##################.........#########"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"###...######...######...######...######...######...######...######...######...###"<<'\n';
cout<<"#.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.##.#...#.#"<<'\n';
cout<<"###...######...######...######...######...######...######...######...######...###"<<'\n';
cout<<"#################################################################################"<<'\n';
cout<<"#.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.#"<<'\n';
cout<<"#################################################################################"<<'\n';
			
			}else{
			vector<vector<char>> carpet = generate_carpet(n);
				print_carpet(carpet);
				
				}

}

B-B

http://162.14.124.219/contest/1006/problem/B

就是问你字符串里面有多少个连续相同的两个的子串数量,
但是问的是某一个区间里面的。
思路就是先找出所有的子串,然后再开一个数组,保存子串的数量在位置上
然后利用一个前缀和就可以找到答案了

#include <bits/stdc++.h>

using namespace std;

using ll =long long;
const ll N =1e6+8;
char v[1000001];
int w[10000001];

ll diff[N],prefix[N];
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	ll n,q;
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		cin>>v[i];
		}
	for(int i=1;i<=n;i++){
		if((v[i]==v[i+1])){
			w[i]=1;
		}
	}
	for(int j=1;j<=n;j++) prefix[j]=prefix[j-1]+w[j];
	while(q--){
		ll l,r;
		cin>>l>>r;
		if(w[r]==1){
			cout<<prefix[r]-prefix[l-1]-1<<'\n';
		}else{
			cout<<prefix[r]-prefix[l-1]<<'\n';
		}
		
	}
		
}
C-C 最近在训练二分,可惜前面时间浪费太多,现在看到很高兴,会做了。 思路==就是二分加模拟,判断条件是最多行数>=使用的数量,这样模拟,把每一个数 加在一个数中,如果这个数小于二分的答案继续加下一个,直到大于等于,然后行数加1 (就是每一行要满足二分的答案),最后如果行数超了限制说明大了,如果可以继续二分继续变大== 代码如下:
#include <bits/stdc++.h>
using namespace std;

using ll =long long;

const ll inf = 2e18;

vector<ll>v(10000001);

ll m,n;
bool check(ll x){
	vector<ll>pd(1);
	for(int i=1;i<=n;i++){
		if(v[i]>x) return false;
		if(pd.back()==0){
			pd.back()+=v[i];
		}else{
			if(pd.back()+v[i]+1ll<=x){
				pd.back()+=1ll+v[i];
			}else
				pd.push_back(v[i]);
		}
	}
	return pd.size()<=m;
}



int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>v[i];
	ll l=1,r=inf;
	ll ans=-1;
	while(l<=r){
		ll mid =(l+r)>>1;
		if(check(mid)) ans=mid,r=mid-1;
		else l=mid+1;
		
	}
	cout<<ans;
	return 0;	
	
}
posted @ 2024-07-14 19:32  冬天的睡袋  阅读(28)  评论(0编辑  收藏  举报