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的更多相关文章
随机推荐
- DM7的SQL批量插入for、while方法
示例1,for用法: begin for i in 1...10000 loop insert into test values(i,i,'aaa',sysdate); if i mod 20 = 0 ...
- 吴恩达机器学习笔记 - cost function and gradient descent
一.简介 cost fuction是用来判断机器预算值和实际值得误差,一般来说训练机器学习的目的就是希望将这个cost function减到最小.本文会介绍如何找到这个最小值. 二.线性回归的cost ...
- 第一章 概述——1.TCP/IP设计遵循的两个原则
1.端到端原则(end-to-end principle) 当我们设计一个大的系统(如操作系统或协议族)时,随之而来的一个问题通常是在什么位置实现某个功能.影响TCP/IP协议族设计的一个重要原则是端 ...
- [转载] Windows系统批处理延迟方法
小贴士:方法四 亲测有效,因为当时对于精确度要求不是很高,所以没有具体测试它的精确度.其他方法没有测过,用到的时候再测吧! 批处理延时启动的几个方法 方法一:ping 缺点:时间精度为1秒,不够精确 ...
- 三、Spring Cloud之软负载均衡 Ribbon
前言 上一节我们已经学习了Eureka 注册中心,其实我们也使用到了Ribbon ,只是当时我们没有细讲,所以我们现在一起来学习一下Ribbon. 什么是Ribbon 之前接触到的负载均衡都是硬负载均 ...
- TensorFlow——TensorBoard可视化
TensorFlow提供了一个可视化工具TensorBoard,它能够将训练过程中的各种绘制数据进行展示出来,包括标量,图片,音频,计算图,数据分布,直方图等,通过网页来观察模型的结构和训练过程中各个 ...
- Helm, 在Kubernetes中部署应用的利器
一.背景 Kubernetes(k8s)是一个基于容器技术的分布式架构领先方案.它在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器 ...
- python的break、continue、pass
break break可以用来立即退出循环语句(包括else)continue continue可以用来跳过当次循环注意:break和continue都是只对离他最近的循环起作用 pass pass是 ...
- 79.纯 CSS 创作单元素麦当劳金拱门 Logo(自创)
效果地址:https://scrimba.com/c/cN3P6nfr 原理:两个椭圆,颜色部分为边框,下一半被伪元素覆盖. 感想:看了一眼大神的,代码比我的还少,得研究研究去. HTML code: ...
- 初探ASP.NET Core 3.x (4) - 项目的重要组成
目录 O 前请提要 I 启动部分 I.1 Program类 I.2 Startup类 I.2.1 这个类干什么呢?? I.2.2 特征?? I.3 appsettings.json I.4 launc ...