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的更多相关文章

随机推荐

  1. java基础之----分布式事务tcc

    最近研究了一下分布式事务框架,ttc,总体感觉还可以,当然前提条件下是你要会使用这个框架.下面分层次讲,尽量让想学习的同学读了这篇文章能加以操作运用.我不想废话,直接上干货. 一.什么是tcc?干什么 ...

  2. ENS 域名注册表智能合约(ENSRegistry.sol)解析

    ENS 注册表合约是 ENS 系统中的核心合约,了解这个合约可以敲开我们理解 ENS 域名系统的大门. 打开下面的折叠区域可以查看用 Solidity 语言编写的详细代码.当前部署在以太坊中的 ENS ...

  3. esri mdb 数据库导入 到postgreSQL

    需求: 项目升级,需要将esri的个人数据库(mdb格式)导入到开源数据库postgreSQL中. 思路: 使用fwtools工具导出到数据库中. 环境: windows+fwtools+postgr ...

  4. Nginx的一理解(2)

    1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置:

  5. Postman post csrf_token

    1.填入代码 var csrf_token = postman.getResponseCookie("csrftoken").value postman.clearGlobalVa ...

  6. ElasticSearch 倒排索引简析

    内容概要 倒排索引是什么?为什么需要倒排索引? 倒排索引是怎么工作的? 1. 倒排索引是什么? 假设有一个交友网站,信息表如下: 美女1:"我要找在上海做 PHP 的哥哥." 需要 ...

  7. 开发者必须要了解的架构技术趋势:Service Mesh

    内容概要 Service Mesh 是干啥的?解决了什么问题? Service Mesh 的特性 Service Mesh 的主流实现有哪些? 1. Service Mesh 是什么? 简单来讲,Se ...

  8. 如何构建可伸缩的Web应用?

    为什么要构建可伸缩的Web应用? 想象一下,你的营销活动吸引了很多用户,在某个时候,应用必须同时为成千上万的用户提供服务,这么大的并发量,服务器的负载会很大,如果设计不当,系统将无法处理. 接下来发生 ...

  9. Java入门 - 语言基础 - 08.运算符

    原文地址:http://www.work100.net/training/java-operator.html 更多教程:光束云 - 免费课程 运算符 序号 文内章节 视频 1 概述 2 算术运算符 ...

  10. 动态规划 之 区间DP练习

    前言 \(Loj\) 放上了那么多<信息学奥赛一本通>上的题(虽然我并没有这本书),我要给它点一个大大的赞 ^_^ 以后分类刷题不愁啦! 正文 那就一道道说吧. 石子合并 将 \(n\) ...