HNOI的一道题,挺简单,差分约束解决。但听说可以用加权并查集解决,博主暂时不想想

粘题:

刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的。账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3…n-1,n), 。当 Ai大于0时表示这个月盈利Ai 元,当 Ai小于0时表示这个月亏损Ai 元。所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和。 刁姹的任务是秘密进行的,为了调查商人的账本,她只好跑到商人那里打工。她趁商人不在时去偷看账本,可是她无法将账本偷出来,每次偷看账本时她都只能看某段时间内账本上记录的收入情况,并且她只能记住这段时间内的总收入。 现在,刁姹总共偷看了m次账本,当然也就记住了m段时间内的总收入,你的任务是根据记住的这些信息来判断账本是不是假的。

输入:

第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要你判断。每组数据的第一行为两个正整数n和m,其中n < 100,m < 1000,分别表示对应的账本记录了多少个月的收入情况以及偷看了多少次账本。接下来的m行表示刁姹偷看m次账本后记住的m条信息,每条信息占一行,有三个整数s,t和v,表示从第s个月到第t个月(包含第t个月)的总收入为v,这里假设s总是小于等于t。

输出:

包含w行,每行是true或false,其中第i行为true当且仅当第i组数据,即第i个账本不是假的;第i行为false当且仅当第i组数据,即第i个账本是假的。

关系式是:v<=x(t+1)-x(s)<=v

转化完是:x(s)+v<=x(t+1)     x(s)>=x(t+1)-v

取最小!

注意数组大小!!!

代码:

#include"cstdio"
#include"queue"
#include"cstring"
#define REP(i,n,x)for(i=x;i<=n;i++)
using namespace std;
struct Edge
{int v,w,next;
};
queue<int> end;
bool used[1000];
int dis[1000],p[1000],uses[1000],num=0,n,m;
Edge a[10000];
inline int SPFA(int i)
{end.push(i);used[i]=1;dis[i]=0;while(!end.empty()){int fro=end.front();uses[fro]++;used[fro]=0;end.pop();if(uses[fro]>=n)return 0;//把判断负环移到上面是为省点时间 for(int j=p[fro];j;j=a[j].next)if(dis[a[j].v]>dis[fro]+a[j].w){dis[a[j].v]=dis[fro]+a[j].w;if(!used[a[j].v]){end.push(a[j].v);used[a[j].v]=1;}}}
}
int add(int u,int v,int w)
{a[++num].v=v;a[num].w=w;a[num].next=p[u];p[u]=num;
}
int main()
{int number,i,j;scanf("%d",&number);REP(i,number,1){memset(used,false,sizeof(used));memset(uses,0,sizeof(uses));memset(p,0,sizeof(p));scanf("%d%d",&n,&m);REP(j,n+1,1)dis[j]=0x7ffffff;num=0;REP(j,m,1){int u,v,w;scanf("%d%d%d",&u,&v,&w);add(u,v+1,w);add(v+1,u,-w);}bool k;REP(j,n+1,1)if(!uses[j]){k=SPFA(j); if(!k){printf("false\n");break;}}if(k)printf("true\n");}return 0;
}

做完,挺好做的!

复赛后第一次正经写博客相关推荐

  1. 第一次CSDN写博客

     今天看到一篇博客,非常有感,地址如下: https://blog.csdn.net/ityouknow/article/details/80589552 读完之后,我觉得还是很有必要撰写博客,好 ...

  2. 第一次来写博客,这里可以记录很多故事。

    说太多不如沉默,想太多我会难过 不如沉默,沉默是金 转载于:https://www.cnblogs.com/xiangwenyi/p/7395532.html

  3. 学生为什么要在CSDN写博客?

    学生为什么要在CSDN写博客? 引言 写博客的好处 构建知识体系 提升写作能力 扩展人脉 为简历加分 帮助他人 为什么是CSDN 如何写博客 记录学习 总结错误 总结与展望 引言 就目前来说,学生应该 ...

  4. 看C语言教学视频后第一次写博客

    看完老师的课程教学视频过后第一次写博客,我用的是Visual Studio编译软件写的,我发现在这个新的软件里面输入scanf()不能运行成功而必须要是scanf_s()才能使得程序运行,下面是我编写 ...

  5. CSDN第一次写博客时的模板

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

  6. 携程航班信息爬取(python)---第一次写博客,不好请别见外!

    1.航班信息接口 api="https://flights.ctrip.com/itinerary/api/12808/products",这个接口中包含了所要查询的航班信息. * ...

  7. 编程日记——第一次写博客

    2020.3.27 今天是一个值得纪念的日子,因为这是我第一次在CSDN写博客的日子. 欢迎各位来阅读我的编程日记 大家好,我是一名大二的学生,因为对编程一直很感兴趣,所以在填报专业的时候,非常开心得 ...

  8. 第一次写博客,在正式记录之前,先来一个背景简介和分享

    第一次写博客.在正式记录之前,先来一个背景简介和分享. 文章目录 毕业 一.汽车厂是怎么样的工厂? 二.汽车厂的技术路线步伐 1.总装车间维修电工 2.学习PLC编程 3.打开PC应用程序exe的大门 ...

  9. 第一次写博客+学习学习markdown

    我的第一篇博客 欢迎使用Markdown编(xiā)辑(gǎo)器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你 ...

  10. 正经人谁写博客啊!下贱!

    有一段时间没有写文章了,具体为什么呢? 变懒了,由于安于现状,所以没有持续的去学习和输出,三天打鱼两天晒网, 另一个原因,就是自己输出东西质量太低(全是借口). 之前看了同事发的朋友圈: " ...

最新文章

  1. springboot原生mysql写法_【Rainbond最佳实践】Spring Boot框架配置MySQL
  2. 深度学习第五课-训练注意事项与框架使用
  3. java swing 字体设置_java如何改变Swing应用程序的默认字体/字号
  4. 科比退役原因-数据分析
  5. Ghost工具进行分区对拷(备份、迁移系统)
  6. 什么是UKey?Ukey在密评中的应用 双因素身份认证 安当加密
  7. 为什么银行的现钞买入价低于现汇买入价?
  8. Stopping service [Tomcat]和Disconnected from the target VM排查
  9. glove.840B.300d、glove.42B.300d、glove.6B网盘下载
  10. 手机\固定电话座机呼叫转移设置方法
  11. Elman神经网络预测的Matlab实现
  12. Autofac深入讲解
  13. 23个经过时间考验的应用程序,可以管理您的远程软件开发团队
  14. 如何获取网页真实地址
  15. Linux下gcc命令详解
  16. 史上最全Apidoc文档生成详解
  17. pandas 利用 正则表达式 从文本中提取数字
  18. 【转】码斗士的修炼之路 -- 如何保持并提升战斗力
  19. 北大青鸟消防控制器组网_北大青鸟消防主机概述
  20. CMOS摄像头驱动分析

热门文章

  1. 【IT运维】国内优秀的IT运维企业有哪些?
  2. 计算机专业课911,2018年北京物资学院911计算机学科专业基础综合考研复习资料...
  3. 动态电压恢复器(DVR)模型 Matlab/simulink
  4. 超详细面试准备(10分钟打遍所有初级后端开发面试)
  5. 9、recoil库的基本使用
  6. Java browsing
  7. 观察者模式在游戏开发中的应用
  8. matlab gram-schmidt,性能 – 加权Gram-Schmidt正交化的MATLAB优化
  9. 计算机注册表命令,注册表命令,小编教你电脑怎么打开注册表编辑器
  10. python 正则表达式 前瞻_【正则表达式】前瞻,后顾,负前瞻,负后顾