(已经有了简化版题面)

又秒了一次dp233

本来按照感觉瞎写了一发...

但还是老老实实列式子吧....

对差分约束有了更深的理解

#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
/*
不等式*3
设前i头奶牛有斑点牛d[]个,设lr为给定区间
则:
1、每个区间有且只有一头奶牛有斑点=>d[r]-d[l-1]=1; 
2、两只相邻的奶牛要么有斑点要么没斑点=>0<=d[i]-d[i-1]<=1;
改写方程得:

d[r]-d[l-1]<=1
d[l-1]-d[r]<=-1
d[i]-d[i-1]<=1
d[i-1]-d[i]<=0

于是:

l-1->r 1
r->l-1 -1
i-1->i 1
i->i-1 0

然后流氓优化+负环spfa卡过了这道题
*/
const int maxn=1e6+;
int n,m;
inline int read()
{
int x=,f=;char s=getchar();
while(s>''||s<''){if(s=='-')f=-;s=getchar();}
while(s<=''&&s>=''){x=x*+s-'';s=getchar();}
return x*f;
}
struct edge
{
int to,next,dis;
}e[maxn];
int head[maxn],cnt;
inline void addedge(int from,int to,int dis)
{
e[++cnt].next=head[from];
e[cnt].to=to;
e[cnt].dis=dis;
head[from]=cnt;
}
int dis[maxn],vis[maxn];
struct cmp
{
bool operator()(int a,int b)
{
return dis[a]>dis[b];
}
};
//queue < int > q;
int tot=;
priority_queue < int , vector < int > , cmp > q;
inline void spfa(int s)
{
/*for(int i=1;i<=n;i++)
{
dis[i]=2147483647;
}*/
memset(dis,0x7f,sizeof(dis));
q.push(s);
vis[s]=;
dis[s]=;
while(!q.empty())
{
int u=q.top();
q.pop();
vis[u]=;
for(int i=head[u];i;i=e[i].next)
{
int v=e[i].to;
if(dis[v]>dis[u]+e[i].dis)
{
dis[v]=dis[u]+e[i].dis;
if(vis[v]==)
{
if(++tot>)
{
printf("-1");
exit();
}
q.push(v);
vis[v]=;
}
}
}
}
} int main()
{
n=read();m=read();//scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x,y;
x=read();y=read();//scanf("%d%d",&x,&y);
addedge(x-,y,);
addedge(y,x-,-);
}
for(int i=;i<=n;i++)
{
addedge(i,i-,);
addedge(i-,i,);
}
spfa();
printf("%d",dis[n]);
return ;
}

P3084 [USACO13OPEN]照片(差分约束)的更多相关文章

  1. 洛谷 P3084 [USACO13OPEN]照片Photo 解题报告

    [USACO13OPEN]照片Photo 题目描述 农夫约翰决定给站在一条线上的\(N(1 \le N \le 200,000)\)头奶牛制作一张全家福照片,\(N\)头奶牛编号\(1\)到\(N\) ...

  2. P3084 [USACO13OPEN]照片Photo

    题目描述 农夫约翰决定给站在一条线上的N(1 <= N <= 200,000)头奶牛制作一张全家福照片,N头奶牛编号1到N. 于是约翰拍摄了M(1 <= M <= 100,00 ...

  3. P3084 [USACO13OPEN]照片Photo (dp+单调队列优化)

    题目链接:传送门 题目: 题目描述 Farmer John has decided to assemble a panoramic photo of a lineup of his N cows ( ...

  4. P3084 [USACO13OPEN]照片Photo dp

    题意: 有n个区间,每个区间只能有一个斑点奶牛,问最多有几个斑点奶牛. 思路: 首先要处理出每个点的L[i],R[i]. L[i]表示L[i]-i-1之间一定有一个点.i也是选中的. R[i]表示R[ ...

  5. 洛谷P3084 [USACO13OPEN]照片

    题目 \(DP\) 设状态\(dp[i]\)为\(i\)位置放了斑点牛,前\(i\)个位置能得到的最多的牛. 有方程\(dp[i]=max(dp[j]+1,dp[i])\),而我们并不知道什么\(j\ ...

  6. Candies-POJ3159差分约束

    Time Limit: 1500MS Memory Limit: 131072K Description During the kindergarten days, flymouse was the ...

  7. poj3159 差分约束 spfa

    //Accepted 2692 KB 1282 ms //差分约束 -->最短路 //TLE到死,加了输入挂,手写queue #include <cstdio> #include & ...

  8. ZOJ 2770火烧连营——差分约束

    偶尔做了一下差分约束. 题目大意:给出n个军营,每个军营最多有ci个士兵,且[ai,bi]之间至少有ki个士兵,问最少有多少士兵. ---------------------------------- ...

  9. POJ 2983 Is the Information Reliable? 差分约束

    裸差分约束. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #i ...

随机推荐

  1. react 首屏性能优化

    首屏优化点:1.加载包(bundle.js)文件的大小,越小,首屏渲染速度越快 (按需加载) 2.优先渲染用户直观看到的页面部分(懒加载) 技术点:react-loadable . react-laz ...

  2. A-08 拉格朗日对偶性

    目录 拉格朗日对偶性 一.原始问题 1.1 约束最优化问题 1.2 广义拉格朗日函数 1.3 约束条件的考虑 二.对偶问题 三.原始问题和对偶问题的关系 3.1 定理1 3.2 推论1 3.3 定理2 ...

  3. Python3 解决 ModuleNotFoundError: No module named 'pygal.i18n' 问题

    在获取国别码集通过导入模块pygal报以下问题: from pygal.i18n import COUNTRIES  解决方法: 安装模块 pip3 install pygal_maps_world ...

  4. Django中CKEditor富文本编译器的使用

    CKEditor富文本编辑器 1. 安装 pip install django-ckeditor 2. 添加应用 在INSTALLED_APPS中添加 INSTALLED_APPS = [ ... ' ...

  5. Kubernetes集群的部署方式及详细步骤

    一.部署环境架构以及方式 第一种部署方式 1.针对于master节点 将API Server.etcd.controller-manager.scheduler各组件进行yum install.编译安 ...

  6. Scanner接收字符

    char num = input.next().charAt(0); //截取指定位置的字符,下标从0开始 System.out.println("helloworld".char ...

  7. KMP算法复习笔记

    KMP 算法 KMP 算法是一种改进的字符串匹配算法,KMP 算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.具体实现就是实现一个next()函数,函数本身包含了 ...

  8. win10下安装openssl

    1.下载运行工具:ActivePerl-5.22.1.2201-MSWin32-x64-299574.msi, 安装. 2.执行:perl example.pl,若显示“Hello from Acti ...

  9. ubuntu16.04 gcc升级到7.3

    下载gcc- wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz 运行 download_prerequisites ...

  10. DES算法与四种加密模式的代码实现(C++语言)

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Love_Irelia97/article/ ...