Codeforces 888E - Maximum Subsequence(折半枚举(meet-in-the-middle))
思路:折半枚举。
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mem(a,b) memset(a,b,sizeof(a)) const int N=;
int a[N];
set<int>s;
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int n,m;
cin>>n>>m;
for(int i=;i<n;i++)cin>>a[i],a[i]=a[i]%m;
sort(a,a+n);
int hf=n/;
int _hf=n-hf;
for(int i=;i<(<<hf);i++)
{
int t=;
for(int j=;j<hf;j++)if((<<j)&i)t=(t+a[j])%m;
s.insert(t);
}
set<int>::iterator it;
int ans=;
for(int i=;i<(<<_hf);i++)
{
int t=;
for(int j=;j<_hf;j++)if((<<j)&i)t=(t+a[j+hf])%m;
it=s.upper_bound(m--t);
if(it==s.begin())
{
ans=max(ans,t);
continue;
}
it--;
ans=max(ans,t+*it);
}
cout<<ans<<endl;
return ;
}
Codeforces 888E - Maximum Subsequence(折半枚举(meet-in-the-middle))的更多相关文章
- Codeforces 888E Maximum Subsequence
原题传送门 E. Maximum Subsequence time limit per test 1 second memory limit per test 256 megabytes input ...
- codeforces 880E. Maximum Subsequence(折半搜索+双指针)
E. Maximum Subsequence time limit per test 1 second memory limit per test 256 megabytes input standa ...
- CF 888E Maximum Subsequence——折半搜索
题目:http://codeforces.com/contest/888/problem/E 一看就是折半搜索?……然后排序双指针. 两个<m的数加起来如果>=m,一定不会更新答案.因为- ...
- 折半搜索(meet in the middle)
折半搜索(meet in the middle) 我们经常会遇见一些暴力枚举的题目,但是由于时间复杂度太过庞大不得不放弃. 由于子树分支是指数性增长,所以我们考虑将其折半优化; 前言 这个 ...
- 【CF888E】Maximum Subsequence 折半搜索
[CF888E]Maximum Subsequence 题意:给你一个序列{ai},让你从中选出一个子序列,使得序列和%m最大. n<=35,m<=10^9 题解:不小心瞟了一眼tag就一 ...
- Codeforces C. Maximum Value(枚举二分)
题目描述: Maximum Value time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces 888E:Maximum Subsequence(枚举,二分)
You are given an array a consisting of n integers, and additionally an integer m. You have to choose ...
- CF 888E Maximum Subsequence
一道比较套路的题,看到数据范围就差不多有想法了吧. 题目大意:给一个数列和\(m\),在数列任选若干个数,使得他们的和对\(m\)取模后最大 取膜最大,好像不能DP/贪心/玄学乱搞啊.\(n\le35 ...
- 888E - Maximum Subsequence 中途相遇法
Code: #include<cstdio> #include<algorithm> #include<cstring> #include<string> ...
随机推荐
- linux locate
locate命令查找文件比find速度快很多,locate是在linux下实现快速查找文件的工具.相应的windows下有everything功能也很强大. [root@wuzhigang lib]# ...
- CE寻找游戏基址
什么是游戏基址? 游戏基址是保持恒定的两部分内存地址的一部分并提供一个基准点,从这里可以计算一个字节数据的位置.基址伴随着一个加到基上的偏移值来确定信息准确的位置(绝对地址). 全局基址 一级基址 二 ...
- 使用点击二分图传导计算query-document的相关性
之前的博客中已经介绍了Ranking Relevance的一些基本情况(Click Behavior,和Text Match):http://www.cnblogs.com/bentuwuying/p ...
- iframe嵌套
iframe基本内涵 通常我们使用iframe直接直接在页面嵌套iframe标签指定src就可以了. <iframe src="demo_iframe_sandbox.htm" ...
- Linux服务器配置---phpmyadmin
phpMyAdmin 工具 1.检测是否已安装php.php-mysql.apache等工具 [root@localhost src]# rpm -qa |grep php php-cli-5.3.3 ...
- 蓝牙协议 HFP,HSP,A2DP,A2DP_CT,A2DP_TG,AVRCP,OPP,PBAP,SPP,FTP,TP,DTMF,DUN,SDP
简介: HSP(手机规格)– 提供手机(移动电话)与耳机之间通信所需的基本功能. HFP(免提规格)– 在 HSP 的基础上增加了某些扩展功能,原来只用于从固定车载免提装置来控制移动电话. A2DP( ...
- web前端----html基础
一.初始html 1.web服务本质 import socket sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.bind((&q ...
- ORA-01507: database not mounted
今天启动数据库时报错了! SQL> startup mount ORACLE instance started. Total System Global Area 608174080 byte ...
- Python 类中的"静态"成员变量
本文环境:Python 2.7 一个类的三个对象实例的属性被同时修改 有段代码如下: class task_queue: queue=[] def append(self,obj): self.que ...
- Python入门之Python中的logging模块
基本用法 下面的代码展示了logging最基本的用法. import logging import sys # 获取logger实例,如果参数为空则返回root logger logger = log ...