UESTC 1646 穷且益坚, 不坠青云之志。
题目链接:http://acm.uestc.edu.cn/#/problem/show/1646
题意:求一个有n个元素的数列,满足任意连续p个数的和不小于s,
任意连续q个数的和不大于t。
解法:令sum[i]表示前i项的和(0<=i<=n,sum[0]=0)
那么题目的条件可转化为:
sum[i]-sum[i-p]>=s (p<=i<=n)
sum[i]-sum[i-q]<=t (q<=i<=n)
将第一个不等式取反,得到
sum[i-p]-sum[i]<=-s(p<=i<=n)
于是问题转化为求一系列不等式的解,这是一个典型的差分约束问题。
考虑最短路径的性质,令dis[i]表示从s到i的最短路,则对于图中存在的一条边(u,v),有
dis[v]<=dis[u]+w(u,v),即dis[v]-dis[u]<=w(u,v);
类比不等式,于是可建图,i向i-p引长度为-s的边,i-q向i引长度为t的边。
然后运行bellmanford,如果存在负环,则无解,
否则所得到的最短路的值就是sum[i]的一个解。
时间复杂度:O(VE)
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1010;
const int inf = 0x3f3f3f3f;
LL dis[maxn];
int head[maxn], edgecnt, n, p, q, s, t;
int cnt[maxn];
bool inq[maxn];
struct edge{int to,w,next;edge(){}edge(int to, int w, int next) : to(to), w(w), next(next) {}
}E[maxn*10];
void init(){edgecnt = 0;memset(head, -1, sizeof(head));
}
void add(int u, int v, int w){E[edgecnt].to = v, E[edgecnt].w = w, E[edgecnt].next = head[u], head[u] = edgecnt++;
}
bool spfa(){queue<int>que;for(int i=0; i<=n; i++) dis[i]=inf;memset(inq,0,sizeof(inq));memset(cnt,0,sizeof(cnt));dis[0]=0;que.push(0);inq[0]=1;for(int i=1; i<=n; i++){que.push(i);inq[i]=1;}while(!que.empty()){int u = que.front();que.pop();inq[u] = 0;for(int i=head[u]; ~i; i=E[i].next){int v = E[i].to;int w = E[i].w;if(dis[u] + 1LL*w < dis[v]){cnt[v]++;dis[v] = dis[u] + 1LL*w;if(cnt[v]>n) return false;if(!inq[v]){inq[v]=1;que.push(v);}}}}return 1;
}
int main()
{scanf("%d %d %d %d %d", &n, &p, &q, &s, &t);init();for(int i=0; i<=n; i++){if(i-p>=0) add(i,i-p,-s);if(i-q>=0) add(i-q,i,t);}if(spfa()){printf("Yes\n");printf("%lld", dis[1]);for(int i=2; i<=n; i++){printf(" %lld", dis[i]-dis[i-1]);}printf("\n");}else{printf("No\n");}return 0;
}
UESTC 1646 穷且益坚, 不坠青云之志。相关推荐
- UESTC 1646 穷且益坚, 不坠青云之志。 差分约束、Fellman-ford
穷且益坚, 不坠青云之志. Time Limit: 6000/2000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
- 穷且益坚,不坠青云之志——忆我的大学四年
文章目录 一.前言 二.大学之前 1.从小的经历以及家庭的困境 2.一切的根源--自卑 3.不愉快的初高中经历 三.大一:所谓追梦--改变的起点 1.敏感而自卑的内心 2.百团大战,与协会埋下不解之缘 ...
- 【差分约束系统】【最短路】【spfa】CDOJ1646 穷且益坚, 不坠青云之志。
求一个有n个元素的数列,满足任意连续p个数的和不小于s, 任意连续q个数的和不大于t. 令sum[i]表示前i项的和(0<=i<=n,sum[0]=0) 那么题目的条件可转化为: sum[ ...
- 开发之路,穷且益坚,不坠青云之志(入门开发者共勉)
引言 2023毕业季,距离笔者毕业已过2年有余. 互联网从业环境由盛转衰,互联网从业者数量剧增,市场竞争异常激烈,原本的利润空间被不断挤压,以至于很多开发者对互联网已经失去了信心与激情. 互联网的市场 ...
- JAVA预习3-IO流(不坠青云之志)
IO的含义: Stream流 1.流只能单方向流动 2.in输入流 3.out输出流 4.数据值从头到尾读写一次 流分为字节流和字符流 字符流:针对文本文件 字节流:针对二进 ...
- 团队项目介绍--基于区块链的教育信息管理系统
1. 队名 EduChain小组 2. 队员风采 ① 姓名:马宁 职务:组长 学号:2017011742 风格:积极向上,乐观开朗,热情大方 擅长的技术:擅长html,css,js,bootstra ...
- 若有恒,何必三更眠五更起;最无益,莫过一日曝十日寒
若有恒,何必三更眠五更起:最无益,莫过一日曝十日寒. --这是明代学者胡居仁自勉联,凸现出先贤刻苦攻读.持之以恒,并注重科学学习方法的治学经验. 颜真卿的是"三更灯火五更鸡,正是男儿读书时. ...
- 字符串拼接:语言C#(CSharp)
今天我们来介绍一下C#语言的字符串花式拼接方式 1. 基本使用 废话少说,我们直接上代码,介绍一下字符串的拼接的方式 using System; using System.Collections.Ge ...
- 学习自旋电子学的笔记01:微磁模拟软件OOMMF的教程(中文版)10-15章
穷且益坚,不坠青云之志.--王勃 <滕王阁序 > 目录 10 2D微磁求解器 10.1 2D微磁交互求解器:mmSolve2D. 10.2 OOMMF 2D微磁求解器批处理系统. 10.2 ...
最新文章
- oralce 增加表字段命令|oralce 增加表字段类型命令
- RocketMQ-初体验RocketMQ(06)-使用API操作RocketMQ ,理解RocketMQ的存储结构
- 安装Windows10,Ubuntu双系统14.04LTS记录
- 从C ++定义QML类型
- Teams Bot开发系列:初识Bot
- linux下安装nginx1.10,Linux(RHEL7.0)下安装nginx-1.10.2(示例代码)
- Fiddler过滤指定域名
- 网络编程之	application/x-www-form-urlencoded MIME编码
- Android开发:4-2、不同Activity数据的传递
- pintos project (2) Project 1 Thread -Mission 1 Code
- paip. mysql如何临时 暂时 禁用 关闭 触发器
- DeepRacer 资源合集
- 有关 delphi7读取 excel 报错EoleException with message '未找到提供程序,该程序可能未能正确安装' 解决方式
- 难道真的是RPWT-LFS日记1
- Shell脚本加密工具——Shc
- 【Microsoft Azure 的1024种玩法】三十四.将本地数据文件快速迁移到Azure Blob云存储最佳实践
- 信道容量受哪三个要素_连续信道容量与
- 服务器pd接口不显示,服务器新盘无法识别(JBOD)
- VUE v-modle 实现 |||| uniapp 父子组件实现 v-modle
- 下面程序的功能是调用fun函数以删除字符串中指定的字符
热门文章
- cnpm显示:无法加载文件 C:\Users\hp\AppData\Roaming\npm\cnpm.ps1
- 【基于STM32F103C8T6的智能风扇控制】
- FL Studio水果编曲20.8.4更新内容及新增功能介绍
- 【复旦微(Procise安装篇)】
- 频谱分析-FFT之后的那些事情
- MySQL连接查询——MySQL 基础查询你会了吗?
- 微软面试题目意义深远:制度建设问题
- 红帽子设置SSH基于密钥的用户登陆
- 寿星万年历---java算法实现
- 秋招|阿里测试开发岗面经(一共七次面试)