Cdoefroces #354
A题
题意:给定一些数,然后求一次交换以后最大的数和最小的数之间的最大距离
分析:找到最大数和最小数的位置,然后判断是把位置大的移到最后还是把位置小的移到开始位置即可
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
const int maxn=;
int a[maxn];
int main()
{
int n;
while(cin>>n)
{
int minx,maxx;
for(int i=;i<=n;i++)
cin>>a[i];
for(int i=;i<=n;i++){
if(a[i]==)
{
minx=i; break;
}
}
for(int i=;i<=n;i++){
if(a[i]==n){
maxx=i; break;
}
}
if(minx>maxx)
swap(minx,maxx);
cout<<maxx-minx+max(minx-,n-maxx)<<endl;
}
return ;
}
B题
题意:给定一些倒香槟的杯子,第一层1个,第二层2个,依此下去,问第t秒有多少个杯子水是满的
分析:为了考虑精度问题,我们将t乘1024,然后进行模拟,对每1秒流下的水,到下下一层以后一定会变成(a[i][j]-1)/2
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
const int maxn=;
const int inf=<<;
int a[maxn][maxn];
int n,t;
int main()
{
while(cin>>n>>t)
{
memset(a,,sizeof(a));
a[][]=t*inf;
int ans=;
for(int i=;i<=n;i++)
for(int j=;j<=i;j++){
if(a[i][j]>=inf){
ans++;
a[i+][j]+=(a[i][j]-inf)/;
a[i+][j+]+=(a[i][j]-inf)/;
}
}
cout<<ans<<endl;
}
return ;
}
C题
题意:给定一个字符串,可以改变其中k个字母,问最大的重复字串长度,字符串只含有a和b
分析:这题是一个原题,对于区间[l,r],看其上0的数量是否大于k,若小于k,则[l+1,r]必然也小于k,统计[1,n]上的最大长度即可。统计的时候用二分思想,然后分别对a和b进行统计,最后求其最大值即可。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
const int maxn=;
char s[maxn];
int a[maxn],b[maxn],dp1[maxn],dp2[maxn];
int n,k;
int main()
{
while(cin>>n>>k)
{
memset(dp1,,sizeof(dp1));
//memset(a,0,sizeof(a));
scanf("%s",s);
for(int i=;i<n;i++){
int t=i;
if(s[i]=='a')
a[++t]=;
else
a[++t]=;
}
//for(int i=1;i<=n;i++)
// cout<<a[i];
//cout<<endl;
for(int i=;i<=n;i++){
if(!a[i])
dp1[i]=dp1[i-]+;
else
dp1[i]=dp1[i-]; }
int left1=,right1=,mx1=,j1=;
for(int i=;i<=n;i++){
while(dp1[i]-dp1[j1]>k) j1++;
if(mx1<i-j1){
mx1=i-j1;
left1=j1+;
right1=i;
}
} memset(dp2,,sizeof(dp2));
//memset(b,0,sizeof(b));
for(int i=;i<n;i++){
int h=i;
if(s[i]=='b')
b[++h]=;
else b[++h]=;
} for(int i=;i<=n;i++){
if(!b[i])
dp2[i]=dp2[i-]+;
else
dp2[i]=dp2[i-];
}
int left2=,right2=,mx2=,j2=;
for(int i=;i<=n;i++){
while(dp2[i]-dp2[j2]>k) j2++;
if(mx2<i-j2){
mx2=i-j2;
left2=j2+;
right2=i;
}
}
cout<<max(mx1,mx2)<<endl;
}
return ;
}
Cdoefroces #354的更多相关文章
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- SCUT - 354 - CC的简单多项式 - 杜教筛
https://scut.online/p/354 跟多项式一点关系都没有. 注意到其实两个多项式在1处求值,那么就是他们的系数加起来. 列一列发现系数就是n以内两两求gcd的值,还自动把0去掉了. ...
- <Binary Search> 81 (高频)34 (很难hard, 高频)315 (hard)354
81. Search in Rotated Sorted Array II 如果中间的数小于最右边的数,则右半段是有序的,若中间数大于最右边数,则左半段是有序的.而如果可以有重复值,就会出现来面两种情 ...
- SQLPrompt 6.3.0.354 完美破解 安装于 SQL Server 2012/2014
SQL SERVER 2012格式化 SQL SERVER 2014格式化 SQLPrompt_6.4.0.641 破解版 百度云下载 迅雷下载 百度网盘下载 SQL Prompt 是一款拥有SQL智 ...
- Java实现 LeetCode 354 俄罗斯套娃信封问题
354. 俄罗斯套娃信封问题 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现.当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一 ...
- 1、线性DP 354. 俄罗斯套娃信封问题
354. 俄罗斯套娃信封问题 https://leetcode-cn.com/problems/russian-doll-envelopes/ 算法分析 首先我们从两种情况来讨论这个问题: w无重复值 ...
- JavaMoney规范(JSR 354)与对应实现解读
一.概述 1.1 当前现状 当前JDK中用来表达货币的类为java.util.Currency,这个类仅仅能够表示按照**[ISO-4217]**描述的货币类型.它没有与之关联的数值,也不能描述规范外 ...
- Codeforces Round #354 (Div. 2)
贪心 A Nicholas and Permutation #include <bits/stdc++.h> typedef long long ll; const int N = 1e5 ...
- leetCode 354. Russian Doll Envelopes
You have a number of envelopes with widths and heights given as a pair of integers (w, h). One envel ...
随机推荐
- ServletConfig与ServletContext对象(接口)
ServletConfig:封装servlet的配置信息. 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. <ser ...
- XListview刷新和加载
//继承IXListViewListenerpublic class MainActivity extends Activity implements OnItemClickListener,IXLi ...
- android 代码动态创建视图
LinearLayout 如何动态设置 margin? LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayou ...
- EnglishWords----1
upon在...上面 upright垂直的,直立的 upward向上的 outward外面的,向外的 downward向下的 vertical垂直的 parallel平行的 sow播种 cut切 ch ...
- Django源码解析
http://www.cnblogs.com/pythoner/archive/2011/07/30/2121599.html
- java开发地三天——数据库介绍
又是一天萌萌哒地过去了,今天是处理数据库的部分.SQL Server 2008,这东西是上学期搞MFC的时候接触到的,那时候话说安装就是一个大问题,然后在学SQL语句的时候感觉还好,一切都还过得去.现 ...
- wind7系统修改host
http://jingyan.baidu.com/article/e5c39bf56564a539d7603312.html 由于软件注册的原因,我需要更改hosts文件来防止服务器验证!那么在我们修 ...
- Android ART运行时无缝替换Dalvik虚拟机的过程分析
Android ART运行时无缝替换Dalvik虚拟机的过程分析 分类: Android2014-01-13 00:59 42722人阅读 评论(66) 收藏 举报 AndroidARTDalvikV ...
- Anroid ListView分组和悬浮Header实现
Anroid ListView分组和悬浮Header实现 分类: Android2014-01-27 12:26 6585人阅读 评论(13) 收藏 举报 listviewheadersection分 ...
- aapt: error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS64
前阵子在ubuntu上搭载安卓的开发环境(Eclipse+Sdk+Adt),搭载是完成了,但是却出现了该问题: aapt: error while loading shared libraries: ...