Codeforces 360E 贪心 最短路
题意及思路:https://blog.csdn.net/huanghongxun/article/details/49846927
在假设所有边都是最大值的情况下,如果第一个人能比第二个人先到,那就缩短这条边。
代码:
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = 10010;
int head[maxn], Next[maxn * 2], ver[maxn * 2], f[maxn * 2], tot;
LL l[maxn * 2], r[maxn * 2];
LL d[2][maxn];
bool v[2][maxn];
queue<int> q[2];
int s1, s2, t, n, m, k;
void add(int x, int y, LL lb, LL rb) {
ver[++tot] = y, l[tot] = lb, r[tot] = rb, Next[tot] = head[x], head[x] = tot, f[tot] = x;
}
void spfa(int pos, int s) {
// memset(d[pos], 0x3f, sizeof(d[pos]));
// memset(v[pos], 0, sizeof(v[pos]));
// q[pos].push(s), v[pos][s] = 1, d[pos][s] = 0;
while(q[pos].size()) {
int x = q[pos].front();
q[pos].pop();
v[pos][x] = 0;
for (int i = head[x]; i; i = Next[i]) {
int y = ver[i], z = r[i];
if(d[pos][y] > d[pos][x] + z) {
d[pos][y] = d[pos][x] + z;
if(!v[pos][y])
q[pos].push(y), v[pos][y] = 1;
}
}
}
}
bool solve(int flag) {
memset(d, 0x3f, sizeof(d));
memset(v, 0, sizeof(v));
d[0][s1] = d[1][s2] = 0;
v[0][s1] = v[1][s2] = 1;
q[0].push(s1), q[1].push(s2);
bool flag1 = 1;
while(flag1) {
spfa(0, s1), spfa(1, s2);
flag1 = 0;
for (int i = m + 1; i <= k + m; i++) {
if(d[0][f[i]] + flag <= d[1][f[i]] && l[i] != r[i]) {
flag1 = 1;
q[0].push(f[i]), q[1].push(f[i]);
v[0][f[i]] = 1, v[1][f[i]] = 1;
r[i] = l[i];
}
}
}
return d[0][t] + flag <= d[1][t];
}
int main() {
int x, y;
LL z, t1;
scanf("%d%d%d", &n, &m, &k);
scanf("%d%d%d", &s1, &s2, &t);
for (int i = 1; i <= m; i++) {
scanf("%d%d%lld", &x, &y, &z);
add(x, y, z, z);
}
for (int i = 1; i <= k; i++) {
scanf("%d%d%lld%lld", &x, &y, &z, &t1);
add(x, y, z, t1);
}
if(solve(1)) {
printf("WIN\n");
for (int i = m + 1; i <= m + k; i++)
printf("%d ", r[i]);
printf("\n");
return 0;
}
if(solve(0)) {
printf("DRAW\n");
for (int i = m + 1; i <= m + k; i++)
printf("%d ", r[i]);
printf("\n");
return 0;
}
printf("LOSE\n");
}
Codeforces 360E 贪心 最短路的更多相关文章
- codeforces DIV2 D 最短路
http://codeforces.com/contest/716/problem/D 题目大意:给你一些边,有权值,权值为0的表示目前该边不存在,但是可以把0修改成另外一个权值.现在,我们重新建路, ...
- CodeForces - 893D 贪心
http://codeforces.com/problemset/problem/893/D 题意 Recenlty Luba有一张信用卡可用,一开始金额为0,每天早上可以去充任意数量的钱.到了晚上, ...
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答案 - 动态规划
There are n people and k keys on a straight line. Every person wants to get to the office which is l ...
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 828D) - 贪心
Arkady needs your help again! This time he decided to build his own high-speed Internet exchange poi ...
- CodeForces - 93B(贪心+vector<pair<int,double> >+double 的精度操作
题目链接:http://codeforces.com/problemset/problem/93/B B. End of Exams time limit per test 1 second memo ...
- [CSP-S模拟测试]:午餐(贪心+最短路)
题目传送门(内部题115) 输入格式 第一行两个正整数$n,m$. 接下来$m$行,每行$4$个正整数$u_j,v_j,L_j,R_j$. 接下来一行$n$个数,若第$i$个数为$1$,则$i$号同学 ...
- C - Ordering Pizza CodeForces - 867C 贪心 经典
C - Ordering Pizza CodeForces - 867C C - Ordering Pizza 这个是最难的,一个贪心,很经典,但是我不会,早训结束看了题解才知道怎么贪心的. 这个是先 ...
- Codeforces 570C 贪心
题目:http://codeforces.com/contest/570/problem/C 题意:给你一个字符串,由‘.’和小写字母组成.把两个相邻的‘.’替换成一个‘.’,算一次变换.现在给你一些 ...
- Codeforces 732e [贪心][stl乱搞]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...
随机推荐
- 4.VUE前端框架学习记录四:Vue组件化编码2
VUE前端框架学习记录四:Vue组件化编码2文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...
- 两个对象值相同(x.equals(y)==true),hashcode也相同
不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同.Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同( ...
- Synchronized和ReentranLock的比较
并发编程最容易遇到的问题就是就是安全问题,因此解决方式有两种 使用同步方法或同步代码块(Synchronized关键字) 使用锁机制(ReentranLock) 同步方法和同步代码块(Synchron ...
- MongoDB 聚合管道
参见:http://www.cnblogs.com/liruihuan/p/6686570.html MongoDB 的聚合功能,聚合操作主要用于对数据的批量处理,往往将记录按条件分组以后,然后再进 ...
- B/S架构和C/S架构介绍
一.C/S架构 C/S架构及其背景 C/S架构是一种比较早的软件架构,主要应用于局域网内.在这之前经历了集中计算模式,随着计算机网络的进步与发展,尤其是可视化工具的应用,出现过两层C/S和三层C/S架 ...
- maven之可执行jar包
在使idea创建springboot项目时,pom.xml文件中自动会添加下面这个插件. <build> <plugins> <plugin> <groupI ...
- springMVC使用map接收入参 + mybatis使用map 传入查询参数
测试例子: controllel层 ,使用map接收请求参数,通过Debug可以看到,请求中的参数的值都是字符串形式,如果将这个接收参数的map直接传入service,mybatis接收参数时会报错, ...
- Fraction Comparision
题目链接 题意:输入x,a,y,b求x/a和y/b的大小,范围long long int 思路:因为不想用精度,嫌麻烦,所以用了个巧方法.先求x/a和y/b整形的大小,如果相等,再求(x%a)*b和( ...
- [CSP-S模拟测试]:异或(树状数组+LCA)
题目传送门(内部题21) 输入格式 第一行一个字符串$str$,表示数据类型.第二行一个正整数$k$,表示集合$K$的大小,保证$k>1$.接下来$k$行每行$k$个数,第$i$行第$j$个数表 ...
- NGINX配置之二: nginx location proxy_pass 后面的url 加与不加/的区别.
这里我们分4种情况讨论 这里我们请求的网站为:192.168.1.123:80/static/a.html 整个配置文件是 server{ port 80, server name 192.168.1 ...