AtCoder Beginner Contest 173 E - Multiplication 4 (思维)
2024-09-07 02:12:39
题意:有\(n\)个数,从中选\(k\)个数累乘,求最大的乘积\((mod\ 10^9+7)\).
题解:
1.假如全是负数,并且选奇数个,那么从小到大选.
2.否则,考虑当前状态,假如\(k\)是奇数,那么我们先选一个最大的,然后再选两个最大的正数相乘或者两个负数相乘后最大,每次这样选即可.
代码:
int n,k;
ll a[N];
ll mp[N]; bool cmp(ll x,ll y){
return abs(x)<abs(y);
} int main() {
ios::sync_with_stdio(false);cin.tie(0);
cin>>n>>k;
for(int i=1;i<=n;++i){
cin>>a[i];
if(a[i]>=0) mp[1]++;
else mp[2]++;
}
int l=1,r=n;
ll ans=1;
if(mp[1]==0 && k%2==1){
sort(a+1,a+1+n,cmp);
for(int i=1;i<=k;++i){
ans=a[i]*ans%mod;
}
}
else{
sort(a+1,a+1+n,greater<int>());
while(k>0){
if(k%2==1) ans=ans*a[l++]%mod,m--;
else if(k>=2){
if(a[l]*a[l+1]>=a[r]*a[r-1]){
ans=ans*a[l]%mod*a[l+1]%mod;
l+=2;
k-=2;
}
else{
ans=ans*a[r-1]%mod*a[r]%mod;
r-=2;
k-=2;
}
}
}
} cout<<(ans%mod+mod)%mod<<endl; return 0;
}
最新文章
- sqlite like 通配符 ,匹配区分大小写(默认不区分大小写)
- java中的负数的问题
- 01-C语言概述
- openwrt: Makefile 框架分析
- sjtu1333 函数时代
- C#学习第二天
- QThread 与 QObject的关系
- Struts 2.x 与Spring4.x整合出现:No mapping found for dependency [type=java.lang.String, name=&#39;actionPackages...
- watch命令详解(linux)
- 四轴飞行器1.2.2 RT-Thread 串口
- web desktop在线演示
- [Android]Android SDk Manager中创建模拟器无法选择CPU问题解析
- Java多线程打辅助的三个小伙子
- Ubuntu下编译SqlCipher以及解密微信数据库EnMicroMsg.db过程和坑
- 【4】数独(Sudoku Killer)(深度优先遍历)
- VS code 配置为 Python R LaTeX IDE
- 匆忙记录 编译linux kernel zImage
- NHibernate.3.0.Cookbook第一章第五节Setting up a base entity class
- leecode第六十二题(不同路径)
- MySQL -- Innodb是如何处理自增列的
热门文章
- 分别使用 Python 和 Math.Net 调用优化算法
- ctfshow—web—web2
- [从源码学设计]蚂蚁金服SOFARegistry之配置信息
- 技术基础 | Apache Cassandra 4.0基准测试
- Vue中:error &#39;XXXXX&#39; is not defined no-undef解决办法
- Java并发组件二之CyclicBarriar
- 从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名。
- (012)每日SQL学习:TO_CHAR(DATE,FORMAT)
- (Sql Server)Soundex语音算法
- Centos7 Nginx 安装