DLX重复覆盖 hdu5046 Airport

传送门:点击打开链接

题意:有N个城市,现在要修K个机场,使N个城市到最近机场的最大距离最小,问K个机场应该修在哪里,机场必须修在城市中。

思路:二分N个城市到最近机场的最大距离,于是可以转换成,知道每个点,知道它的半径,能覆盖到这些点,问是否能选K个点,使得所在范围覆盖所有的点。那么这部分可以用DLX重复覆盖来做

wa点:二分的时候,l,m,r都要使用LL才行,因为可能会爆int

#include<map>
#include<set>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<cctype>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define fuck printf("fuck")
#define FIN freopen("input.txt","r",stdin)
#define FOUT freopen("output.txt","w+",stdout)
using namespace std;
typedef long long LL;

const int MX = 60 + 5;
const int MN = 3600 + 5;
const int INF = 0x3f3f3f3f;

struct DLX {
    int m, n, ans;
    int H[MX], S[MX], vis[MX];
    int Row[MN], Col[MN], rear;
    int L[MN], R[MN], U[MN], D[MN];

    void Init(int _m, int _n) {
        m = _m; n = _n;
        rear = n; ans = INF;
        for(int i = 0; i <= n; i++) {
            S[i] = 0;
            L[i] = i - 1;
            R[i] = i + 1;
            U[i] = D[i] = i;
        }
        L[0] = n; R[n] = 0;
        for(int i = 1; i <= m; i++) {
            H[i] = -1;
        }
    }

    void Link(int r, int c) {
        int rt = ++rear;
        Row[rt] = r; Col[rt] = c; S[c]++;

        D[rt] = D[c]; U[D[c]] = rt;
        U[rt] = c; D[c] = rt;
        if(H[r] == -1) {
            H[r] = L[rt] = R[rt] = rt;
        } else {
            int id = H[r];
            R[rt] = R[id]; L[R[id]] = rt;
            L[rt] = id; R[id] = rt;
        }
    }

    void Remove(int c) {
        for(int i = D[c]; i != c; i = D[i]) {
            R[L[i]] = R[i]; L[R[i]] = L[i];
        }
    }

    void Resume(int c) {
        for(int i = U[c]; i != c; i = U[i]) {
            R[L[i]] = L[R[i]] = i;
        }
    }

    int h() {
        int ret = 0;
        memset(vis, 0, sizeof(vis));
        for(int c = R[0]; c != 0; c = R[c]) {
            if(!vis[c]) {
                ret++;
                vis[c] = 1;
                for(int i = D[c]; i != c; i = D[i]) {
                    for(int j = R[i]; j != i; j = R[j]) {
                        vis[Col[j]] = 1;
                    }
                }
            }
        }
        return ret;
    }

    bool Dance(int cnt, int K) {
        if(cnt + h() > K) return false;
        if(R[0] == 0) return true;

        int c = R[0];
        for(int i = R[0]; i != 0; i = R[i]) {
            if(S[i] < S[c]) c = i;
        }

        for(int i = D[c]; i != c; i = D[i]) {
            Remove(i);
            for(int j = R[i]; j != i; j = R[j]) Remove(j);
            if(Dance(cnt + 1, K)) return true;
            for(int j = L[i]; j != i; j = L[j]) Resume(j);
            Resume(i);
        }
        return false;
    }
} G;

LL X[MX], Y[MX], W[MX][MX];

LL dist(int i, int j) {
    return abs(X[i] - X[j]) + abs(Y[i] - Y[j]);
}

int main() {
    int T, n, K, ansk = 0; //FIN;
    scanf("%d", &T);
    while(T--) {
        scanf("%d%d", &n, &K);
        for(int i = 1; i <= n; i++) {
            scanf("%I64d%I64d", &X[i], &Y[i]);
        }
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= n; j++) {
                W[i][j] = dist(i, j);
            }
        }

        LL L = 0, R = 4e9, m, ans;
        while(L <= R) {
            m = (L + R) >> 1;

            G.Init(n, n);
            for(int i = 1; i <= n; i++) {
                for(int j = 1; j <= n; j++) {
                    if(W[i][j] <= m) G.Link(i, j);
                }
            }

            if(G.Dance(0, K)) {
                ans = m;
                R = m - 1;
            } else L = m + 1;
        }
        printf("Case #%d: %I64d\n", ++ansk, ans);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
