Codeforces_825
A.连续1的个数,0用来分割,注意连续的0。
#include<bits/stdc++.h>
using namespace std; int n;
string s; int main()
{
ios::sync_with_stdio();
cin >> n >> s;
int now = ,flag = ;
for(int i = ;i < n;i++)
{
if(s[i] == '') now++,flag = ;
else
{
cout << now;
now = ;
flag = ;
}
}
if(now || flag) cout << now;
cout << endl;
return ;
}
B.暴力每个点放X,判断即可。
#include<bits/stdc++.h>
using namespace std; string s[]; bool ok()
{
for(int i = ;i <= ;i++)
{
for(int j = ;j <= ;j++)
{
if(i <= )
{
int flag = ;
for(int ii = i;ii < i+;ii++)
{
if(s[ii][j] != 'X') flag = ;
}
if(flag) return ;
}
if(j <= )
{
int flag = ;
for(int jj = j;jj < j+;jj++)
{
if(s[i][jj] != 'X') flag = ;
}
if(flag) return ;
}
if(i <= && j <= )
{
int flag = ;
for(int ii = i,jj = j;ii < i+;ii++,jj++)
{
if(s[ii][jj] != 'X') flag = ;
}
if(flag) return ;
}
if(i >= && j <= )
{
int flag = ;
for(int ii = i,jj = j;ii > i-;ii--,jj++)
{
if(s[ii][jj] != 'X') flag = ;
}
if(flag) return ;
}
}
}
return ;
}
int main()
{
ios::sync_with_stdio();
for(int i = ;i <= ;i++)
{
cin >> s[i];
s[i] = ' '+s[i];
}
for(int i = ;i <= ;i++)
{
for(int j = ;j <= ;j++)
{
if(s[i][j] != '.') continue;
s[i][j] = 'X';
if(ok())
{
cout << "YES" << endl;
return ;
}
s[i][j] = '.';
}
}
cout << "NO" << endl;
return ;
}
C.排序后模拟。
#include<bits/stdc++.h>
using namespace std; int n,k,a[]; int main()
{
ios::sync_with_stdio();
cin >> n >> k;
for(int i = ;i <= n;i++) cin >> a[i];
sort(a+,a++n);
int ans = ;
for(int i = ;i <= n;i++)
{
while(k* < a[i])
{
k *= ;
ans++;
}
k = max(k,a[i]);
}
cout << ans << endl;
return ;
}
D.模拟,给字母少的先分配。
#include<bits/stdc++.h>
using namespace std; string s1,s2;
map<char,int> mp; int main()
{
ios::sync_with_stdio();
cin >> s1 >> s2;
for(int i = ;i < s1.length();i++) mp[s1[i]]++;
int now = ;
for(int i = ;i < s1.length();i++)
{
if(s1[i] != '?') continue;
now = (now+)%s2.length();
if(mp[s2[now]])
{
mp[s2[now]]--;
i--;
}
else s1[i] = s2[now];
}
cout << s1 << endl;
return ;
}
E.优先队列逆向拓扑排序。
#include<bits/stdc++.h>
using namespace std; int n,m,in[] = {},ans[];
vector<int> v[]; int main()
{
ios::sync_with_stdio();
cin >> n >> m;
while(m--)
{
int x,y;
cin >> x >> y;
v[y].push_back(x);
in[x]++;
}
priority_queue<int> q;
for(int i = ;i <= n;i++)
{
if(!in[i]) q.push(i);
}
int cnt = n;
while(!q.empty())
{
int now = q.top();
q.pop();
ans[now] = cnt--;
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
if(--in[t] == ) q.push(t);
}
}
for(int i = ;i <= n;i++) cout << ans[i] << " ";
cout << endl;
return ;
}
F.预处理最长公共前缀,dp枚举最小串。
#include<bits/stdc++.h>
using namespace std; string s;
int lcp[][] = {},dp[],cnt[]; int main()
{
ios::sync_with_stdio();
cin >> s;
int n = s.length();
memset(dp,0x3f,sizeof(dp));
for(int i = ;i <= ;i++) cnt[i] = ;
for(int i = ;i <= ;i++) cnt[i] = ;
for(int i = ;i <= ;i++) cnt[i] = ;
for(int i = ;i <= ;i++) cnt[i] = ;
for(int i = n-;i >= ;i--)
{
for(int j = n-;j >= i;j--)
{
if(s[i] == s[j]) lcp[i][j] = lcp[i+][j+]+;
else lcp[i][j] = ;
}
}
dp[] = ;
for(int i = ;i < n;i++)
{
for(int j = ;i+j <= n;j++)
{
for(int k = i+j,t = ;k <= n;k += j,t++)
{
if(lcp[i][k-j] < j) break;
dp[k] = min(dp[k],dp[i]+j+cnt[t]);
}
}
}
cout << dp[n] << endl;
return ;
}
G.记录一个最小的点即可。
#include<bits/stdc++.h>
using namespace std; int n,q,ans[];
vector<int> v[]; int dfs(int now,int pre)
{
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
if(t == pre) continue;
ans[t] = min(t,ans[now]);
dfs(t,now);
}
} int main()
{
ios::sync_with_stdio();
cin >> n >> q;
int x,y;
for(int i = ;i < n;i++)
{
cin >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
int lastt = ;
cin >> x >> y;
y = (lastt+y)%n+;
ans[y] = y;
dfs(y,-);
int minn = y;
while(--q)
{
int x,y;
cin >> x >> y;
y = (y+lastt)%n+;
if(x == ) minn = min(minn,ans[y]);
else
{
lastt = min(ans[y],minn);
cout << lastt << endl;
}
}
return ;
}
Codeforces_825的更多相关文章
随机推荐
- bootstrap:导航分页
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- java socket通讯
本来是打算验证java socket是不是单线程操作,也就是一次只能处理一个请求,处理完之后才能继续处理下一个请求.但是在其中又发现了许多问题,在编程的时候需要十分注意,今天就拿出来跟大家分享一下. ...
- spring boot集成spring-boot-starter-mail邮件功能
前情提要 以目前IT系统功能来看,邮件功能是非常重要的一个功能.例如:找回密码.邮箱验证,邮件动态码.忘记密码,邮件营销等,都需要用到邮件功能.结合当下最流行的spring boot微服务,推出了sp ...
- Arduino_URO端口与AtMega328p引脚对应图
Arduino微控制器的数字端口和模拟端口与ATMEGA 328芯片引脚的对应关系图如下.标有0~13标号的引脚对应的是数字端口,在0~13前面有符号“~”的引脚对应的端口具有PWM输出功能.标有A0 ...
- Django之form组件自动校验数据
目录 一.form介绍 二.普通方式手写注册功能 views.py register.html 三.使用form组件实现注册功能 views.py register2.html 四.pycharm的专 ...
- cogs 2450. 距离 树链剖分求LCA最近公共祖先 快速求树上两点距离 详细讲解 带注释!
2450. 距离 ★★ 输入文件:distance.in 输出文件:distance.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 在一个村子里有N个房子,一 ...
- VMware Workstation CentOS7 Linux 学习之路(3)--.net coreWeb部署
1.首先创建一个文件夹,命名为core mkdir core cd core 2.我这里用FlashFXP连接Linux 把我发布的项目上传到CentOS7的core文件夹下 此时我输入命令 dotn ...
- MySql数据主从同步配置
由于需要配置MySQL的主从同步配置,现将配置过程记录下,已被以后不时之需 MySql数据主从同步 1.1. 同步介绍 Mysql的 主从同步 是一个异步的复制过程,从一个 Master复制到另一 ...
- Python工具类(一)—— 操作Mysql数据库
如何调用直接看__main__函数里如何调用此工具类就阔以啦! # encoding=utf-8 import pymysql # 导入所有Mysql配置常量,请自行指定文件 from conf.se ...
- visul studio 使用git扫盲帖。
写给和一样的菜B 有必要知道的命令: git rm --cached (文章底部有git命令大全) 创建.gitignore文件 windows版: 在项目根目录下面创建gitignore.txt文件 ...