【BZOJ5109】【CodePlus2017】大吉大利,晚上吃鸡!
【题目链接】
- 点击打开链接
【思路要点】
- 补档博客,无题解。
【代码】
#include<bits/stdc++.h> using namespace std; #define MAXN 50005 #define INF 1e18 #define P 1000000007 template <typename T> void read(T &x) {x = 0; int f = 1;char c = getchar();for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';x *= f; } struct info {long long value; int pos; }; bool operator < (info a, info b) {return a.value > b.value; } int n, m, s, t; int x[MAXN], y[MAXN], z[MAXN]; vector <int> a[MAXN]; vector <int> b[MAXN]; priority_queue <info> Heap; long long dist[MAXN]; bool finished[MAXN]; bitset <MAXN> seta[MAXN], setb[MAXN]; map <int, bitset <MAXN> > f; long long cnta[MAXN], cntb[MAXN]; void worka(int pos) {cnta[pos] = (pos == t);seta[pos].set(pos);if (pos == t) return;for (unsigned i = 0; i < a[pos].size(); i++) {worka(a[pos][i]);cnta[pos] += cnta[a[pos][i]];cnta[pos] %= P;if (cnta[a[pos][i]]) seta[pos] |= seta[a[pos][i]];} } void workb(int pos) {cntb[pos] = (pos == s);setb[pos].set(pos);if (pos == s) return;for (unsigned i = 0; i < b[pos].size(); i++) {workb(b[pos][i]);cntb[pos] += cntb[b[pos][i]];cntb[pos] %= P;if (cntb[b[pos][i]]) setb[pos] |= setb[b[pos][i]];} } int main() {read(n), read(m), read(s), read(t);for (int i = 1; i <= m; i++) {read(x[i]), read(y[i]), read(z[i]);if (z[i] == 0) continue;a[x[i]].push_back(y[i]);a[y[i]].push_back(x[i]);b[x[i]].push_back(z[i]);b[y[i]].push_back(z[i]);}for (int i = 1; i <= n; i++)dist[i] = INF;dist[s] = 0;Heap.push((info) {0, s});while (!Heap.empty()) {while (!Heap.empty() && finished[Heap.top().pos])Heap.pop();if (Heap.empty()) break;info tmp = Heap.top();Heap.pop();for (unsigned i = 0; i < a[tmp.pos].size(); i++)if (tmp.value + b[tmp.pos][i] < dist[a[tmp.pos][i]]) {dist[a[tmp.pos][i]] = tmp.value + b[tmp.pos][i];Heap.push((info) {dist[a[tmp.pos][i]], a[tmp.pos][i]});}}for (int i = 1; i <= n; i++)a[i].clear();for (int i = 1; i <= n; i++)b[i].clear();for (int i = 1; i <= m; i++) {if (z[i] == 0) continue;if (dist[x[i]] + z[i] == dist[y[i]]) a[x[i]].push_back(y[i]), b[y[i]].push_back(x[i]);if (dist[y[i]] + z[i] == dist[x[i]]) a[y[i]].push_back(x[i]), b[x[i]].push_back(y[i]);}worka(s);workb(t);for (int i = 1; i <= n; i++) {cnta[i] = cnta[i] * cntb[i] % P;seta[i] |= setb[i];seta[i].set(i);f[cnta[i]].set(i);}long long ans = 0;for (int i = 1; i <= n; i++) {int tmp = (cnta[t] - cnta[i] + P) % P;ans += (f[tmp] & (~seta[i])).count();}cout << ans / 2 << endl;return 0; }
【BZOJ5109】【CodePlus2017】大吉大利,晚上吃鸡!相关推荐
- HTML5+css+JS实现页面打枪声音特效减压玩法 PUBG 大吉大利 今晚吃鸡
HTML5+css+JS实现页面打枪声音特效减压玩法 PUBG 大吉大利 今晚吃鸡 css部分 *{margin: 0;padding:0;}body{min-height:100vh;overflo ...
- 老司机带你在MySQL领域“大吉大利,晚上吃鸡”
关注↑↑↑我们获得更多精彩内容! 作者 | 张甦, 数据库领域的专家和知名人士.图书<MySQL王者晋级之路>作者,51CTO 专家博主.近10年互联网线上处理及培训经验,专注于 MySQ ...
- 大吉大利-今晚吃鸡-枪械
题目描述 在绝地求生(吃鸡)游戏里,不同的枪支有不同的威力,更是可以搭配不同的配件,以提升枪支的性能. 每一把枪都有其威力及其可装备配件种类.每一个配件有其所属种类,可以为枪支提供威力的百分比加成.每 ...
- 大吉大利-今晚吃鸡-跑毒
题目描述 现在有一款很火的游戏playerunknown's battlegrounds,人称"吃鸡",在里面经常面临跑毒(从安全区外跑进安全区内)的问题,在安全区外,人们会处于中 ...
- 大吉大利 今晚吃鸡之跑毒篇
现在有一款很火的游戏playerunknown's battlegrounds,人称"吃鸡",在里面经常面临跑毒(从安全区外跑进安全区内)的问题,在安全区外,人们会处于中毒状态,每 ...
- 大吉大利今晚吃鸡——枪械篇
题目链接:点击打开链接 这题难点带就是输入?我是因为用float精度不够才不过的,改成double就ok了 #include <cstdio> using namespace std;in ...
- 大吉大利今晚吃鸡——跑毒篇
题目链接:点击打开链接 问题 1. 边界部分恰好擦着的时候到底是死是活.......写到程序里就是有没有=的问题. 首先题目里明确指出打包的时候擦着就是死. 然后后面有个带着你理解第二个样例的部分,这 ...
- 计算机内存不足吃鸡怎么办,Win10玩吃鸡游戏提示虚拟内存不足怎么办?
Win10玩吃鸡游戏提示"虚拟内存不足"怎么办? 最近吃鸡游戏非常火,大家都想大吉大利晚上吃鸡!因为吃鸡游戏对电脑配置的要求非常高,所以很多用户在玩吃鸡手游时会遇到各种问题,最常见 ...
- 吃鸡一直显示服务器,吃鸡一直显示服务器未连接 | 手游网游页游攻略大全
发布时间:2017-05-12 怎么吃鸡?相信很多新手玩家在经过几十甚至上百小时的游戏洗礼之后,心中对于吃鸡的疑惑也是越来越大,为什么有时候明明开局不顺却最后吃鸡,而有时候明明很肥却送了快递.所以今天 ...
- 为什么吃鸡显示连接不到服务器,为什么吃鸡进游戏显示连接不上 | 手游网游页游攻略大全...
发布时间:2015-09-28 原因:显卡太老,不支持DX9.0c+SM3.0 解决方法:换新显卡 标签: 发布时间:2017-05-12 怎么吃鸡?相信很多新手玩家在经过几十甚至上百小时的游戏洗礼之 ...
最新文章
- IETester-IE兼容性测试工具
- Lucene 源码分析之倒排索引(三)
- python【数据结构与算法】选数问题(选不相连最大值——DP)
- 源码阅读之Java栈的实现
- 跟我打卡LeetCode 58最后一个单词长度59螺旋矩阵Ⅱ60排列序列
- 电脑睡眠快捷键_电脑学习:苹果电脑快捷键
- 奇妙的曲线--希尔伯特曲线
- 编程时程序无错却崩溃_人间真实:程序员的 60 个崩溃瞬间!
- 一键搭建php本地测试环境_如何在PHP中设置本地调试环境
- 测试中如何管理外包质量_【项目管理】资深游戏测试总监详解质量管理工作的9个步骤...
- 应用:文件夹copy器(多进程版)
- Android 资源(resource)学习小结
- 怎么判断间隙过渡过盈配合_什么是间隙配合、过盈配合、过渡配合?它们在汽车上有哪些应用?...
- 皮肤黄吃什么可以变白?店湾妹来教你几招!
- 计算机网络4小时速成:应用层,cs模型,p2p模型,DNS域名系统,文件传输协议FTP,电子邮件SMTP,万维网HTTP,动态主机配置协议DHCP
- c语言输入坐标三角形周长面积,3.1.7计算三角形周长和面积
- 阿里测试岗,面试官狂问自动化,把我问到哑口无言……
- win10OneNote登录微软 账号登陆出现错误码0x80190001
- 网站表单自动填写【使用pyautogui 】
- Android数据传输加密(一):Base64转码算法
热门文章
- 修改战网昵称服务器错误,暴雪又改了游戏平台名字 暴雪战网回来了
- C-V2X仿真测试之虚拟场景设计
- 系统设计之时间维度[数据仓库]
- [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 6笔记
- 免费的chk恢复工具
- 浅谈工业互联网与产业互联网区别
- Java Web 开发后续(四)
- 测试空间与测试驱动接口设计 step to step
- winpe linux系统安装win7,WINPE+LINUX+DOS 完美者U盘维护系统V8.6 及安装方法
- meta标签详解(name、http-equiv、scheme、charset、各浏览器常用meta标签、常见移动端meta标签)、viewport详解