[BZOJ2118] 墨墨的等式(最短路)
传送门
好神啊。。
需要用非负数个a1,a2,a3...an来凑出B
可以知道,如果一个数x能被凑出来,那么x+a1,x+a2.......x+an也都能被凑出来
那么我们只需要选择a1~an中任意一个的a,可以求出在%a下的每个数最小需要多少才能凑出来
这样我们选择一个最小的a,速度更快,令m=min(a[k]) 1 <= k <= n
然后建模,i向(i+a[j])%m连一条权值为a[j]的边
跑一边最短路就可以了
然后需要求Bmin~Bmax中的解
只需要ans(Bmax)-ans(Bmin)即可
注意a[i]==0的点。。。。
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#define N 6000001
#define LL long long using namespace std;int n, cnt;
int head[N], to[N], next[N];
LL L, R, ans, dis[N], m = ~(1 << 31), a[21], val[N];
bool vis[N];
queue <int> q;inline LL read()
{LL x = 0, f = 1;char ch = getchar();for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';return x * f;
}inline void add(int x, int y, LL z)
{to[cnt] = y;val[cnt] = z;next[cnt] = head[x];head[x] = cnt++;
}inline void spfa()
{int i, u, v;for(i = 0; i < m; i++) dis[i] = 1e13;q.push(0);dis[0] = 0;while(!q.empty()){u = q.front();vis[u] = 0;q.pop();for(i = head[u]; ~i; i = next[i]){v = to[i];if(dis[v] > dis[u] + val[i]){dis[v] = dis[u] + val[i];if(!vis[v]){vis[v] = 1;q.push(v);}}}}
}inline LL query(LL x)
{int i;LL ans = 0;for(i = 0; i < m; i++)if(dis[i] <= x)ans += (x - dis[i]) / m + 1;return ans;
}int main()
{LL x, y;int i, j;n = read();L = read();R = read();memset(head, -1, sizeof(head));for(i = 1; i <= n; i++){a[i] = read();if(!a[i]){i--, n--;continue;}m = min(m, a[i]);}for(i = 0; i < m; i++)for(j = 1; j <= n; j++)add(i, (i + a[j]) % m, a[j]);spfa();printf("%lld\n", query(R) - query(L - 1));return 0;
}
转载于:https://www.cnblogs.com/zhenghaotian/p/7645412.html
[BZOJ2118] 墨墨的等式(最短路)相关推荐
- BZOJ2118墨墨的等式[数论 最短路建模]
2118: 墨墨的等式 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 1317 Solved: 504 [Submit][Status][Disc ...
- BZOJ 2118: 墨墨的等式(最短路dijkstra+堆)
2118: 墨墨的等式 Time Limit: 10 Sec Memory Limit: 259 MB Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+-+anxn=B存 ...
- bzoj 2118 墨墨的等式 - 图论最短路建模
墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+-+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在非负整数解. Input ...
- p2371bzoj2118 墨墨的等式
传送门(bzoj) 题目 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+-+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存 ...
- android 补签控件,墨墨背单词怎么补签 看完你就懂了
现在手机的普及让不少用户在手机上面学习英语,而墨墨背单词就是一款专业的英语学习软件,它可以提醒用户每日记忆单词,还有督促你学习的签到系统,通过每日的签到不仅可以提高你学习英语的动力还能免费提升每日学习 ...
- 已拿字节、腾讯、墨墨 offer,音视频开发进阶指南pdf
背了多少单词 (更慌了,随口说100个左右) 怎么知道有墨墨这个app的 (同学介绍) 你简历说你自己心思缜密,但是你简历上的句子的标点符号有问题啊.(emmm) 项目的UI问题 技术 : JavaS ...
- 获取墨墨背单词里面的单词书中的单词
首先,其实是直接尝试抓包获取的,不过在抓包的信息中没发现类似的内容,然后就去百度了以下,发现还是有聪明人. 把下载的 apk 文件解压缩一下,把里面的 assets 文件夹里面的 maimemo.v3 ...
- 墨墨背单词刷分享链接访问量(动态获取IP代理池)
墨墨背单词 分享链接刷点击量(自动获取最新IP代理池方式),以提高单词上限. 运行方式 1 Python 环境运行main.py 1.1 克隆本仓库 Github仓库 Momo-Share-Fresh ...
- app使用经验分享——墨墨背单词
墨墨背单词 大家好,今天推荐一款干货背单词软件--墨墨背单词,相信大家对它并不陌生,它在华为应用市场上的评分是4.9,安装次数也是破1亿了. 一.设置每日学习量 点击右下角"我的" ...
- 墨墨背单词 无限版本
[Android] 墨墨背单词3.8.40,9999单词上限版 https://www.52pojie.cn/thread-1300054-1-1.html
最新文章
- 京瓷2010复印a4内容不全_百万畅销书活法的原点,稻盛和夫从未公开的京瓷秘籍...
- 2017-2018-1 20155327 实验五 通讯协议设计
- JDK7,JDK8 - 下载地址
- 【深度学习】新的深度学习优化器探索(协同优化)
- 【EventBus】EventBus 源码解析 ( 事件发送 | postToSubscription 方法 | EventBus 线程模式处理细节 )
- 已解决:Error downloading packages: libnetfilter_queue-1.0.2-2.el7_2.x86_64: [Errno 256] No more xxx
- java正则表达式入门文档
- maven建立webapp项目时显示Cannot change version of project facet Dynamic web module to 2.5
- 二维树状数组(水题) POJ1195
- 返回零长度的数组或者集合,而不是null
- 【PTA L2-012】关于堆的判断(堆的建立和特殊字符串的读入)
- ie浏览器升级的正确姿势
- MIMO技术(一)分集与复用
- 快递柜储物柜锁控制板
- pytorch中tensor.topk
- 微信创建公众号,获取AppID、AppSecret以及accesstoken
- 微信屏蔽跳去App Store链接的解决方法
- 移动云mas 通过HTTP请求发送普通短信和 模板短信
- python求最大公约数和最小公倍数的两种方法
- 硬盘分区MBR和GPT知识详解
热门文章
- pycharm多行代码同时注释、去除注释
- log4j的使用配置
- WebGL 绘制Line的bug(三)
- MySQL中的insert ignore into, replace into等的一些用法总结
- 软件工程第一次作业程序开发历程
- canvas width/height和style.width/style.height
- 有关parent.frame.cols在firefox浏览器上不兼容的问题解决
- 《zabbix_agent客户端的添加》-5
- 简单的爬虫爬取教务网获取成绩
- Bzoj1324 Exca王者之剑