牛客网36-A,B题解
A.Rabbit的字符串
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
Rabbit得到了一个字符串,她的好朋友xxx可以给这个字符串施加一次魔法。
魔法可以选择字符串的任一位置,并将该位置后面的所有字符水平拼接到串首。
例如:对于字符串abcde,可以通过施加魔法得到cdeab。
如果xxx通过施加魔法将字符串的字典序变得严格比之前的小,那么他将拿走这一字符串。
Rabbit想知道自己的字符串会不会被xxx拿走。
输入描述:
第一行一个整数n,表示字符串的长度。
接下来一行一个长度为n的只由小写字母组成的字符串。
输出描述:
如果Rabbit的字符串会被xxx拿走,输出“YES”。
否则输出“NO”。
(不输出引号)
示例1
输入
5
cdeab
输出
YES
说明
xxx可以把e之后的部分“ab”放到串首,得到abcde,字典序比cdeab小,故将拿走字符串。
示例2
输入
5
abcde
输出
NO
备注:
1≤n≤100000
字典序的说明:https://en.wikipedia.org/wiki/Alphabetical_order
思路:此题的想法是我的i想法是直接找后边是否存在比它小的,但是我们要考虑相等的时候,比如,abcab,这样也可以,我们可以试着将相等的复制到一个新的串中,然后拼接一下,但是我是水了一下他的数据
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
char str[100005];
int main()
{
int n;
cin>>n;
scanf("%s",str);
int flag=0;
for(int t=1;t<n;t++)
{
if(str[t]<str[0])
{
flag=1;
cout<<"YES"<<endl;
return 0;
}
}
char str1[100005];
for(int t=1;t<n;t++)
{
if(str[t]==str[0]&&str[t+1]<str[1]&&str[t+2]<str[2])
{
flag=1;
cout<<"YES"<<endl;
return 0;
}
}
if(flag==0)
{
cout<<"NO"<<endl;
}
return 0;
return 0;
}
B.Rabbit的工作(1)
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
Rabbit大学毕业后找到了一份实习工作,如果实习通过她就转正了。
实习期共有N天,其中有几天公司集体放假,Rabbit不用上班,剩下时间她可以选择工作或者休息。Rabbit工作总是越来越累,可是每当她休息时,她就重新充满了能量。简而言之,Rabbit第一天工作时这一天会消耗体力1,连续第二天工作时这一天会消耗体力2,连续第三题工作时这一天会消耗体力3,以此类推......每当她休息后,工作的第一天又会消耗体力1。
为了让boss满意,Rabbit想工作尽量多的天数,但是懒惰的Rabbit又想让自己的总体力消耗不超过K。
输入描述:
第一行两个整数N,K。 第二行一个长度为N的01字符串。如果第i个字符为‘1’,表示这一天Rabbit可以选择工作或者休息,否则这一天Rabbit放假。
输出描述:
输出Rabbit最多能工作的天数。
示例1
输入
4 2
1011
输出
2
说明
第三天和第四天里面休息一天即可,总体力消耗为2
备注:
1<=N<=400 1<=K<=N∗(N+1)/2
思路:可以用dp来做
设d[ i ][ j ][ p ]为在 i 天时,一共工作了 j 天,且连续工作了 p 天直到第 i 天时花费的最小体力。那么转移方程很简单:
如果第 i 天我不工作,那么对于所有的合法的 p,d[ i ][ j ][ 0 ]=max( d[ i-1 ][ j ][ p ] ),如果我第 i 天工作,那么对于所有合法的 j 和 p,d[ i ][ j ][ p ]=d[ i-1 ][ j-1 ][ p-1 ]+p,然后对于所有的d[ i ][ j ][ p ]<=k,取一个最大的 j 当答案即可。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int d[405][405][35],n,k,ans;
char s[160000];
int main()
{
cin>>n>>k>>s+1;
memset(d,-1,sizeof(d));
d[0][0][0]=0;
for(int i=1;i<=n;i++)
{
if(s[i]=='1')
{
for(int j=1;j<=n;j++)
for(int p=1;p*(p+1)/2<=n;p++)
if(d[i-1][j-1][p-1]!=-1)
{
d[i][j][p]=d[i-1][j-1][p-1]+p;
if(d[i][j][p]<=k)
ans=max(ans,j);
}
}
for(int j=0;j<=n;j++)
for(int p=0;p*(p+1)/2<=n;p++)
if(d[i-1][j][p]!=-1)
{
if(d[i][j][0]==-1)d[i][j][0]=d[i-1][j][p];
else
d[i][j][0]=min(d[i-1][j][p],d[i][j][0]);
if(d[i][j][0]<=k)
ans=max(ans,j);
}
}
cout<<ans;
}
牛客网36-A,B题解的更多相关文章
- 10.6-10.7 牛客网NOIP模拟赛题解
留个坑... upd:估计这个坑补不了了 如果还补不了就删了吧
- 题解——牛客网Wannafly挑战赛23 B-游戏 (SG函数)
前言 比赛的时候没学过SG函数的蒟蒻以为是道结论题,但是不是QwQ 和dummyummy巨佬一起推了快三个小时的规律 最后去问了真正的巨佬__stdcall __stdcall面带微笑的告诉我们,这是 ...
- 牛客网剑指offer java 全部题解
经过数月的努力,终于更完了牛客网的66道剑指offer,以下的顺序和大家在牛客网的顺序是一样的(排序也花了不少时间),希望对大家找工作/提高算法能力能起到些许帮助. 每天一道剑指offer-二维数组中 ...
- 牛客网暑期ACM多校训练营(第二场) 题解 A run 递推 dp
链接:https://www.nowcoder.com/acm/contest/140/A来源:牛客网 White Cloud is exercising in the playground. Whi ...
- 牛客网 Wannafly挑战赛9 C.列一列-sscanf()函数
C.列一列 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld 链接:https://www.now ...
- 牛客网数据库SQL实战解析(31-40题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网 --java问答题
http://www.nowcoder.com/ 主要是自己什么都不怎么会.在这里可以学习很多的! 第一天看题自己回答,第二天看牛客网的答案! 1 什么是Java虚拟机?为什么Java被称作是“平台无 ...
- 牛客网暑期ACM多校训练营(第七场)Bit Compression
链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 题目描述 A binary string s of length N = 2n is give ...
- Beautiful Numbers(牛客网)
链接:https://ac.nowcoder.com/acm/problem/17385来源:牛客网 题目描述 NIBGNAUK is an odd boy and his taste is stra ...
随机推荐
- python关于文件路径和文件名的操作
os.path.abspath(path) #返回绝对路径(包含文件名的全路径) os.path.basename(path) —— 去掉目录路径获取文件名 os.path.dirname(path) ...
- 微软面试题:鸡蛋从第N层及以上的楼层落下会摔破
from:https://blog.csdn.net/qq_18425655/article/details/52326709 题目: 有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破 ...
- 关于STM32中GPIO的8种工作模式
CSDN:http://blog.csdn.net/l20130316 博客园:http://www.cnblogs.com/luckyalan/ 1 综述 I/O口是单片机中非常常用的外设,STM3 ...
- MySQL学习_计算用户支付方式占比_20161104
计算用户支付方式占比 SELECT b.*#根据城市ID 年月排序 FROM ( SELECT a.* FROM ( #纵向合并 SELECT b1.ID,a1.城市,a1.收款方式,DATE_FOR ...
- poj1733 Parity game[带权并查集or扩展域]
地址 连通性判定问题.(具体参考lyd并查集专题该题的转化方法,反正我菜我没想出来).转化后就是一个经典的并查集问题了. 带权:要求两点奇偶性不同,即连边权为1,否则为0,压缩路径时不断异或,可以通过 ...
- codevs 1144 守望者的逃离
传送门 1144 守望者的逃离 2007年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 恶 ...
- 【LeetCode】062. Unique Paths
题目: A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ...
- CAS单点登录学习(一):服务端搭建
下载先在网上下载cas-server-3.5.2,将里面的cas-server-webapp-3.5.2.war放到tomcat的webapps目录下. https设置cas单点登默认使用的是http ...
- va_list函数学习
当你的函数的参数个数不确定时,就可以使用上述宏进行动态处理,这无疑为你的程序增加了灵活性. va_list的使用方法: a) 首先在函数中定义一个具有va_list型的变量,这个变量是指向参数的指针 ...
- [spoj694&spoj705]New Distinct Substrings(后缀数组)
题意:求字符串中不同子串的个数. 解题关键:每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数. 1.总数减去height数组的和即可. 注意这里height中为什么不需 ...