随便瞎写,其实没做出多少题:

Chef and Cake

题目大概是用输入的数生成 一个数组并且生成出q个【X,Y】的询问,

数组长度N<=1000000,q<=10^7;

开始用线段树,RMQ,分块能切过去,但是线段树RE,RMQ re ,分块最多40分。

但是一直忽视了区间询问的[X Y]  K<=Y-X+1<=2K; K是给定的数。

然后是利用一些思想。

比如 我们每次求出DP【X】    ----------> 表示 I  in【X,X+K-1] 范围 min(A[i]);A[i] 生成的数组。

询问X,Y的区间最小值 =Mi年(dp[x],dp[y-k+1]);

求出每个dp;

这里利用单调队列,熟悉的应该比较简单。

 #include<cstdio>
#include<algorithm>
#include<cmath>
#include<string.h>
#include<string>
#include<iostream>
#include<vector>
#include<map>
#include<deque>
#include<vector> #define inf 0x3f3f3f
#define N 10000105
#define mod 1000000007 using namespace std;
typedef long long ll;
int a,b,c,d,e,f,g,r,s,t,m,n,k,q;
int L1,La,Lc,Lm,D1,Da,Dc,Dm; ll A[N];
int L[N],R[N]; void work()//生成数据部分
{
ll tmp=t;
for (int x=;x<=n;x++)
{
tmp=tmp*t%s;
if (tmp<=r) A[x]=(A[x-]*A[x-]%m*a+A[x-]*b%m+c)%m;
else A[x]=(A[x-]*A[x-]%m*d+A[x-]*e%m+f)%m;
} for (int i=;i<=q;i++)
{
/* L1=(ll) ((ll)La*L1+Lc)%Lm;
D1=(ll) ((ll)Da*D1+Dc)%Dm;
生成数据有问题,注意La为int La*L1溢出
*/
L1=(ll) ((ll)La*L1+Lc)%Lm;
D1=(ll) ((ll)Da*D1+Dc)%Dm;
L[i]=L1+;
R[i]=min(L[i]+k-+D1,n);
}
} int minarr[N];
int ff[N]; void work2()
{
int i,j,h,t;
h=,t=;//维护一个长度为k的单调递增队列 for (i=;i<=k;i++)
{
while (h<t&&A[i]<=A[ff[t-]]) t--;
ff[t++]=i;
}
j=;
for (;i<=n;i++,j++)
{
minarr[j]=A[ff[h]];
while (h<t&&ff[h]<=i-k) h++;
while (h<t&&A[i]<=A[ff[t-]]) t--;
ff[t++]=i;
}
minarr[j]=A[ff[h]];
} void debug()//debug部分
{
for (int i=;i<=n;i++)
cout<<A[i]<<" ";
cout<<endl;
for (int i=;i<=n-k+;i++)
cout<<minarr[i]<<" ";
cout<<endl;
} int main()
{
while (scanf("%d%d%d",&n,&k,&q)!=EOF){
scanf("%d%d%d%d%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&r,&s,&t,&m,&A[]);
scanf("%d%d%d%d%d%d%d%d",&L1,&La,&Lc,&Lm,&D1,&Da,&Dc,&Dm);
work();
work2();
// debug(); ll ans1,ans2;
ans1=;
ans2=; for (int i=;i<=q;i++)
{
int tmp=min(minarr[L[i]],minarr[R[i]-k+]);
ans1+=tmp;
ans2=ans2*tmp%mod;
}
printf("%lld %lld\n",ans1,ans2);
}
return ;
}

Devu and binary String

也是很有意思的题目:

大意是:给一个01串,我们可以对每个0 1 翻转,使0->1,1->0.

然后问:用最少的翻转次数,是字符串里面没有连续k字符是一样的。

长标题:开始贪心思路是每连续k个一样就 把最后一个翻转,但是会有问题。

当我们可能反转最后一个使的接下来K-1个和 翻转的一个有成为一样的,显然这样并不是最优的

我们可以把前K个中倒数第二个翻转,结果就更优,基于这种贪心思路,这题可以这么做。

然后注意一下K=1的特判。

Codechef May Challenge 2015的更多相关文章

  1. 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015

    Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...

  2. Codechef April Challenge 2019 游记

    Codechef April Challenge 2019 游记 Subtree Removal 题目大意: 一棵\(n(n\le10^5)\)个结点的有根树,每个结点有一个权值\(w_i(|w_i\ ...

  3. Codechef October Challenge 2018 游记

    Codechef October Challenge 2018 游记 CHSERVE - Chef and Serves 题目大意: 乒乓球比赛中,双方每累计得两分就会交换一次发球权. 不过,大厨和小 ...

  4. Codechef September Challenge 2018 游记

    Codechef September Challenge 2018 游记 Magician versus Chef 题目大意: 有一排\(n(n\le10^5)\)个格子,一开始硬币在第\(x\)个格 ...

  5. 「Codechef April Lunchtime 2015」Palindromeness

    「Codechef April Lunchtime 2015」Palindromeness 解题思路 : 考虑对于回文子串 \(s\) 贡献的定义: \[ value_s = [\ s[1,\lflo ...

  6. codechef February Challenge 2018 简要题解

    比赛链接:https://www.codechef.com/FEB18,题面和提交记录是公开的,这里就不再贴了 Chef And His Characters 模拟题 Chef And The Pat ...

  7. RecSys Challenge 2015

    [The Task] Given a sequence of click events performed by some user during a typical session in an e- ...

  8. codechef January Challenge 2014 Sereja and Graph

    题目链接:http://www.codechef.com/JAN14/problems/SEAGRP [题意] 给n个点,m条边的无向图,判断是否有一种删边方案使得每个点的度恰好为1. [分析] 从结 ...

  9. Codechef March Challenge 2014——The Street

    The Street Problem Code: STREETTA https://www.codechef.com/problems/STREETTA Submit Tweet All submis ...

随机推荐

  1. 搜索模板elasticsearch

    搜索: like 对中文分词效率与支持都不太友好elasticsearch 实时的(效率高).分布式(可扩展)的搜索和分析引擎,基于Lucene全文搜索引擎工具包,算法基于倒排索引算法(eg:一篇文章 ...

  2. echarts简单用法快速上手

    1.html结构 简单说就是一个标签一个图表:2.初始化:var myEcharts = echarts.init(document.getElementById("xxx")): ...

  3. CFBundleURLTypes URL scheme

    https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Ar ...

  4. 这就是那个feature map256 256向量

    http://blog.csdn.net/XZZPPP/article/details/51582810 在这个特征图上使用3*3的卷积核(滑动窗口)与特征图进行卷积,那么这个3*3的区域卷积后可以获 ...

  5. 对faster rcnn代码讲解的很好的一个

    http://www.cnblogs.com/houkai/p/6824455.html http://blog.csdn.net/u014696921/article/details/6032142 ...

  6. kotlin - Parcelable implementations generator

    本文摘自——https://kotlinlang.org/docs/tutorials/android-plugin.html Android Extensions plugin provides P ...

  7. dubbo负载均衡策略和集群容错策略

    dubbo负载均衡策略 random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权 ...

  8. python:零散记录

    1.rstrip()删除末尾指定字符串 例如:A = '1,2,3,4,5,' B = A.rstrip(',') B = '1,2,3,4,5' 2.isdigit()方法 Python isdig ...

  9. 生成 Let's Encrypt 免费https证书

    1.打开 SSL For Free 官网:https://www.sslforfree.com/ 2.在输入框内输入你要申请证书的域名,输入完点击 Create Free SSL Certificat ...

  10. Android 图片设置圆角

    Android中经常会遇到对图片进行二次处理,例如加圆角,或者显示圆形图片 方法一: 通过第三方框架Glide实现图片显示有圆角,有三种写法如下: 1.1,第一种实现: RequestOptions ...