$POJ2442\ Sequence$ 堆
正解:堆
解题报告:
全场除了我都切了系列$kk$
首先看$n=2$的情况.
首先暴力不说?就记录一个$sum$再分别记录$xy$两维的下标存到堆里面每次取队头并继续扩展就完事$QwQ$.
然后发现会枚举重复,就不太优秀,考虑优化$QwQ$.
于是考虑记录下这个点是扩展$x$的时候扩展来的还是扩展$y$的时候扩展来的,如果是扩展$x$的时候扩展来的就只扩展$x$了,否则就$xy$都要扩展.
这样就能保证每个状态只会被扩展一次了.
然后现在考虑$n>2$的情况.
就直接当$n=2$地做$n-1$次就完事
然后这个复杂度是$O(nmlogm)$的.
优化康考试总结$QwQ$,$over$
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<vector>
#include<cstdio>
#include<queue>
using namespace std;
#define il inline
#define gc getchar()
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i) const int N=1e5+;
int n,m,as;
vector<int>V[N],v;
struct node{int sum,fr,nwx,nwy;};
priority_queue<node>Q; il int read()
{
ri x=;rb y=;rc ch=gc;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')y=,ch=gc;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il bool cmp(ri gd,ri gs){return gd>gs;}
il bool operator < (node gd,node gs){return gd.sum>gs.sum;}
il void work(ri x,ri y)
{
ri szx=V[x].size(),szy=V[y].size();
while(Q.size())Q.pop();;v.clear();Q.push((node){V[x][]+V[y][],,,});
rp(i,,m)
{
node nw=Q.top();Q.pop();v.push_back(nw.sum);
if(nw.nwx+<szx)Q.push((node){nw.sum-V[x][nw.nwx]+V[x][nw.nwx+],,nw.nwx+,nw.nwy});
if(nw.fr)continue;
if(nw.nwy+<szy)Q.push((node){nw.sum-V[y][nw.nwy]+V[y][nw.nwy+],,nw.nwx,nw.nwy+});
}
V[y]=v;
} int main()
{
//freopen("2442.in","r",stdin);//freopen("2442.out","w",stdout);
ri T=read();
while(T--)
{
n=read();m=read();as=;
rp(i,,n){V[i].clear();rp(j,,m)V[i].push_back(read());sort(V[i].begin(),V[i].end());}
rp(i,,n)work(i-,i);rp(i,,m-)printf("%d ",V[n][i]);printf("\n");
}
return ;
}
随机推荐
- How to use AutoMapper
http://docs.automapper.org/en/stable/Getting-started.html IMappingExpression<TSource, TDestinatio ...
- js+canvas实现象棋的布局、走棋位置提示、走棋代码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- python selenium 基础框架
base_page.py # coding=utf-8 import time from selenium.common.exceptions import NoSuchElementExceptio ...
- codedecision P1113 同颜色询问 题解 线段树动态开点
题目描述:https://www.cnblogs.com/problems/p/11789930.html 题目链接:http://codedecision.com/problem/1113 这道题目 ...
- 关于浏览器ip代理导致定位错乱问题的坑
http://m.welltrend.com.cn/网站在Android手机的qq浏览器或者uc浏览器或者在微信中打开连接访问时,点击右侧的聊天按钮,经常出现手机在北京结果定位到天津的问题,或者广州的 ...
- js中的数据类型及常用属性和方法
JavaScript 字符串 字符串(或文本字符串)是一串字符(比如 "Bill Gates").字符串被引号包围.您可使用单引号或双引号您可以在字符串内使用引号,只要这些引号与包 ...
- 在 Jenkins Windows Agent 节点上执行 Shell 命令
Jenkins 在 Windows agent 上执行shell 命令,听起来很有意思,以下方法可以在 Jenkins 中执行一些简单的 shell 脚本,如果是复杂脚本就交给 Linux agent ...
- 在 CentOS 7.3 上安装 nginx 服务为例,说明在 Linux 实例中如何检查 TCP 80 端口是否正常工作
CentOS 7.3 这部分以在 CentOS 7.3 上安装 nginx 服务为例,说明在 Linux 实例中如何检查 TCP 80 端口是否正常工作. 登录 ECS 管理控制台,确认实例所在安全组 ...
- CF1166E The LCMs Must be Large
CF1166E The LCMs Must be Large 构造趣题 正着推其实很不好推 不妨大力猜结论 如果两两集合都有交,那么一定可以 证明: 1.显然如果两个集合没有交,一定不可以 2.否则给 ...
- Navicat for MySQL 使用SSH方式链接远程数据库
第一步:ssh部分: 端口号:22 用户名为:在xshell中用来登录服务器的账号密码 第二步: 端口:3306 账号密码:在MySQL中的登录账号密码