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;
}