第一题

一个很奇怪的贪心。先排序一遍,再扫描一遍,能加入尽量加入,不能加入就一定不能加入。。由于每次都在可能的最早时间加入一个数可以保证差最小?反正差不多这样了。

O(n log n)

#include <cstdio>
#include <algorithm>
bool cmp(int a,int b){
return a>b;
}
int m,n,i,j,k,f[200000],g[200000];
int sumn,sumd;
int main(){
freopen("stockman.in","r",stdin);
freopen("stockman.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<n;++i) scanf("%d",f+i);
for(i=0;i<m;++i) scanf("%d",g+i);
std::sort(f,f+n);
std::sort(g,g+m);
i=n-1;j=m-1;
while(i>=0 && j>=0){
//while using the jth stockman trying to match the ith pig
if(f[i]>=g[j]){
if(!(i&&j)||f[i-1]<=g[j]||f[i-1]>=g[j-1]){
++sumn;
sumd+=f[i]-g[j];
--i;
--j;
continue;
}
--i;
}else{
--j;
}
}
printf("%d\n%d\n",sumn,sumd);
return 0;
}

似乎有个更好的堆的解法?

#include <cstdio>
#include <queue>
#include <algorithm>
std::priority_queue<int> q;
int m,n,i,j,k,f[200000],g[200000];
int sumn,sumd;
int main(){
freopen("stockman.in","r",stdin);
freopen("stockman.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<n;++i) scanf("%d",f+i);
for(i=0;i<m;++i) scanf("%d",g+i);
std::sort(f,f+n);
std::sort(g,g+m);
for(i=0;i<n;++i){
while(f[i]>=g[j] && j<m){
q.push(g[j]);
++j;
}
if(!(q.empty())){
++sumn;
sumd+=f[i]-q.top();
q.pop();
}
}
printf("%d\n%d\n",sumn,sumd);
return 0;
}

第二题。。

先BFS一遍求出每个点与最近的敌人的距离,再二分答案能否到达,BFS求距离。

O(log{max(dis)==2000}mn)最沙茶的数据也可以过吧。。

#include <cstdio>
#include <cstring>
int qx[8000000],qy[8000000],qh,qt;
int f[2000][2000],m,n,i,j,k,x,y,x1,x2,y1,y2;
bool accessed[2000][2000];
char ch;
int left,right,mid,ans,ansl;
int minl[2000][2000];
inline void relax(int x,int y,int v){
if(accessed[x][y]) return;
if(x<0 || y<0 || x==n || y==m) return;
f[x][y]=v;
accessed[x][y]=true;
qx[qt]=x;
qy[qt++]=y;
}
inline void relax2(int x,int y,int v,int l){
if(accessed[x][y] || f[x][y]<l) return;
if(x<0 || y<0 || x==n || y==m) return;
minl[x][y]=v;
accessed[x][y]=true;
qx[qt]=x;
qy[qt++]=y;
}
bool check(int least){
memset(accessed,0,sizeof accessed);
qh=qt=0;
qx[qt]=x1;
qy[qt++]=y1;
minl[x1][y1]=0;
accessed[x1][y1]=true;
while(qh!=qt){
x=qx[qh];
y=qy[qh++];
i=minl[x][y]+1;
relax2(x,y+1,i,least);
relax2(x,y-1,i,least);
relax2(x+1,y,i,least);
relax2(x-1,y,i,least);
}
return accessed[x2][y2];
}
int main(){
freopen("escape.in","r",stdin);
freopen("escape.out","w",stdout);
scanf("%d%d%d%d%d%d%d",&k,&n,&m,&x1,&y1,&x2,&y2);
for(i=0;i<k;++i){
scanf("%d%d",&x,&y);
qx[qt]=x;
qy[qt++]=y;
}
while(qh!=qt){
x=qx[qh];
y=qy[qh++];
i=f[x][y]+1;
relax(x,y+1,i);
relax(x,y-1,i);
relax(x+1,y,i);
relax(x-1,y,i);
}
left=0;right=f[x1][y1];
while(left<=right){
mid=(left+right)/2;
if(check(mid)){
left=mid+1;
ans=mid;
ansl=minl[x2][y2];
}else{
right=mid-1;
}
}
printf("%d %d\n",ans,ansl);
return 0;
}

第三题

orz WJZ神犇的双参数SPFA。

______________________________________________________________________

emu1的更多相关文章

  1. 初识DSP

    初识DSP 1.TI DSP的选型主要考虑处理速度.功耗.程序存储器和数据存储器的容量.片内的资源,如定时器的数量.I/O口数量.中断数量.DMA通道数等.DSP的主要供应商有TI,ADI,Motor ...

  2. DSP连接不上CCS3.3的问题讨论

    环境 操作系统:Win7, 64bit IDE:CCS V3.3 仿真器:SEED XDS510PLUS DSP型号:TMS320C6713GDP(DSP6713) 检查步骤 试着按下复位按键后再点击 ...

  3. ulogd(一)

    参考资料: https://blog.csdn.net/eydwyz/article/details/52456335 https://blog.csdn.net/chinalinuxzend/art ...

  4. am335x mux配置

    /**************************************************************** * am335x mux配置 * * am335x的引脚复寄存器是C ...

  5. am335x gpio分析

    /************************************************************************ * am335x_gpio * 本文主要记录am33 ...

  6. DSP28335的上手试用LED灯闪烁-第一篇

    1. 本次以三兄弟的DSP28335开发板为例,看下JTAG接口,EMU0,EMU1的用途,不是很懂,不深入研究,用到再说 EMU0/1是TI芯片的JTAG才有的信号,本身不属于JTAG标准里的信号, ...

  7. Android 模拟器 下载、编译及调试

    Android 模拟器源码下载 Android 模拟器源码的下载与 Android AOSP 源码库的下载过程类似,可以参考 Google 官方提供的 Android 源码下载文档 来了解这个过程. ...

  8. Android 模拟器下载、编译及调试

    Android 模拟器源码下载 Android 模拟器源码的下载与 Android AOSP 源码库的下载过程类似,可以参考 Google 官方提供的 Android 源码下载文档 来了解这个过程. ...

随机推荐

  1. 百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例 [源码下载]

    相关说明 1. 界面查看: 吐槽贴:百度地图 api 封装 的实用功能 [源码下载] 2. 功能说明: 百度地图整合功能分享修正版[ZMap.js] 实例源码! ZMap.js 本类方法功能大多使用 ...

  2. Windows Office key 持续更新地址

    微软 Windows  Office 系列序列号,每日都有更新,上面显示的基本都可用,包括MAK及Retail Key. Windows 10   http://textuploader.com/52 ...

  3. [转]不再以讹传讹,GET和POST的真正区别

    原文地址:http://www.nowamagic.net/librarys/veda/detail/1919 如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历 前几天有人问我这个 ...

  4. 关于obj和基本类通过函数参数传进去执行是否改变原来的值

    var obj = { p1 : 1, p2 : 2 }; (function(_/* 这个东东是地址的应用哦 */){ _.p1 = 3, _.p2 = 4 })(obj) var i = 2; ( ...

  5. hdu3535 混合背包

    分三种情况. 至少取一种 那可以直接取 或者从上一种情况来取.dp[i][k]=max(dp[i][k],dp[i-1][k-a[j].c]+a[j].v,dp[i][k-a[j].c]+a[j].v ...

  6. Spring 管理数据源

    Spring 管理数据源 不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spring中,数据连接是通过数据源获得的.在以往的应用中,数据源一般是Web应用服务器提供的.在Spring中,你不 ...

  7. 打印cell的视图层次结构

    #ifdef DEBUG NSLog(@"Cell recursive description:\n\n%@\n\n", [cell performSelector:@select ...

  8. BZOJ-1227 虔诚的墓主人 树状数组+离散化+组合数学

    1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec Memory Limit: 259 MB Submit: 914 Solved: 431 [Submit][Statu ...

  9. BZOJ4590 自动刷题机

    Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写 ...

  10. linux系统编程----统计一个目录下的普通文件个数

    主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能. 首先介绍一下函数原型: 打开一个空目录                    DIR ...