Codechef May Challenge 2015
随便瞎写,其实没做出多少题:
题目大概是用输入的数生成 一个数组并且生成出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的更多相关文章
- 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015
Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...
- Codechef April Challenge 2019 游记
Codechef April Challenge 2019 游记 Subtree Removal 题目大意: 一棵\(n(n\le10^5)\)个结点的有根树,每个结点有一个权值\(w_i(|w_i\ ...
- Codechef October Challenge 2018 游记
Codechef October Challenge 2018 游记 CHSERVE - Chef and Serves 题目大意: 乒乓球比赛中,双方每累计得两分就会交换一次发球权. 不过,大厨和小 ...
- Codechef September Challenge 2018 游记
Codechef September Challenge 2018 游记 Magician versus Chef 题目大意: 有一排\(n(n\le10^5)\)个格子,一开始硬币在第\(x\)个格 ...
- 「Codechef April Lunchtime 2015」Palindromeness
「Codechef April Lunchtime 2015」Palindromeness 解题思路 : 考虑对于回文子串 \(s\) 贡献的定义: \[ value_s = [\ s[1,\lflo ...
- codechef February Challenge 2018 简要题解
比赛链接:https://www.codechef.com/FEB18,题面和提交记录是公开的,这里就不再贴了 Chef And His Characters 模拟题 Chef And The Pat ...
- RecSys Challenge 2015
[The Task] Given a sequence of click events performed by some user during a typical session in an e- ...
- codechef January Challenge 2014 Sereja and Graph
题目链接:http://www.codechef.com/JAN14/problems/SEAGRP [题意] 给n个点,m条边的无向图,判断是否有一种删边方案使得每个点的度恰好为1. [分析] 从结 ...
- Codechef March Challenge 2014——The Street
The Street Problem Code: STREETTA https://www.codechef.com/problems/STREETTA Submit Tweet All submis ...
随机推荐
- Javaweb学习笔记3—Serverlet
今天来讲javaweb的第三个阶段学习. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 ...
- win7创建无线(WIFI)cmd命令
1.创建无限热点:netsh wlan set hostednetwork mode=allow ssid=name key=12345678. 2.承载网络:netsh wlan start(关闭s ...
- 洛谷 P2680 运输计划
题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球. 小 P 掌管一家 ...
- (转)编写Spring的第一个案例并测试Spring的开发环境
http://blog.csdn.net/yerenyuan_pku/article/details/52832145 Spring4.2.5的开发环境搭建好了之后,我们来编写Spring的第一个案例 ...
- 通过JS加载XML文件,跨浏览器兼容
引言 通过JS加载XML文件,跨多种浏览器兼容. 在Chrome中,没有load方法,需要特殊处理! 解决方案 部分代码 try //Internet Explorer { xmlDoc=new Ac ...
- Opencascade 选择器算法
算法的阶段 该算法包括预处理和三个主要阶段. 使用深度优先搜索逐层遍历所有对象 . 预处理 计算平截头体及其主要特征的计算. 第一阶段 - 遍历第一级BVH树 在成功构建选择平截头体之后,算法开始遍历 ...
- HTML基础(三)图像和超链接
图像 img 元素向网页中嵌入一幅图像. 语法 <img src="" alt="" /> img标签常用属性 src 跳转的url alt 图片不 ...
- 沈南鹏@《遇见大咖》: A轮没投,投了8个月以后就证明了张一鸣是对了,在美国都没有张一鸣这种模式
沈南鹏@<遇见大咖>: A轮没投,投了8个月以后就证明了张一鸣是对了,在美国都没有张一鸣这种模式
- 生产环境屏蔽swagger(动态组装bean)
spring动态组装bean 背景介绍: 整合swagger时需要在生产环境中屏蔽掉swagger的地址,不能在生产环境使用 解决方案 使用动态profile在生产环境中不注入swagger的bean ...
- PLSQL Developer连接数据库报错ora-12514解决
连接本地数据库报以上错误,需要修改本地数据库的监听配置文件(如下所示:) 比如我的本地oracle数据库相关文件在E:\app\user\product\11.2.0\dbhome_1下 然后在E:\ ...