May Challenge 2017
分析:水题,设置优先级,判断如果后面小于前面就输出no
#include "iostream"
#include "cstdio"
#include "cstring"
#include "string"
using namespace std;
const int maxn=+;
string s;
int T;
int judge(char s){
if(s=='C')
return ;
else if(s=='E')
return ;
else
return ;
}
int main()
{
cin>>T;
while(T--){
cin>>s;
int flag=;
int len=s.length();
for(int i=;i<len-;i++){
if(judge(s[i])>judge(s[i+])){
flag=; break;
}
}
if(flag) cout<<"no"<<endl;
else cout<<"yes"<<endl;
}
}
分析:简单DP,看上一个状态和当前状态的关系,如果先修课程数相同,则加1,否则取上一门课程加1和当前课程所需先修的最小值
#include "iostream"
#include "cstdio"
#include "cstring"
#include "string"
using namespace std;
const int maxn=+;
int T;
int a[maxn];
int dp[maxn];
int main()
{
cin>>T;
while(T--)
{
int n;
cin>>n;
a[]=;
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
memset(dp,,sizeof(dp));
dp[]=;
for(int i=;i<=n;i++){
if(a[i]==a[i-])
dp[i]=dp[i-]+;
else{
dp[i]=min((i-a[i]),dp[i-]+);
}
}
cout<<dp[n]<<endl;
}
return ;
}
Median of adjacent maximum numbers
分析:水题,从大到小排,小的排在奇数位,大的排在偶数位即可
#include "iostream"
#include "cstdio"
#include "cstring"
#include "string"
#include "algorithm"
using namespace std;
const int maxn=*+;
int T,n;
int a[maxn];
int main()
{
cin>>T;
while(T--){
cin>>n;
for(int i=;i<=*n;i++)
cin>>a[i];
sort(a+,a+*n+);
int c[maxn];
c[]=;
for(int i=;i<=n;i++)
c[*i-]=a[i];
for(int i=n+;i<=*n;i++)
c[*(i-n)]=a[i];
int b[maxn];
b[]=;
for(int i=;i<=n;i++){
b[i]=max(c[*i],c[*i-]);
}
cout<<b[n/+]<<endl;
for(int i=;i<=*n;i++)
cout<<c[i]<<" ";
cout<<endl;
}
return ;
}
分析:很有意思的一道题,首先预处理一下每个位置往前的k个位置的有多少1,然后我们用线段树维护区间最大值即可,坑点比较多,一个是k>=n时候,还有一个是下标问题,容易RE
#include "iostream"
#include "cstdio"
#include "cstring"
#include "string"
#include "cmath"
#include "vector"
using namespace std;
const int maxn=+;
string t;
int n,k,p;
int dp[maxn];
int a[maxn];
int h[maxn];
void init(string zz){
if(zz[]=='')
dp[]=;
for(int i=;i<k;i++){
if(zz[i]=='')
dp[i]=dp[i-]+;
else
dp[i]=dp[i-];
}
int len=zz.length();
int pos=;
for(int i=k;i<len;i++){
if(zz[pos]==''&&zz[i]=='')
dp[i]=dp[i-]+;
else if(zz[pos]==zz[i])
dp[i]=dp[i-];
else
dp[i]=dp[i-]-;
pos++;
}
}
struct node
{
int left,right,min,max;
}c[*];
void buildtree(int l,int r,int root)
{
c[root].left=l;
c[root].right=r;
if(l==r)
{
c[root].min=c[root].max=a[l];
return ;
}
int mid=(l+r)/;
buildtree(l,mid,root*);
buildtree(mid+,r,root*+);
c[root].min=min(c[root*].min,c[root*+].min);
c[root].max=max(c[root*].max,c[root*+].max);
}
void findtree(int l,int r,int root,int &min1,int &max1)
{
if(c[root].left==l&&c[root].right==r)
{
min1=c[root].min;
max1=c[root].max;
return ;
}
int mid=(c[root].left+c[root].right)/;
if(mid<l)
findtree(l,r,root*+,min1,max1);
else if(mid>=r)
findtree(l,r,root*,min1,max1);
else
{
int min2,max2;
findtree(l,mid,root*,min1,max1);
findtree(mid+,r,root*+,min2,max2);
min1=min(min1,min2);
max1=max(max1,max2);
}
}
int main()
{
scanf("%d%d%d",&n,&k,&p);
for(int i=;i<=n;i++){
int x;
scanf("%d",&x);
t+=(x+'');
}
int len=t.length();
string s=t+t;
memset(dp,,sizeof(dp));
init(s);
for(int i=*len-;i>=;i--){
a[*len-i]=dp[i];
}
buildtree(,*len,);
char r[maxn];
scanf("%s",r);
int min1,max1;
int cnt=;
for(int i=;i<p;i++){
if(r[i]=='!'){
cnt=(cnt+)%len;
}
else{
if(k>=n){
printf("%d\n",dp[*len-]);
continue;
}
if(!cnt)
findtree(cnt+,cnt+n-k+,,min1,max1);
else
findtree(cnt,cnt+n-k,,min1,max1);
printf("%d\n",max1);
}
}
return ;
}
分析:直接暴力会T,用map来统计mp[a1]表示a1能有多少个组合,然后把相同的情况合并一下递推即可
#include "iostream"
#include "cstdio"
#include "cstring"
#include "string"
#include "cmath"
#include "map"
using namespace std;
map<long long,long long>mp;
map<long long,long long>::reverse_iterator it;
int main()
{
int n;
long long k;
cin>>n>>k;
for(int i=;i<=n;i++){
long long p;
cin>>p;
if(p>k) continue;
long long h=k/p;
for(it=mp.rbegin();it!=mp.rend();it++){
long long m=it->first;
if(h>=m){
mp[p*m]=mp[p*m]+it->second;
}
}
mp[p]=mp[p]+;
}
long long ans=;
for(it=mp.rbegin();it!=mp.rend();it++)
ans+=it->second;
cout<<ans<<endl;
}
May Challenge 2017的更多相关文章
- 【AtCoder】Mujin Programming Challenge 2017
Mujin Programming Challenge 2017 A - Robot Racing 如果每个数都是一个一个间隔开的,那么答案是\(n!\) 考虑把一个数挪到1,第二个数挪到3,以此类推 ...
- CodeChef June Challenge 2017
好气啊,本来以为比赛时间还有很多,结果回家养病两天回到学校怎么比赛就结束了(雾),大约是小高考弄错了时间? 挑3道有意思的写写题解吧. Cloning 题目大意:给一个序列,每次询问两个等长区间,问区 ...
- [codechef July Challenge 2017] Calculator
CALC: 计算器题目描述大厨有一个计算器,计算器上有两个屏幕和两个按钮.初始时每个屏幕上显示的都是 0.每按一次第一个按钮,就会让第一个屏幕上显示的数字加 1,同时消耗 1 单位的能量.每按一次第二 ...
- [codechef July Challenge 2017] Chef and Sign Sequences
CHEFSIGN: 大厨与符号序列题目描述大厨昨天捡到了一个奇怪的字符串 s,这是一个仅包含‘<’.‘=’和‘>’三种比较符号的字符串.记字符串长度为 N,大厨想要在字符串的开头.结尾,和 ...
- [codechef July Challenge 2017] IPC Trainers
IPCTRAIN: 训练营教练题目描述本次印度编程训练营(Indian Programming Camp,IPC)共请到了 N 名教练.训练营的日程安排有 M 天,每天最多上一节课.第 i 名教练在第 ...
- [codechef July Challenge 2017] Pishty and tree
PSHTTR: Pishty 和城堡题目描述Pishty 是生活在胡斯特市的一个小男孩.胡斯特是胡克兰境内的一个古城,以其中世纪风格的古堡和非常聪明的熊闻名全国.胡斯特的镇城之宝是就是这么一座古堡,历 ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Chef And Easy Xor Queries
https://www.codechef.com/DEC17/problems/CHEFEXQ 题意: 位置i的数改为k 询问区间[1,i]内有多少个前缀的异或和为k 分块 sum[i][j] 表示第 ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Chef and Hamming Distance of arrays
https://www.codechef.com/DEC17/problems/CHEFHAM #include<cstdio> #include<cstring> #incl ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Total Diamonds
https://www.codechef.com/DEC17/problems/VK18 #include<cstdio> #include<iostream> #includ ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Penalty Shoot-out
https://www.codechef.com/DEC17/problems/CPLAY #include<cstdio> #include<algorithm> using ...
随机推荐
- LCA rmq st model
LCA:倍增 memset(p,-,sizeof(p)); inline void dfs(int u) { ;i=e[i].next) { int v=e[i].v; ) { deep[v]=dee ...
- spark学习常用的操作
首先,使用 ScalaIDE 或 IDEA 创建 Scala 的 Maven 工程.需要用到 spark-core,spark-sql,spark-streaming 的 jar 包,pom 文件如下 ...
- NIO与传统IO的区别(形象比喻)[转]
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大.使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数 ...
- Linux下sh/bash/source/.命令的区别(转)
一..sh文件介绍 .sh为Linux的脚本文件,我们可以通过.sh执行一些命令,可以理解为windows的.bat批处理文件. 二.点命令(.) .命令和source是同一个命令,可以理解为sour ...
- 【面试 JVM】【第六篇】JVM调优
六部分内容: 一.内存模型 1.程序计数器,方法区,堆,栈,本地方法栈的作用,保存那些数据 可以画个大图出来,很清晰 jvm内存模型主要指运行时的数据区,包括5个部分. 栈也叫方法栈,是线程私有的,线 ...
- Go -- 中结构体与字节数组能相互转化
编码时如下,假设默认你的结构体为data func Encode(data interface{}) ([]byte, error) { buf := bytes.NewBuffer(nil) enc ...
- java平台利用jsoup开发包,抓取优酷视频播放地址与图片地址等信息。
/******************************************************************************************** * aut ...
- nginx 配置nginx.conf,负载均衡,逻辑分流
nginx 最重要的配置文件nginx.conf: 一般的配置我不做解释,网上到处都是,主要对主要的几点进行注释(如下) worker_processes ; error_log /data/logs ...
- 简单使用 Mvc 内置的 Ioc
简单使用 Mvc 内置的 Ioc 本文基于 .NET Core 2.0. 鉴于网上的文章理论较多,鄙人不才,想整理一份 Hello World(Demo)版的文章. 目录 场景一:简单类的使用 场景二 ...
- 【前端】怎样成长为一名优秀的前端project师---
浅谈本人的经验.也算是与大家交流吧,本人眼下也是从事前端的工作,时间并不长,说的不好,请见谅. 首先,前端project师必须得掌握HTML.CSS和JavaScript. 仅仅懂当中一个或两个还不行 ...