服务器管理应急预案 服务器系统故障应急预案 1、服务器应用系统出现故障,系统恢复应急预案 (1)当服务器应用系统出现故障,安全管理员、系统管理员、应用管理员应当立即初 步确定故障的严重程度,估计出现故障的应用系统故障排除需要的时间,并根据应用系 统需要保障的无故障运行时间,采取不同的应用系统恢复策略。 (2)如果应用系统不能停机,立即启用热备份系统进行工作。 如果应用系统不能停机,而故障又可以在10分钟之内排除,那么安全管理员指导系 统管理员和应用管理员立即排除故障,恢复系统正常运行。 应用系统可以停机而故障又可以在2小时内排除,安全管理员,应该断开服务器的 网络连接,配合系统管理员和应用管理员,处理服务器故障,尽快排除故障,恢复系统 运行。 应用系统可以停机但故障排除不能在2小时之内完成,而应用系统有冷备份系统, 安全管理员,应该断开服务器的网络连接,通知系统管理员和应用管理员启动冷备份系 统,完成应用系统的安装、设置,并进行数据的恢复,保证系统正常运行。 应用系统可以停机,而又没有冷备份的应用系统,那么安全管理员应该通知系统管 理员和应用管理员,备份现有系统的数据和程序,如果不能进行备份系统的数据和程序 ,安全管理员应该从备份管理员那里得到应用系统的最新备份。安全管理员在确定了应 用系统有备份的情况下,通知系统管理员重新修复或安装操作系统,并配合应用管 响、处置结果在调查工作结束后一日内书面报告信息网络事件应急小组主任。 (5)应急预案技术措施,如果出现网络病毒,系统管理员采用瑞星杀毒软件或卡巴 斯基杀毒软件和360木马查杀工具,对整个计算机进行杀毒。对不能确定是否为病毒的文 件,应该询问安全管理员和应用程序员来确定。如果出现不良信息,安全管理、系统管 理员程序管理员要设法找到不良信息的文件或不良信息存在数据库中的位置,对非法信 息,进行手工删除,或编程删除,若不能清除,采用程序和数据备份进行恢复。 3、软件系统故障应急预案 (1) 发生服务器软件系统故障后,安全管理员、系统管理员、应用管理员应立即对服务器进 行查看,分析故障原因,采取并及时报告信息网络事件应急小组;同时安排将故障服务 器脱离网络,保存系统状态不变,取出系统镜像备份磁盘,保持原始数据,按照系统恢 复应急预案进行。 (2)事态或后果严重的,信息网络事件应急小组。 (3)处置结束后, 系统管理员应将事发经过、处置结果等在调查工作结束后一日内报告信息网络事件应急 小组。 (4)技术措施:安全管理员、系统管理员、应用管理员在故障发生后立即查看服务 器系统状态,如果是系统软件出现故障,并且能进入系统,且可以清晰定位故障原因, 并可以立即排除,那么立即进行排除。如果估计在3小时之内都不能定位故障原因,那么 报告信息网络事件应急小组,请求系统软件厂商及技术支持协助排除,或根据技术支持 的建议进行重新安装操作系统和应用系统。排除操作系统故障的方法,检查操作系统进 程是否都正常,有无非法进程,操作系统文件有无损坏丢失,是否受到病毒和木马程序 侵害,黑客攻击。 如果不是操作系统故障,安全管理员应该只是应用管理员对应用系统进行检查,检 查方法,查看应用系统代码和数据是否被破坏,损坏,丢失,如果丢失,从正确的备份 进行恢复。 4、 黑客攻击事件应急预案 当发现网络被非法入侵、网页内容被篡改,应用服务器上的数据被非法拷贝、修改、删 除,或通过入侵检测系统发现有黑客正在进行攻击时,使用者或管理者应断开网络,并 立即报告信息网络事件应急小组。 接报告后,信息网络事件应急小组应立即指令系统管理员和安全管理员核实情况,关闭 服务器或系统,封锁或删除被攻破的登陆帐号,阻断可疑用户进入网络的通道。 系统管理员应及时清理系统,恢复数据、程序,恢复系统和网络正常;情况严重的,不 能准确判断黑客攻击行为和采取防护和阻断措施的,报告网络事件应急小组,并请求支 援。 处置结束后, 系统管理员和安全管理员应将事发经过、处置结果等在调查工作结束后一日内报告信息 网络事件应急小组。 (5)技术措施:查看是否存在黑客程序及非法进程,用杀毒软件,360木马查杀工具 ,以及手工方法清除非法程序,若安全管理员、系统管理员、应用管理员不能完全清除 黑客程序,安全管理员应及时报告信息网络事件应急小组,请求安全厂商及安全技术支 持协助排除,或根据技术支持的建议进行重新安装操作系统和应用系统。 5、服务器硬件故障应急预案 (1)发生服务器设备硬件故障后,安全管理员和系统管理员应及时报告信息网络事 件应急小组,并组织查找、确定故障设备及故障原因,进行先期处置。 (2)根据系统恢复应急预案,确定故障的服务器上的应用系统的应急恢复措施。 (3)处置结束后, 系统管理员应将事发经过、处置结果等在调查工作结束后一日内报告信息网络事件应
服务器应用简介 服务器应用简介 -----------------------作者: -----------------------日期: 为了更好的理解服务器应用,我们从应用角度,结合服务器技术规格要求不同,可大致 分三类:   快速处理型是指对服务器的性能要求较高,反应速度要求快,如门户型网站,在线 游戏服务器,防火墙,数据库服务器等。   海量存储型服务器是指对服务器的存储空间要求大,如视频服务器,在线电影服务 器FTP服务器,EMAIL 服务器等则对二者都有一定的要求,视用户数的多少,用户定额空间的大小,访问的频 繁度而偏向于某一种类型。   低价稳定型服务器对服务器的处理速度,数据存储要求不高,但稳定性,安全性高 ,例如企业网站和普通论坛网站应用,以及DNS和代理服务器等 下面对每一类服务器的应用特点,谈谈服务器硬件配置要求: 一.web服务器   web服务器是一个性能追求型服务器,对服务器硬件平台的要求处决于访问的频繁度 及web服务器支持的服务复杂程度,即调用的CGI程序对系统资源的耗费程度。另外,不 同软件厂商提供的web服务器,同一web服务器的不同版本对资源的耗费以及本身的性能 也不一样。因此,web服务器的配置首先应确定服务器软件   目前,INTERNET上较为流行的两种web服务器软件是Apache和微软的IIS,IIS主要定 位于小型的INTRANET环境,运行于WINDOWS NT/2000/XP/2003 Server平台,而Apache则有多种平台版本:Windows、Linux、Unix版本。从性能上来比较 Apache+PHP相对于 Windows NT+IIS 运行ASP要稍强,Apache略占优势。现有的版本已能在高性能的主机上一秒钟内处理100 00次以上的操作(响应一次请求为一次操作)。因此,企业根据应用开发需求,选择相应 的软件平台和硬件。   目前计算机的发展非常快,主流Xeon多核技术都能够满足10万的用户量。同时,外 部web和DNS的需求较低,所以可同时作为外部web,DNS服务器使用。 主要特点: 运行软件:IIS,Apache 技术要求:通常要求1U/2U机箱,SATA/SCSI或SAS硬盘 1.面向企业网站的服务器   这类服务器主要以介绍企业为主要内容,数据量不高,并发访问通常静态网页或访 问量在200次/S以下,推荐硬件配置:Xeon 3040*1/1G*2/160G*2/单千兆网卡 2.面向门户网站的服务器   这类服务器主要为门户网站服务,门户网站访问量巨大,通常生成动态网页或访问 量在500次/S以下:Xeon 5310或Xeon 5405*1颗/2G FBD667/146G SAS/RAID 1/双千兆网卡1000次访问/S以上:Xeon 5335或Xeon5420*2颗/2G FBD*4条/146G SAS*3/硬RAID 5/双千兆网卡 3. 面向在线游戏服务器 运行软件:传奇,奇迹,A3等 技术要求:1U或塔式机箱,多处理器,大内存 推荐配置:   维持500人以下同时在线:Xeon3210*1颗/1G DDR667*2根/160G SATA/RAID 1/千兆网卡维持1000人以下同时在线:Xeon 5335*2颗/1G FBD667*4根/146G SAS*3/RAID 5/双千兆网卡维持更多:四路服务器或多服务器集群。 4.视频、电影服务器 运行软件:Helix Server,Windows Media Services,VOD软件 技术要求:访问速度快,存储容量大,RAID 5 推荐配置:   低配:Xeon 3210*1颗/2G/SATA 750G*8/RAID 5/双千兆网卡   高端:Xeon5410*2颗/2G/400G SAS*8/RAID 5/双千兆网卡 二. 代理服务器   代理服务器是一个典型的性能敏感型服务器,一个好的代理服务器可支持绝大部分 INTERNET服务的代理,目前,INTERNET上使用的代理软件很多,其中NETSCAPE PROXY SERVER是其中的佼佼者,不仅可支持绝大部分INTERNET服务的代理功能,而且可允许用 户嵌入自己的代理分页标题认证管理功能模块,同时,还可支持 PROXY SERVER的串接,代理认证用户名及口令的SSL加密,防止网络监听,是INTRANET代理服务 器的较为理想的选择。因此,我们建议采用NETSCAPE的PROXY SERVER,并嵌入我公司的代理记费软件NETGATE,来实现代理服务和用户管理,安全防护 。   代理服务器所处理的数据与所代理的服务有关,各种服务的平均值约为100K(主要是 HTTP的访问)左右,如要实现2000用户的10%同时访问,则服务器每秒所需处

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逍遥丶綦

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值