Chef and his daily routine

分析:水题,设置优先级,判断如果后面小于前面就输出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;
}
}

Courses in an university

分析:简单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 ;
}

Chef and Sub Array

分析:很有意思的一道题,首先预处理一下每个位置往前的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 ;
}

Chef and Subsequences

分析:直接暴力会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的更多相关文章

  1. 【AtCoder】Mujin Programming Challenge 2017

    Mujin Programming Challenge 2017 A - Robot Racing 如果每个数都是一个一个间隔开的,那么答案是\(n!\) 考虑把一个数挪到1,第二个数挪到3,以此类推 ...

  2. CodeChef June Challenge 2017

    好气啊,本来以为比赛时间还有很多,结果回家养病两天回到学校怎么比赛就结束了(雾),大约是小高考弄错了时间? 挑3道有意思的写写题解吧. Cloning 题目大意:给一个序列,每次询问两个等长区间,问区 ...

  3. [codechef July Challenge 2017] Calculator

    CALC: 计算器题目描述大厨有一个计算器,计算器上有两个屏幕和两个按钮.初始时每个屏幕上显示的都是 0.每按一次第一个按钮,就会让第一个屏幕上显示的数字加 1,同时消耗 1 单位的能量.每按一次第二 ...

  4. [codechef July Challenge 2017] Chef and Sign Sequences

    CHEFSIGN: 大厨与符号序列题目描述大厨昨天捡到了一个奇怪的字符串 s,这是一个仅包含‘<’.‘=’和‘>’三种比较符号的字符串.记字符串长度为 N,大厨想要在字符串的开头.结尾,和 ...

  5. [codechef July Challenge 2017] IPC Trainers

    IPCTRAIN: 训练营教练题目描述本次印度编程训练营(Indian Programming Camp,IPC)共请到了 N 名教练.训练营的日程安排有 M 天,每天最多上一节课.第 i 名教练在第 ...

  6. [codechef July Challenge 2017] Pishty and tree

    PSHTTR: Pishty 和城堡题目描述Pishty 是生活在胡斯特市的一个小男孩.胡斯特是胡克兰境内的一个古城,以其中世纪风格的古堡和非常聪明的熊闻名全国.胡斯特的镇城之宝是就是这么一座古堡,历 ...

  7. 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] 表示第 ...

  8. 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 ...

  9. CF&&CC百套计划2 CodeChef December Challenge 2017 Total Diamonds

    https://www.codechef.com/DEC17/problems/VK18 #include<cstdio> #include<iostream> #includ ...

  10. CF&&CC百套计划2 CodeChef December Challenge 2017 Penalty Shoot-out

    https://www.codechef.com/DEC17/problems/CPLAY #include<cstdio> #include<algorithm> using ...

随机推荐

  1. java集合系列之LinkedList源码分析

    java集合系列之LinkedList源码分析 LinkedList数据结构简介 LinkedList底层是通过双端双向链表实现的,其基本数据结构如下,每一个节点类为Node对象,每个Node节点包含 ...

  2. android EditText禁止复制粘贴完整代码

    <!-- 定义基础布局LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/ap ...

  3. Thrift --- 支持双向通信

    [问题] Thrift采用了C/S模型,不支持双向通信:client只能远程调用server端的RPC接口,但client端则没有RPC供server端调用,这意味着,client端能够主动与serv ...

  4. 汉澳sinox通过ndis执行windows驱动程序

    汉澳sinox不仅能通过wine执行windows应用程序.还能通过ndis执行windows驱动程序 汉澳sinox使用 Windows NDIS 驱动程序 详细实现方法是用ndisgen把wind ...

  5. 转:VMware中三种网络连接的区别

    转自:http://www.cnblogs.com/rainman/archive/2013/05/06/3063925.html VMware中三种网络连接的区别   1.概述 2.bridged( ...

  6. [WASM + Rust] Debug a WebAssembly Module Written in Rust using console.log

    Having some kind of debugging tool in our belt is extremely useful before writing a lot of code. In ...

  7. [Unit Testing] Fundamentals of Testing in Javascript

    In this lesson, we’ll get the most fundamental understanding of what an automated test is in JavaScr ...

  8. sublime 高速打开跳转至关联文件

    在下一枚web前端,近期在用sublime text2编辑器写前端.因为页面较多,项目较大,所以难免出现非常多引用文件和一些js的teample模板. 问题:在Sublime Text编写代码过程中要 ...

  9. Qt浅谈之二十一log调试日志

    一.简单介绍 近期因调试code时,想了解程序的流程,但苦于没有一个简易的日志记录,不停使用qDebug打印输出,而终于提交代码时得去多次删除信息打印,有时还会出现新改动的代码分不清是哪些部分.而使用 ...

  10. 《Unix网络编程》中的错误处理函数

    #include "net.h" #include <syslog.h> // syslog() int daemon_proc; static void err_do ...