洛谷比赛 U4858 sum
U4858 sum
题目提供者666sb666
最新讨论
题目背景
定义一个序列的价值为序列中相邻元素差的绝对值之和。
如序列{2,1,3}的价值为|2-1|+|1-3|=3,而序列{4}的价值为0。
题目描述
现对于一给定序列,求价值最大的子序列的数量。
保证原序列中相邻的两个数不同。
注意:子序列不用连续
输入输出格式
输入格式:
第一行一个正整数n,表示序列中元素的个数。
接下来n行,每行一个数表示序列中的一个元素。
输出格式:
一个数表示数量。答案对1000000007取模。
输入输出样例
输入样例#1:
3
1
2
3
输出样例#1:
2
说明
样例解释:
40%:n<=1000
100%:n<=100000
数组中的元素的范围在int内
/*
恩想到正解了.
恩想的太多+码力太差.
W到挺.
*/
#include<iostream>
#include<cstdio>
#define MAXN 100001
#define mod 1000000007
#define LL long long
using namespace std;
LL s[MAXN],n,tot,a[MAXN],ans=1,t;
LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
LL ab(int x,int y)
{
if(x-y<=0) return y-x;
return x-y;
}
LL mi(LL a,LL b)
{
LL tot=1;
while(b)
{
if(b&1) tot=(tot*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return tot;
}
int main()
{
n=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int i=2;i<=n;i++)
{
if(a[i]<a[i-1]) t++;
else if(t>1) ans=(ans*mi(2,t-1))%mod,t=0;
}
if(t>1) ans=(ans*mi(2,t-1))%mod,t=0;
for(int i=2;i<=n;i++)
{
if(a[i]>a[i-1]) t++;
else if(t>1) ans=(ans*mi(2,t-1))%mod,t=0;
}
if(t>1) ans=(ans*mi(2,t-1))%mod;
cout<<ans;
return 0;
}
/*
正解还是比较好想的.
观察一下有的数是没有贡献的.
比如
1 2 3 4 5 4 3 2 1.
ans就是|5-1|+|1-5|.
那么中间的数可选可不选.
用乘法原理就可以了.
*/
#include<iostream>
#include<cstdio>
#define MAXN 100001
#define mod 1000000007
#define LL long long
using namespace std;
LL s[MAXN],n,tot,a[MAXN],ans=1,t;
LL read()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}
LL ab(int x,int y)
{
if(x-y<=0) return y-x;
return x-y;
}
LL mi(LL a,LL b)
{
LL tot=1;
while(b)
{
if(b&1) tot=(tot*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return tot;
}
int main()
{
n=read();
for(int i=1;i<=n;i++) a[i]=read();
for(int i=2;i<=n;i++)
{
if(a[i]<a[i-1]) t++;
else if(t>1) ans=(ans*mi(2,t-1))%mod,t=0;
}
if(t>1) ans=(ans*mi(2,t-1))%mod,t=0;
for(int i=2;i<=n;i++)
{
if(a[i]>a[i-1]) t++;
else if(t>1) ans=(ans*mi(2,t-1))%mod,t=0;
}
if(t>1) ans=(ans*mi(2,t-1))%mod;
cout<<ans;
return 0;
}
洛谷比赛 U4858 sum的更多相关文章
- 洛谷比赛 「EZEC」 Round 4
洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...
- 洛谷P2398 GCD SUM (数学)
洛谷P2398 GCD SUM 题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入 ...
- 洛谷比赛 U5442 买(最长链)
U5442 买 题目提供者bqsgwys 标签 树形结构 树的遍历 洛谷原创 题目背景 小E是个可爱的电路编码员. 题目描述 一天小E又要准备做电路了,他准备了一个电路板,上面有很多个电路元器件要安装 ...
- 洛谷比赛 Joe的数
/* 开始暴力+滚动数组70 后来发现不用循环很多 找p的倍数 找%p意义下为0的就好了 */ #include<iostream> #include<cstdio> #inc ...
- 洛谷P2398 GCD SUM [数论,欧拉筛]
题目传送门 GCD SUM 题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式 ...
- 洛谷P2398 GCD SUM
题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入格式: n 输出格式: sum ...
- 洛谷 P2398 GCD SUM || uva11417,uva11426,uva11424,洛谷P1390,洛谷P2257,洛谷P2568
https://www.luogu.org/problemnew/show/P2398 $原式=\sum_{k=1}^n(k\sum_{i=1}^n\sum_{j=1}^n[(i,j)=k])$ 方法 ...
- 洛谷比赛 堕落的Joe
/*暴力50*/ #include<iostream> #include<cstdio> #include<cstring> #define maxn 100010 ...
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
随机推荐
- Python学习笔记:运算符
逻辑运算符: + 加 - 减 * 乘 / 除 % 取模-返回除法的余数 ** 幂-返回x的y次方 // 整除 比较运算符: == 等于-比较对象是否相等 != ...
- python3列表、元组
列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作.列表中的每个元素都分配一个数字也就是它的位置,或叫索引,第一个索引是0,第二个索引是1,依此类推. ...
- Codeforces 1238F. The Maximum Subtree
传送门 考虑构造一些区间使得树尽可能的 "大" 发现这棵树最多就是一条链加上链上出去的其他边连接的点 构造的区间大概长这样(图比较丑请谅解..$qwq$,图中每一个 "└ ...
- Vuex是什么?
记得去年公司招聘前端工程师的时候,我要负责准备面试题去考验面试者,让我记忆深刻的有一件事,我看大多数面试者简历上都写了熟练掌握Vuex,然而当我问起的时候,大部分回答都支支吾吾,解释不清,而当我提起与 ...
- Spring 配置文件注入
一.Spring配置文件注入 package com.zxguan.demo; public class Person { private String name; private int age; ...
- QT 获取字体大小
QFont font(androidFont); QFontInfo fInfo(font); qDebug()<<"FFFFFFFFFFFFFFFFFFFFFFFPPPSIZE ...
- Huge Packet Drops (Tx drops) Observed on NetScaler
Huge Packet Drops (Tx drops) Observed on NetScaler 来源 https://support.citrix.com/article/CTX215843 ...
- JS基础_质数练习,用到了标记flag
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- (一)初识JavaFX
JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计.创建.测试.调试和部署富客户端程序,并且和Java一样跨平台. JavaFX应用程序 由于JavaFX库被写成了Java API ...
- phpcms修改重置后台账号和密码
通过Phpmyadmin等工具,打开数据库中找到v9_admin表: 把password字段值改为: 0b817b72c5e28b61b32ab813fd1ebd7f再把encrypt字段值改为: 3 ...