codeforces 1037
题解:
E-trips
哎哎哎好傻逼啊
没有想到算不能的一直在想怎么算能的
太傻逼了
其实很简单
我们只需要对好友<=k的首先dfs一下给他连接着的朋友-1
然后如果小于了就递归下去
这个正确性是比较好想的
最后剩下的每个都是好友>=k个的并且都是这之间的
我们把他们都选了就可以了
这样不支持连边但是可以删边,所以倒着做就可以了
大水题
会发现要求的长度为k,2k-1,3k-2,4k-3的最大值
单调栈维护前驱后继
然后前缀和优化一下求答案就完了
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define rint register int
#define IL inline
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define mid ((h+t)>>1)
const int mo=1e9+;
const int N=2e6;
ll a[N],sum[N],ans;
int nxt[N],pre[N];
struct re{
int a,b;
}ve[N];
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
int n,m;
cin>>n>>m;
rep(i,,n) cin>>a[i];
int k=;
rep(i,,n)
{
while (m*k-k+<=i) k++;
sum[i]=(sum[i-]+k-)%mo;
}
int t=;
rep(i,,n)
{
while (t&&ve[t].a<a[i])
{
nxt[ve[t].b]=i-;
t--;
}
t++; ve[t].a=a[i]; ve[t].b=i;
}
while (t)
{
nxt[ve[t].b]=n;
t--;
}
dep(i,n,)
{
while (t&&ve[t].a<=a[i])
{
pre[ve[t].b]=i+;
t--;
}
t++; ve[t].a=a[i]; ve[t].b=i;
}
while (t)
{
pre[ve[t].b]=;
t--;
}
rep(i,,n)
{
ans+=(sum[nxt[i]-pre[i]+]-sum[nxt[i]-i+-]-sum[i-pre[i]+-])*a[i];
ans%=mo;
}
cout<<(ans+mo)%mo<<endl;
return ;
}
codeforces 1037的更多相关文章
- Codeforces 1037 H. Security
\(>Codeforces \space 1037\ H. Security<\) 题目大意 : 有一个串 \(S\) ,\(q\) 组询问,每一次给出一个询问串 \(T\) 和一个区间 ...
- Manthan, Codefest 18 (Div 1 + Div 2) (A~E)
目录 Codeforces 1037 A.Packets B.Reach Median C.Equalize D.Valid BFS E.Trips(正难则反) Codeforces 1037 比赛链 ...
- CF 1037 D. Valid BFS?
D. Valid BFS? http://codeforces.com/contest/1037/problem/D 题意: 给一个序列,一棵树,判断能否bfs这棵树,得到这个序列. 分析: 将每个点 ...
- [Codeforces 1037E] Trip
[题目链接] http://codeforces.com/problemset/problem/1037/E [算法] 首先离线 , 将问题倒过来考虑 , 转化为 : 每次删除一条边 , 此时最多有多 ...
- [Codeforces 1037D] Valid BFS?
[题目链接] http://codeforces.com/problemset/problem/1037/D [算法] 首先求出每个点的父节点 , 每棵子树的大小 然后判断BFS序是否合法即可 时间复 ...
- [codeforces 1037D] Valid BFS? 解题报告(验证bfs序,思维题)
题目链接:http://codeforces.com/problemset/problem/1037/D 题目大意: 给出一棵树,询问一个序列是否可能为这棵树从节点1开始遍历的bfs序 题解: 对于每 ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
随机推荐
- 析构函数中的virtual是否必要?
我们经常听到建议要把构造函数不能为虚,析构函数最好为虚,这是为什么? 如下例子: // pvtable1.cpp : 定义控制台应用程序的入口点. #include "stdafx.h&qu ...
- arx对正在操作的文件进行保存
//对正在操作的文件进行保存 STDMETHODIMP CTHDatabase::Save(void) { // TODO: 在此添加实现代码 Acad::ErrorStatus es ; try{ ...
- Unity3D动态生成多边形
来自https://blog.csdn.net/qq_14903317/article/details/69668521 自由绘制多边形 https://blog.csdn.net/lei_710 ...
- git与eclipse集成之添加.gitignore文件
1.1. 添加.gitignore文件 .gitignore 配置文件用于配置不需要加入版本管理的文件 1.以斜杠/开头表示目录: 2.以星号*通配多个字符: 3.以问号?通配单个字符 4.以方括号[ ...
- Kali Linux2018 上安装open-vm-tools实现虚拟机交互
最新的kali linux2018已经不再支持原有的vmwaretools,即使安装了也不能实现主机与客户机之间的交互(比如从主机复制文件到客户机).安装open-vm-tools替代vm tools ...
- python pip下载速度慢的解决方法
pip是python内置的非常好用的下载工具,基本可以下载全部的python库.它还有一个非常好的特点,当你安装一个库的时候,它会自动帮你安装所有这个库的依赖库.完全一键式操作.非常方便.但是由于pi ...
- Ubuntu解除"输入密码以解锁密钥环”
解决办法有两种: 1.去掉默认密钥环的密码: 打开应用程序->附件->密码和加密密钥(如果你的没有,在终端中输入 seahorse),切换到密码选项卡,会看到一个密码密钥环(我的密钥环是 ...
- AES加解密程序的实现
AES加解密程序的实现正常情况,用户不能访问sys.dbms_crypto,需要DBA授权:grant execute on dbms_crypto to crm;建立加解密的PKG_AES包:CRE ...
- destoon使用
使用小计 1.判断是否是手机端 {$DT_TOUCH}模板中使用 2.判断句 {if} {/if} 3.表单管理 扩展功能-----表单管理:添加表单---->管理表单选项------> ...
- Confluence 6 恢复一个空间
你可以导出一个空间 – 包括页面,评论和附件到一个压缩的 XML 文件中,可选的你可以在 XML 文件中包括所有空间使用的附件.希望导入空间到其他的 Confluence 站点中,请按照下面的方法进行 ...