szoj461【四校联考0430】挑战
传送门:(涉及版权忽略)
【题解】
我们发现n的范围很小,提示我们可以折半,然后我们就会了O(T2^(n/2)*n)的做法,然而会T。
考虑如何优化。直接排序会多一个log(2^(n/2))也就是n,那么改成每次加一个数,归并即可。这样复杂度是对的
T(n) = T(n-1) + 2^n ==> T(n) = O(2^n)
那么复杂度就是O(T2^(n/2))
# include <stdio.h>
# include <string.h>
# include <algorithm>
// # include <bits/stdc++.h> using namespace std; typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = + , N = ;
const int mod = 1e9+; # define FO_OPEN
# define RG register
# define ST static int n, m, a[M];
int c[][N], cn[];
int t[N]; inline void merge(int pos, int l, int mid, int r) {
int i = l, j = mid+, k = l-;
while(i<=mid && j<=r) {
if(c[pos][i] < c[pos][j]) t[++k] = c[pos][i++];
else t[++k] = c[pos][j++];
}
while(i<=mid) t[++k] = c[pos][i++];
while(j<=r) t[++k] = c[pos][j++];
for (int o=l; o<=r; ++o) c[pos][o] = t[o];
} inline void sol() {
int sum = ;
scanf("%d%d", &n, &m);
for (int i=; i<=n; ++i) scanf("%d", &a[i]), sum = sum + a[i];
if(sum < m) {
puts("-1");
return ;
}
int res = n/;
c[][cn[] = ] = ;
for (int i=; i<=res; ++i) {
for (int j=; j<=cn[]; ++j) c[][j+cn[]] = c[][j] + a[i];
merge(, , cn[], cn[] << );
cn[] <<= ;
}
// printf("cn[0] = %d\n", cn[0]);
// for (int i=1; i<=cn[0]; ++i) printf("%d ", c[0][i]);
// puts("\n====================");
c[][cn[] = ] = ;
for (int i=res+; i<=n; ++i) {
for (int j=; j<=cn[]; ++j) c[][j+cn[]] = c[][j] + a[i];
merge(, , cn[], cn[] << );
cn[] <<= ;
}
// printf("cn[1] = %d\n", cn[1]);
// for (int i=1; i<=cn[1]; ++i) printf("%d ", c[1][i]);
// puts("");
int p0 = , p1 = cn[], ans = ;
for (; p0 <= cn[]; p0 ++) {
while(p1 && c[][p0] + c[][p1] >= m) --p1;
if(p1 != cn[])
ans = min(ans, c[][p0] + c[][p1 + ]);
}
printf("%d\n", ans);
} int main() {
FO_OPEN ? freopen("challenge.in", "r", stdin), freopen("challenge.out", "w", stdout) : ;
int T; scanf("%d", &T);
while(T--) sol();
return ;
}
szoj461【四校联考0430】挑战的更多相关文章
- [2017/5/28]FJ四校联考
来自FallDream的博客,未经允许,请勿转载,谢谢. 话说这一段时间算是过去了,好久好久之后终于又有联考了 没想到这次到我们学校出题,昨天才想起来,临时花一天赶了一套,我出了一个sbFFT,质量 ...
- [四校联考P3] 区间颜色众数 (主席树)
主席树 Description 给定一个长度为 N 颜色序列A,有M个询问:每次询问一个区间里是否有一种颜色的数量超过了区间的一半,并指出是哪种颜色. Input 输入文件第一行有两个整数:N和C 输 ...
- 四校联考 tree3
我们考虑计算红色点与非红色点的对数. 我们用f[i][j]表示i的子树中有j个红色点的概率,将i所有子树合并. 接着我们对于每一个状态,枚举i是红色还是非红色算概率. 同时我们可以求出i和i子树内一个 ...
- [3.19FJ四校联考]
来自FallDream的博客.未经允许,请勿转载,谢谢. ---------------------------------------------------- A.积分,不会 以后补 B.给定一 ...
- 【四校联考】【比赛题解】FJ NOIP 四校联考 2017 Round 7
此次比赛为厦门一中出题.都是聚劳,不敢恭维. 莫名爆了个0,究其原因,竟然是快读炸了……很狗,很难受. 话不多说,来看看题: [T1] 题意: 样例: PS:1<=h[i]<=100000 ...
- 三校联考 Day3
三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...
- 【赛时总结】NOIP2018-三校联考1024
◇NOIP三校联考-1024◇ 发现以前的博客写得似乎都很水……基本上都没什么阅读量QwQ 决定改过自新╰( ̄ω ̄o) 就从这篇博客开始吧~ 现场考得无地自容,看到题解才发现一些东西……(我第三题还没 ...
- [2019多校联考(Round 6 T3)]脱单计划 (费用流)
[2019多校联考(Round 6 T3)]脱单计划 (费用流) 题面 你是一家相亲机构的策划总监,在一次相亲活动中,有 n 个小区的若干男士和 n个小区的若干女士报名了这次活动,你需要将这些参与者两 ...
- [多校联考2019(Round 5 T1)] [ATCoder3912]Xor Tree(状压dp)
[多校联考2019(Round 5)] [ATCoder3912]Xor Tree(状压dp) 题面 给出一棵n个点的树,每条边有边权v,每次操作选中两个点,将这两个点之间的路径上的边权全部异或某个值 ...
随机推荐
- ora-12154 TNS:"无法处理服务名"的一个解决方法
http://www.cnblogs.com/xh3/archive/2007/04/21/722217.html 很怪异的一个问题,在网络环境下配置客户端,竟然怎么也连不上主机了,看了不少帖子,大多 ...
- XPATH之normalize-space(.)和normalize-space(text())区别
normalize,字面意思就是正规化,加上space大概意思就是空格的处理了. 官方解释是这样的: 通过去掉前导和尾随空白并使用单个空格替换一系列空白字符,使空白标准化.如果省略了该参数,上下文节点 ...
- 九度OJ--1164(C++)
#include <iostream>#include <vector> using namespace std; int main() { int n; // n为矩阵阶数 ...
- python基础训练营01
一.基础讲解: 1.1 文件末尾的.py后缀,指出这个文件,是一个python文件,因此,系统将使用python解释器来运行该文件,确定文件中每一个单词的含义. 1.2 python编辑/运行方法: ...
- java设计模式之门面模式以及在java中作用
门面模式在Tomcat中有多处使用,在Request和Response对象封装,从ApplicationContext到ServletContext封装中都用到了这种设计模式. 一个系统可以有几个门面 ...
- Android stateMachine分析
StateMachine与State模式的详细介绍可以参考文章:Android学习 StateMachine与State模式 下面是我对于StateMachine的理解: 先了解下消息处理.看下Sta ...
- MySQL中Alter用法小结
alter 方法是我们在处理MySQL数据库中一个常见的方法,能帮助我们更好的处理数据库中的表 1.增加 数据库中表的字段:alter table table_name add [column] co ...
- Python-爬取"我去图书馆"座位编码
原文地址:http://fanjiajia.cn/2018/11/22/Python-%E7%88%AC%E5%8F%96%E2%80%9D%E6%88%91%E5%8E%BB%E5%9B%BE%E4 ...
- 正则表达式之旅_sed_awk
谈谈正则表达式这个东西: 我想作为一个程序员,正则表达式大家绝对不陌生. 正则表达式好像一个有限则动机.主要作用是匹配,但是同时因为这个功能,我们可以扩展很多其他用法 像很多语言都引人了正则表达式:j ...
- tomcat 服务添加到系统服务
tomcat: 设置环境变量: CATALINA_HOME: tomcat路径 列如:D:\apache-tomcat-8.5.24 打开命令窗口,进入到tomcat/bin目录下 执行service ...