`
darren_nizna
  • 浏览: 72767 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

[XTU][1489][Fat Man][网络流]

阅读更多

题意为给定一个矩形,矩形中有一些点,要使一个半径为 r 的圆穿过这个矩形而不经过这些点,至少得去掉这些点的几个点。 将上边界看成源,下边界看成汇,点到源距离小于直径,则边一条无穷大边,同样,点到下边界距离小于直径,连一条无穷大边,将点拆成两点,权值为 cost, 对任意两点,距离小于直径则连无穷边,问题就转化成求新图的最小割。

具体建图见代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int const N= 250, inf= 0x7fffffff;
#define min(a,b) ( (a)<(b)?(a):(b) )

int w, l, r, n;
int  idx= -1, S, T;
int X[N], Y[N], C[N];

struct Edge{
    int wt, v;
    Edge* next;
}tb[N*N];

Edge* mat[N];
int h[N], que[N];

double distance( double x1, double y1, double x2, double y2 ){
	return sqrt( (x1-x2)* (x1-x2)+ (y1-y2)* (y1-y2) );
}

void inline add( int u, int v, int x ){
    idx++;
    tb[idx].wt= x; tb[idx].v= v; 
    tb[idx].next= mat[u]; mat[u]= tb+ idx;
    
    idx++;
    tb[idx].wt= 0; tb[idx].v= u;
    tb[idx].next= mat[v]; mat[v]= tb+ idx;
}

inline Edge* reserve( Edge* p ){
    return tb+ ((p-tb)^1);
}

int bfs(){
    int head= 0, tail= 0;
    for( int i= 0; i<= T; ++i ) h[i]= -1;
    
    que[0]= S; h[S]= 0;
    while( head<= tail ){
        int u= que[head++];
        
        for( Edge* p= mat[u]; p; p= p->next ){
            int v= p->v, w= p->wt;

            if( h[v]== -1 && w> 0 ){
                h[v]= h[u]+ 1; que[++tail]= v;
            }
        }
    }
    return h[T]!= -1;
}

int dfs( int u, int flow ){
    if( u== T ) return flow;
    int tf= 0, f;
    for( Edge* p= mat[u]; p; p= p->next ){
        int v= p->v, w= p->wt;
        if( h[v]== h[u]+ 1 && w> 0 && tf< flow && ( f= dfs( v, min( w, flow- tf ) ) ) ){
            p->wt-= f;
            reserve(p)->wt+= f;
            tf+= f;
        }
    }
    if( tf== 0 ) h[u]= -1;
    return tf;
}

int main(){
	int test;
	scanf("%d",&test );
	for( int te= 1; te<= test; ++te ){
		scanf("%d%d%d%d", &w, &l, &r, &n );
		
		S= 0; T= 2* n+ 1; idx= -1; r*= 2;
		for( int i= 0; i<= T; ++i ) mat[i]= 0;
		
		if( w< r ) add( S, T, inf );
		int x, y, c;
		for( int i= 1; i<= n; ++i ){
			scanf("%d%d%d", X+ i, Y+ i, C+ i );
			
			if( w- Y[i]< r )add( S, i, inf );
			if( Y[i]< r ) add( i+ n, T, inf );
			
			add( i, i+ n, C[i] );
		}
		
		for( int i= 1; i<= n; ++i )
		for( int j= 1; j<= n; ++j )
		if( i!= j && distance( X[i], Y[i], X[j], Y[j] )< r )
		add( i+ n, j, inf );
		
		int ans= 0;
		while( bfs() ) ans+= dfs( S, inf );
		
		if( ans== inf ) puts("-1");
		else printf("%d\n", ans );
	}
	
	return 0;
}

 

1
1
分享到:
评论

相关推荐

    Intel XTU v6.4.1.19

    **Intel XTU(Extreme Tuning Utility)v6.4.1.19详解** Intel XTU,全称为Intel Extreme Tuning Utility,是一款专为英特尔CPU设计的免费性能优化工具,适用于Windows操作系统。此版本v6.4.1.19为用户提供了更精细...

    英特尔超频软件(XTU)

    英特尔超频软件(XTU)CPU超频使用

    Intel XTU极限超频工具

    **Intel XTU极限超频工具详解** Intel XTU(Extreme Tuning Utility)是英特尔公司推出的一款免费的系统优化和超频软件,专为基于Intel Core系列处理器的台式机和笔记本电脑设计。这款工具旨在帮助用户提升计算机...

    xtu Java课程设计

    xtu Java课程设计 通过分析xtu Java课程设计的题目,我们可以总结出以下几个关键知识点: 1. 文件搜索工具: * GUI 界面的设计和实现 * 正则表达式搜索功能的实现 * 自动内码识别功能的实现 * 多线程编程的...

    英特尔XTU6.5.2.10代处理器专用版

    英特尔 XTU是一款基于 Windows 的性能调优软件,使新手和经验丰富的发烧友能够对系统进行超频、监视和压力等。软件接口提供了大多数发烧友平台上常见的一组强大功能,以及新的英特尔应用处理器和英特尔主板上可用的...

    湘潭大学xtu网络工程与管理考试复习资料、试卷

    【湘潭大学xtu网络工程与管理考试复习资料、试卷】是一份针对湘潭大学网络工程与管理课程的期末考试复习资源集合。这份资料包含了历年来的试卷、课程作业、课程题型以及相关的技术文档,旨在帮助学生全面掌握课程...

    xtu 湘潭大学网络编程练习题

    2. 当`transport`参数为"tcp"时,`type`应设为`SOCK_STREAM`,对应TCP协议,它是面向连接的字节流协议。 3. `hints.ai_socktype`应该设置为`type`,即根据`transport`选择的`SOCK_STREAM`或`SOCK_DGRAM`。 4. `get...

    XTU《网络协议分析及编程》复习搜整

    ### XTU《网络协议分析及编程》复习知识点详解 #### 一、TCP/IP协议简介 - **TCP/IP** 的全称是 Transmission Control Protocol/Internet Protocol,即传输控制协议/因特网协议。它是一个由多种协议组成的协议族,...

    湘潭大学xtu网络工程与管理实验代码及实验报告

    《湘潭大学xtu网络工程与管理实验代码及实验报告解读》 湘潭大学的网络工程与管理实验课程,旨在深入理解并实践网络基础理论,通过实际操作来提升学生的动手能力和问题解决能力。实验内容涵盖了一系列关键的网络...

    xtu人工智能实验3,BP神经网络,人脸识别_XTU_artificial_intelligence_BP_2.0.zip

    xtu人工智能实验3,BP神经网络,人脸识别_XTU_artificial_intelligence_BP_2.0

    XTU CPU超频程序

    英特尔CPU超频工具,工功能强大的软件超频程序。使用需要注意。

    xtu-setup联想官方超频工具套件

    Intel® 酷睿™ 處理器家族。 Intel extreme tuning Utility 是簡單的 Windows * 為基礎的效能調整軟體超頻、 監控並增強系統強度,無論是新手或有經驗的高手。軟體介面提供了一套大多數愛好者平台,提供全新的 ...

    XTU编译原理实验报告

    本实验报告是针对湘潭大学计算机科学与技术专业学生的“XTU编译原理”课程所编写的,旨在深入理解和实践编译器的基本原理和设计过程。编译原理是一门核心的计算机科学课程,它研究如何将高级编程语言转化为机器可...

    关于方阵的问题

    eXtreme Talent University(XTU)需要为他们的校名打印一些特别的图形,为了美观,他们选择了方阵。现在他们需要你的帮助,帮 他把这些方阵打印出来。如果方阵一边只由一个XTU的校名组成,则方阵为: XTU XTU XTU

    XTU数字图像处理期末考试复习.md

    XTU数字图像处理期末考试复习.md

    Xtu:Xtu是用于实现平台特定的xtUML模型的框架-开源

    Xtu是用于使用xtUML方法实施平台特定模型(PSM)的支持框架。 xtUML是针对软件和硬件开发的基于模型的系统工程(MBSE)的一种形式化方法。 Xtu实现了xtUML元素“域”,“网桥”,“信号”,“类”,“状态”,“事件...

    湘潭大学保研攻略_XTU-postgraduate-recommendation.zip

    湘潭大学保研攻略_XTU-postgraduate-recommendation

    电力基础知识:DTU、RTU等XTU

    电力系统中的XTU设备是实现自动化监控和管理的关键组件,其中RTU、TTU、DTU和FTU分别承担不同的职责。以下是对这些设备的详细解释: 1. RTU(远程终端单元):RTU是一种远程监控设备,专门用于收集和处理现场的信号...

    《人工智能》--xtu人工智能实验3,BP神经网络,人脸识别.zip

    人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ ...

Global site tag (gtag.js) - Google Analytics