`
暴风雪
  • 浏览: 387965 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[差分约束]poj 1716:Integer Intervals

阅读更多

大致题意:

    需要选一些整数点,给出m个约束条件,每个条件表述为,(s,t)表示在从s到t的区间内至少有2个点被选择。求最少选择多少个点。

 

大致思路:

    和poj1201基本相同,在此不再赘述。这道题的点是从0开始取的,要小心数组越界。

 

详细代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
const int nMax=105000;
const int mMax=10000500;
const int inf=1<<28;
struct{
    int v, next;
    int  w;
}edge[mMax];
int n, k, head[nMax];
int dis[nMax];
int stack[nMax],m,sum[nMax];
bool vis[nMax];

void addedge(int a,int b,int w){
    edge[k].w = w;
    edge[k].v=b;
    edge[k].next=head[a];
    head[a]=k;k++;
}

bool spfa(int s){
    int i, top = 0;
    memset(vis,0,sizeof(vis));
    for(i=0;i<=n;i++)dis[i]=-inf;
    dis[s]=0;
    stack[++top]=s;
    vis[s]=true;
    while(top){
        int u=stack[top--];
        for(i=head[u];i!=0;i=edge[i].next){
            int v=edge[i].v;
            if(dis[v]<dis[u]+edge[i].w){
                dis[v]=dis[u]+edge[i].w;
                if(!vis[v]){
                    vis[v]=true;
                    stack[++top] = v;
                    if(++sum[v]>n)return 0;
                }
            }
        }
        vis[u]=false;
    }
    return 1;
}

int main(){
    int m,s,t,c,i,j;
    while(scanf("%d",&m)!=EOF){
        k=1;
        n=-1;
        memset(sum,0,sizeof(sum));
        memset(head,0,sizeof(head));
        while(m--){
            scanf("%d%d",&s,&t);
            s++,t++;
            n=max(n,t);
            addedge(s-1,t,2);
        }
        s=n+2;
        for(i=0;i<=n;i++){
            addedge(i+1,i,-1);
            addedge(i,i+1,0);
        }
        for(i=0;i<=n;i++){
            addedge(s,i,0);
        }
        spfa(s);
        cout<<dis[n]<<endl;
    }
    return 0;
}
 
分享到:
评论

相关推荐

    POJ1716-Integer Intervals【Difference Constraints】

    1. "POJ1716-Integer Intervals【Difference Constraints】.cpp":这可能是基于差分约束系统理论的C++代码实现,它可能采用了动态规划或者线性规划的方法来解决问题。 2. "POJ1716-Integer Intervals【Greed】.cpp...

    经典 的POJ 分类

    - POJ 3373、POJ 1691:二分查找技术的应用。 ### 动态规划 #### 二维动态规划 - **题目示例**: - POJ 1191、POJ 1054:基于矩阵的状态转移方程。 - POJ 3280、POJ 2029:多维状态空间的探索。 #### 递归动态...

    POJ1503-Integer Inquiry

    【标题】"POJ1503-Integer Inquiry"是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。这类题目通常要求参赛者编写程序来解决特定的算法问题,以此锻炼和测试编程技能。 【描述】"解题...

    acm新手训练方案新手必备

    - **高级数据结构**:例如线段树、树状数组、差分约束系统等。 - **字符串算法**:包括后缀数组、AC自动机等。 - **组合优化**:涉及组合优化问题的求解方法。 - **数学建模**:学习如何将实际问题转化为数学模型...

    POJ2092:计数排序,求第K大的元素

    【标题】"POJ2092:计数排序,求第K大的元素"是一个编程题目,主要涉及计数排序算法以及如何在数组中找出第K大的元素。计数排序是一种非基于比较的排序算法,它适用于整数排序,尤其在数据范围不大的情况下效率极高。...

    POJ2983-Is the Information Reliable【差分约束+优化Bellman】

    《POJ2983-Is the Information Reliable:解析差分约束与优化Bellman算法》 北京大学在线编程平台上的POJ2983题目——"Is the Information Reliable",是一道涉及差分约束系统(Differential Constraint System)与...

    POJ1201-Intervals

    【标题】"POJ1201-Intervals" 是北京大学在线编程平台POJ上的一道题目,这道题目主要涉及计算机科学中的算法设计与分析,尤其是数据结构和时间复杂度优化方面的知识。 【描述】"北大POJ1201-Intervals 解题报告+AC...

    差分约束系统题解1

    【差分约束系统】是一种用于解决一系列线性不等式约束问题的模型,常用于最优化问题,如求解最短路径、最长路径或者判断是否存在满足条件的解。在这个模型中,我们通常需要将问题转化为寻找图中的最短路径或最长路径...

    ACM北大训练

    - poj1201: 涉及差分约束系统的建立和求解。 ##### 2. 最小费用最大流 - **定义**: 最小费用最大流是在最大流的基础上考虑最小化总成本。 - **应用场景**: 常用于网络流问题、资源分配问题等。 - **示例题目**: -...

    poj题目分类

    * 差分约束系统的建立和求解:例如 poj1201、poj2983。 * 最小费用最大流:例如 poj2516、poj2516、poj2195。 * 双连通分量:例如 poj2942。 * 强连通分支及其缩点:例如 poj2186。 * 图的割边和割点:例如 poj...

    acm训练计划(poj的题)

    - (poj1860, poj3259, poj1062, poj2253, poj1125, poj2240):介绍迪杰斯特拉算法(Dijkstra)、贝尔曼-福特算法(Bellman-Ford)、弗洛伊德算法(Floyd)等。 - 使用堆优化的迪杰斯特拉算法。 3. **最小生成树...

    POJ1-7试题

    这是西北工业大学的POJ试题的答案,欢迎下载!

    poj 1650 Integer Approximation.md

    poj 1650 Integer Approximation.md

    poj图论题目汇总

    #### 1716 Integer Intervals - 差分约束 - **知识点**:差分约束系统。 #### 1724 *ROADS - 最短路-拆点 - **知识点**:最短路径算法,以及通过拆点技术处理特定类型的图问题。 #### 1780 *Code - 欧拉回路 - ...

    poj部分水题代码

    POJ 2703:选择出行方式 **题目概述**: 本题目旨在通过编程的方式解决一个实际问题——选择最佳出行方式(步行或骑自行车)。题目给出了一种算法来决定在不同条件下应该采取哪种出行方式。 **代码解析**: - **...

    poj刷题指南

    网上整理的一些poj刷题指南。 poj地址:http://poj.org

    poj训练计划.doc

    - 差分约束系统:如`poj1201, poj2983`。 - 最小费用最大流:如`poj2516, poj2195`。 - **数据结构** - 线段树:如`poj2528, poj2828`。 - RMQ(区间查询):如`poj3264, poj3368`。 - 并查集的高级应用:如`...

    POJ算法题目分类

    * 哈希表和二分查找等高效查找法:哈希表和二分查找等高效查找法是指解决问题的高效查找算法,如 poj3349、poj3274、POJ2151、poj1840、poj2002、poj2503。 * 哈夫曼树:哈夫曼树是指解决问题的哈夫曼树算法,如 poj...

    POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类

    - **例题**:poj1860, poj3259, poj1062, poj2253, poj1125, poj2240 - **解释**:最短路径算法包括Dijkstra算法、Bellman-Ford算法、Floyd算法以及堆优化的Dijkstra算法等。 ##### (3) 最小生成树算法 - **例题**...

    poj各种分类

    在初级阶段的基础上,中级阶段涵盖了更多复杂的数据结构和算法,如差分约束系统、最小费用最大流、双连通分量、强连通分支、最小割模型等,以及线段树、树状数组、RMQ查询等高级数据结构的应用。这些内容进一步深化...

Global site tag (gtag.js) - Google Analytics