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. schedule of 2016-11-7~2016-11-10(Monday~Thursday)——1st semester of 2nd Grade

    most important things to do 1.joint phd preparations 2.journal paper to write 3.solid fundamental kn ...

  2. es5和es6中查找数组中的元素

    let array = [1,2,3,4,5] //es5 let find = array.filter(function (item){ return item %2 === 0//返回满足条件的 ...

  3. Spring学习记录4——Spring对DAO的支持

    Spring对DAO的支持 随着持久化技术的持续发展,Spring对多个持久化技术提供了集成支持,包括Hibernate.MyBatis.JPA.JDO:此外,还提供了一个简化JDBC API操作的S ...

  4. php变量中两种特殊类型

    第一种----资源 资源(resource):资源是由专门的函数来建立和使用的,例如打开文件.数据连接.图形画布.我们可以对资源进行操作(创建.使用和释放).任何资源,在不需要的时候应该被及时释放.如 ...

  5. Xhemj的Minecraft皮肤信息

    xhemj Minecraft Profile UUID:086e0354-fbb6-446b-83d4-60bdf449ad4e UUID:086e0354fbb6446b83d460bdf449a ...

  6. python 抓一下 循环的访问也可以

    #!/usr/bin/python # -*- coding: utf-8 -*- #encoding=utf-8 #Filename:urllib2-header.py import urllib2 ...

  7. SpringBoot中对SpringMVC的自动配置

    https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#boot-features-developin ...

  8. Qt Installer Framework翻译(7-4)

    组件脚本 对于每个组件,您可以指定一个脚本,来准备要由安装程序执行的操作.脚本格式必须与QJSEngine兼容. 构造 脚本必须包含安装程序在加载脚本时创建的Component对象. 因此,脚本必须至 ...

  9. Java8 Stream用法详解

    1.概述 Stream 的原理:将要处理的元素看做一种流,流在管道中传输,并且可以在管道的节点上处理,包括过滤筛选.去重.排序.聚合等.元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结 ...

  10. Spring注解开发系列Ⅵ --- AOP&事务

    注解开发 --- AOP AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,横向重复,纵向抽取.详细的AO ...