bzoj1202: [HNOI2005]狡猾的商人(差分约束)
1202: [HNOI2005]狡猾的商人
题目:传送门
题解:
据说是带权并查集!蒟蒻不会啊!!!
可是听说lxj大佬用差分约束A了,于是开始一通乱搞。
设s[i]为前i个月的总收益,那么很容易就可以推出约束条件了啊:
s[x-1]>=s[y]-c s[y]>=s[x-1]+c
然后就可以去跑最长路了
吐槽:
lxj大佬推出来的条件竟然是两个小于等于号:s[x-1]<=s[y]-c s[y]<=s[x-1]+c
然后跑最短路也A了,表示很玄学qwq
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int T;
struct tj
{
int x,y,d;
}b[];
struct node
{
int x,y,d,next;
}a[];int len,last[];
int s[],d[];
void ins(int x,int y,int d)
{
len++;a[len].x=x;a[len].y=y;a[len].d=d;
a[len].next=last[x];last[x]=len;
}
bool v[];int ru[],list[];
int main()
{
scanf("%d",&T);
while(T--)
{
memset(s,,sizeof());
int n,m;scanf("%d%d",&n,&m);
len=;memset(last,,sizeof(last));
for(int i=;i<=m;i++)
{
int x,y,d;
scanf("%d%d%d",&x,&y,&d);
ins(y,x-,-d);ins(x-,y,d);
}
/*
s[x-1]>=s[y]-c s[y]>=s[x-1]+c
*/
for(int i=;i<=n;i++)d[i]=-;
int head=;for(int i=n;i>=;i--)list[++head]=i;
memset(v,,sizeof(v));memset(ru,,sizeof(ru));
bool bk=true;
while(head!=)
{
int x=list[head--];v[x]=true;
for(int k=last[x];k;k=a[k].next)
{
int y=a[k].y;
if(d[y]<d[x]+a[k].d)
{
d[y]=d[x]+a[k].d;
ru[y]++;if(ru[y]==n+){bk=false;break;}
if(v[y]==true)v[y]=false,list[++head]=y;
}
}
if(bk==false)break;
}
if(bk==false)printf("false\n");
else printf("true\n");
}
return ;
}
bzoj1202: [HNOI2005]狡猾的商人(差分约束)的更多相关文章
- BZOJ 1202: [HNOI2005]狡猾的商人( 差分约束 )
好像很多人用并查集写的... 前缀和, 则 sumt - sums-1 = v, 拆成2条 : sumt ≤ sums-1 + v, sums-1 ≤ sumt - v 就是一个差分约束, 建图跑SP ...
- luogu 2294 [HNOI2005]狡猾的商人 差分约束
一个差分约束模型,只需判一下有没有负环即可. #include <bits/stdc++.h> #define N 103 #define M 2004 #define setIO(s) ...
- LUOGU P2294 [HNOI2005]狡猾的商人(差分约束)
[传送门] (https://www.luogu.org/problemnew/show/P2294) 解题思路 差分约束.先总结一下差分约束,差分约束就是解决一堆不等式混在一起,左边是差的形式,右边 ...
- [BZOJ1202][HNOI2005]狡猾的商人
[BZOJ1202][HNOI2005]狡猾的商人 试题描述 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i= ...
- bzoj1202: [HNOI2005]狡猾的商人(并查集 差分约束)
1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4127 Solved: 1981[Submit][Sta ...
- BZOJ1202 [HNOI2005]狡猾的商人 【并查集】
1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4180 Solved: 2015 [Submit][S ...
- BZOJ1202 [HNOI2005]狡猾的商人 并查集维护前缀和
1202: [HNOI2005]狡猾的商人 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1935 Solved: 936[Submit][Stat ...
- BZOJ1202: [HNOI2005]狡猾的商人(带权并查集)
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4577 Solved: 2249[Submit][Status][Discuss] Descript ...
- BZOJ1202 [HNOI2005]狡猾的商人&&BZOJ3436小K的农场
差分约束第三题 传送门: 很明显的差分约束,d[y]-d[x-1]>=v d[y]-d[x-1]<=v 根据这个建图然后跑bellman-ford就可以了. //BZOJ 1202 //b ...
随机推荐
- 深刻理解Java中的String、StringBuffer和StringBuilder的差别
声明:本博客为原创博客,未经同意.不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(链接为http://blog.csdn.net/bettarwang/article/detai ...
- notepad++ 查找引用(Find Reference)(适用于c c++及各类脚本比如lua、python等)
在程序开发过程中,程序员经常用到的一个功能就是查找引用(Find Reference),Visual Studio里面的对应功能是“查找所有引用”(Find All References). 我在使用 ...
- WCF:目录
ylbtech-WCF:目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http://ylbtech.c ...
- BZOJ 2212线段树的合并
借鉴(抄)了一下题解-- 线段树合并的裸题吧- //By SiriusRen #include <cstdio> #include <cstring> #include < ...
- 判断是否是Ajax请求
Request.IsAjaxRequest()判断是否是ajax请求原理:Http协议上有个X-Requested-With:XML HttpRequest属性判断的 mvc后台通过Request可以 ...
- 后端向服务器发送客户端请求--HttpWebRequest
HttpWebRequest类与HttpRequest类的区别 HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所有信息. HttpWebReques ...
- struts2学习之基础笔记1
第6章 Strusts 2框架 1 引出 Web App àà MVC àà View 视图(jsp,html,JS) | C(Servlet)Filter,Listneer | M(数据bea ...
- 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)
题目描述 设d(x)为x的约数个数,给定N.M,求 \sum^N_{i=1}\sum^M_{j=1}d(ij)∑i=1N∑j=1Md(ij) 输入输出格式 输入格式: 输入文件包含多组测试数据.第 ...
- java中不同类如何相互访问变量值(新手见解,可能很low)
最近在学基础java知识,这个是很常见的问题之一了,下面我要列出三种异类取值方法,当然不止这些,我选择了最简单的三种: 1.可以使用static静态变量,直接调用要访问类的属性和方法.因为 Java ...
- iOS开发者账号证书配置及相关工作
申请到开发者账号,肯定要先配置一下才可以使用,这主要是iOS证书及配置文件: 以下这篇文章写得比较全面,故不再累赘,需要的同学可以看一下: iOS开发证书与配置文件的使用