Codeforces Round #616 (Div. 2)
地址:http://codeforces.com/contest/1291
A题就不写解析了,就是给一个数,是不是本身满足这个条件或者删除某些数字来达到这个条件:奇数,各个位上的数字加起来是偶数。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[];
int main()
{
int t;
cin>>t;
while(t--)
{
int n ;
cin>>n;
cin>>s;
int len = strlen(s);
int ji=,ou=;
int sum = ,ok=;
int mid;
for(int i= ;i <len;i++)
{
int k = s[i]-'';
sum+=k;
if(sum%==&&k%!=)
{
mid=i;ok=;
}
}
if(!ok)
cout<<"-1"<<endl;
else
{
//cout<<":: ";
for(int i=;i<=mid;i++)
cout<<s[i];
cout<<endl;
}
}
}
B题挺有意思:http://codeforces.com/contest/1291/problem/B
题意:给出n个数字,满足以下任意一个条件即为锐化:单调递增/单调递减/先增后减(尖)。如果本身不符合,可以对任意一个数进行-1的操作任意次,前提是保证>=0。
解析:由于我们可以对任意数字进行-1的操作任意次,所以我们可以把所给的数字进行更加直观化的变化: 比如 2 3 49 999 ----->> 0 1 2 3 。所以先记录单增结束的位置,这么判断呢,想象一下,从头往后放 0 1 2 3 2,如果出现了a[i]<i(比如i=4),说明什么?此时的i的前一位,a[i-1]=i-1,当前的a[i]<=i-1,那么它要么等于前一位,要么小于前一位,单增断掉了,所以就得到了单增结束的点。同理,记录从右往左的单增结束点,即正着看的单减的开始点(记得坐标转化为n-i-1)
结束点一个为L,一个为R,如果L<R,肯定是实现不了锐化的。比如: 012323210,L=3,R=5,L<R,中间那个a[i]<i数字的存在是无论如何也锐化不了数组的。所以只要保证L>=R即可。根据我目前的发现,只要L==R,那么可以变成先增后减,而L>R对应的是单点递增或者单调递减,如有其他情况还请指正!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 3e5+;
typedef long long ll;
ll a[maxn];
int main()
{
int t;
cin>>t;
while(t--)
{
int n ;
cin>>n;
for(int i=;i<n;i++)
cin>>a[i];
int l=n,r=;
for(int i=;i<n;i++)
{
if(a[i]<i)
break;
l=i;
}
for(int i=n-;i>=;i--)
{
if(a[i]<(n-i-))
break;
r=i;
}
if(l>=r)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
Codeforces Round #616 (Div. 2)的更多相关文章
- Codeforces Round #616 (Div. 2) B. Array Sharpening
t题目链接:http://codeforces.com/contest/1291/problem/B 思路: 用极端的情况去考虑问题,会变得很简单. 无论是单调递增,单调递减,或者中间高两边低的情况都 ...
- Codeforces Round #616 (Div. 2) C. Mind Control
题目链接:http://codeforces.com/contest/1291/problem/C 思路: 我们可以很容易想到,只有前m-1个人才能影响m的选择的大小,后面的人无法影响. 如果所有人都 ...
- Codeforces Round #616 (Div. 2) D
莫队的模板 struct node{ int l,r,id; }q[maxn]; int cmp(node a,node b) { ) ? a.r < b.r : a.r > b.r); ...
- Codeforces Round #616 (Div. 2) 题解
A. Even But Not Even 题意: 定义一个数所有位置的和为偶数它本身不为偶数的数为ebne,现在给你一个数字字符串,你可以删除任意位置上的数字使其变为ebne输出任意改变后的结果,如果 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
随机推荐
- 02-02Android 学习进度报告二
今天我主要学习了Android的UI基础布局知识,主要是学习View与ViewGroup的概念以及其区别. 首先是代码说明: <?xml version="1.0" enco ...
- 仿有道词典App开发
最近在学习HCoder提供的仿有道词典App项目,该项目采用MUI为前端框架,服务端采用PHP,底层采用了H5+.
- JDBC和连接池
JDBC 所有的数据库操作框架都是用在JDBC的基础上做多次封装的,因为JDBC的操作很复杂 引入Jar包 连接数据库操作 书写sql语句,传参 查询,取值 关闭连接 //1.注册驱动(静态方法)(包 ...
- 「NOIP2011」聪明的质监员
传送门 Luogu 解题思路 第一眼肯定是没什么思路的 dalao勿喷,但我们仔细看一看式子就会发现 \(Y\) 是随着 \(W\) 的变大而变小的. 所以 \(Y\) 随 \(W\) 的变化是单调的 ...
- linux问题故障
分析问题的方法论 What-现象是什么样的 When-什么时候发生 Why-为什么会发生 Where-哪个地方发生的问 How much-耗费了多少资源 How to do-怎么解决问题 4. cpu ...
- SciPy 信号处理
章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...
- LR、SVM、RF、GBDT、XGBoost和LightGbm比较
正则化 L1范数 蓝色的是范数的解空间,红色的是损失函数的解空间.L2范数和损失函数的交点处一般在坐标轴上,会使\(\beta=0\),当然并不一定保证交于坐标轴,但是通过实验发现大部分可以得到稀疏解 ...
- python-python基础6(面向对象)
一.面向对象编程 编程范式 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马 ...
- L1-046. 整除光棍(模拟除法)
题意: 这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1.11.111.1111等.传说任何一个光棍都能被一个不以5结尾的奇数整除.比如,111111就可以被13整除. 现在, ...
- BSGS&ExBSGS
BSGS&ExBSGS 求解形如 \[a^x\equiv b\pmod p\] 的高次同余方程 BSGS 假装\(gcd(a,p)=1\). 设\(m=\lceil\sqrt p \rceil ...