H:题目看错 背锅

#include <bits/stdc++.h>
#include <vector>
#define PI acos(-1.0)
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
const double EPS = 1.0e-9;
typedef pair<int, int> pairint;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e4 + ;
const int maxm = ;
vector<pair<int, int> > p[];
int visit[maxn];
int ans[maxn];
int anser = ;
void dfs(int cur)
{
int len = p[cur].size();
if (len == )
{
ans[cur] = ;
}
for (int i = ; i < len; i++)
{
int to = p[cur][i].first;
int lenth = p[cur][i].second;
if (ans[to] != -)
{
ans[cur] = max(ans[cur], ans[to] + lenth);
}
else
{
dfs(to);
ans[cur] = max(ans[cur], ans[to] + lenth);
}
}
}
int main()
{
int t;
cin >> t;
while (t--)
{
anser = ;
mem(visit, );
mem(ans, -);
int n, m;
int from, to, lenth;
cin >> n >> m;
for (int i = ; i <= m; i++)
{
scanf("%d %d %d", &from, &to, &lenth);
visit[to] = ;
p[from].pb(make_pair(to, lenth));
}
for (int i = ; i <= n; i++)
{
if (visit[i] == )
{
//cout<<i<<endl;
dfs(i);
anser = max(anser, ans[i]);
}
}
cout << anser << endl;
for (int i = ; i <= n; i++)
{
p[i].clear();
}
}
}

G:每个test 后面没换行 背锅

#include <bits/stdc++.h>
#include <vector>
#define PI acos(-1.0)
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
const double EPS = 1.0e-9;
typedef pair<int, int> pairint;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e5 + ;
const int maxm = ;
int n, m, i, num[], tree[], l, r;
char s[maxn], t[maxn];
int slen, tlen, lencha;
string ch, ch1;
int lowbit(int x)
{
return x & (-x);
}
void update(int x, int p)
{
while (x <= n)
{
tree[x] += p;
x += lowbit(x);
}
return;
}
int sum(int k)
{
int ans = ;
while (k > )
{
ans += tree[k];
k -= lowbit(k);
}
return ans;
}
int ask(int l, int r)
{
return sum(r) - sum(l - );
}
int main()
{
/*cin>>n>>m;
for(i=1;i<=n;i++)
{
cin>>num[i];
update(i,num[i]);
}
for(i=1;i<=m;i++)
{
cin>>l>>r;
cout<<ask(l,r)<<endl;
}*/
int time;
cin >> time;
while (time--)
{
//mem(num, 0);
mem(tree, );
int now;
scanf("%d",&m);
scanf("%s", s + );
scanf("%s", t);
slen = strlen(s + );
tlen = strlen(t);
//cout<<slen<<" "<<tlen<<endl;
lencha = slen - tlen + ;
n = slen;
for (int i = ; i <= lencha; i++)
{
for (int j = ; j <= tlen; j++)
{
if (j == tlen)
{
num[i] = ;
update(i, num[i]);
break;
}
if (s[i + j] != t[j])
{
num[i] = ;
update(i, num[i]);
break;
} }
}
/*for (int i = 1; i <= slen; i++)
{
cout << num[i] << " ";
}
cout << endl;*/
for (int i = ; i <= m; i++)
{
cin >> ch;
if (ch[] == 'Q')
{
scanf("%d %d", &l, &r);
printf("%d\n", ask(l, r - tlen + ));
}
else if (ch[] == 'C')
{
int flag = ;
scanf("%d", &now);
cin >> ch1;
if (s[now] != ch1[])
{
flag = ;
}
s[now] = ch1[];
int from = max(, now - tlen + );
int to = min(lencha, now);
if (flag)
{
for (int j = from; j <= to; j++)
{
if (num[j] == )
{
num[j] = ;
update(j, -);
}
else
{
for (int k = ; k <= tlen; k++)
{
if (k == tlen)
{
num[j] = ;
update(j, );
break;
}
if (s[j + k] != t[k])
{
break;
}
}
}
}
}
/*for (int i = 1; i <= slen; i++)
{
cout << num[i] << " ";
}
cout << endl;*/
}
}
puts("");
}
return ;
}

J!!!!!!:最小费用最大流

每个城市拆成出点和入点,源点连西安和大连,汇点连上海,相当于求从西安到上海和从大连到上海最小距离之和,每个城市入点和出点之间连一条容量为1的边,但是注意,上海的容量必须是2,再根据给出的边,分别连接出点入点,存入相应花费,那么问题就可以转化成最小费用最大流了,如果流量不为2输出-1,否则输出最小花费。

#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<map>
#include<queue>
#include<string>
using namespace std;
#define ll long long
const ll maxm = ;
const ll INF = 1e18 + ;
struct node
{
ll u, v, flow, cost, next;
}edge[maxm * ];
map<string, ll>p;
ll cnt, s, t, n, m, sum, FLOW;
ll head[maxm * ], dis[maxm * ], pre[maxm * ];
char a[maxm], b[maxm];
void init()
{
p.clear();
cnt = , s = , t = n * + , sum = , FLOW = ;
memset(head, -, sizeof(head));
}
void add(ll u, ll v, ll flow, ll cost)
{
edge[cnt].u = u, edge[cnt].v = v;
edge[cnt].flow = flow, edge[cnt].cost = cost;
edge[cnt].next = head[u], head[u] = cnt++;
edge[cnt].u = v, edge[cnt].v = u;
edge[cnt].flow = , edge[cnt].cost = -cost;
edge[cnt].next = head[v], head[v] = cnt++;
}
ll bfs()
{
queue<ll>q;
for (ll i = ;i <= t;i++) dis[i] = INF;
memset(pre, -, sizeof(pre));
dis[s] = , q.push(s);
ll rev = ;
while (!q.empty())
{
ll u = q.front();q.pop();
for (ll i = head[u];i != -;i = edge[i].next)
{
ll v = edge[i].v;
if (dis[v] > dis[u] + edge[i].cost&&edge[i].flow)
{
dis[v] = dis[u] + edge[i].cost;
pre[v] = i, q.push(v);
}
}
}
if (dis[t] == INF) return ;
return ;
}
ll MCMF()
{
ll ans = , minflow;
while (bfs())
{
minflow = INF;
for (ll i = pre[t];i != -;i = pre[edge[i].u])
minflow = min(minflow, edge[i].flow);
for (ll i = pre[t];i != -;i = pre[edge[i].u])
edge[i].flow -= minflow, edge[i ^ ].flow += minflow;
ans += dis[t] * minflow;
FLOW += minflow;
}
return ans;
}
int main()
{
ll i, j, k, T, c;
scanf("%lld", &T);
while (T--)
{
scanf("%lld", &n);
init();
ll nn = n * ;
for (i = ;i <= n;i++)
{
scanf("%s%s%lld", a, b, &c);
if (p[a] == )
{
p[a] = ++sum, k = ;
if (strcmp(a, "Shanghai") == ) k = ;
add(p[a], p[a] + nn, k, );
}
if (p[b] == )
{
p[b] = ++sum, k = ;
if (strcmp(b, "Shanghai") == ) k = ;
add(p[b], p[b] + nn, k, );
}
ll u = p[a], v = p[b];
add(u + nn, v, INF, c);
add(v + nn, u, INF, c);
}
ll u = p["Dalian"];
add(s, u, , );
u = p["Xian"];
add(s, u, , );
u = p["Shanghai"];
add(u + nn, t, , );
ll ans = MCMF();
if (FLOW == ) printf("%lld\n", ans);
else printf("-1\n");
}
return ;
}

2017 ICPC 乌鲁木齐的更多相关文章

  1. 2017 ICPC乌鲁木齐 A Coins 概率dp

    Coins 题意:一开始所有n个硬币都是反面朝上的,每次必须拿k个来抛,抛的人足够聪明,问m次之后向上的硬币的期望. 首先说了这个足够聪明的意思,就是只要向反面的有k个就不会sb地去拿向正面的来抛,想 ...

  2. 【2017 ACM/ICPC 乌鲁木齐赛区网络赛环境测试赛 E】蒜头君的排序

    [链接]h在这里写链接 [题意] 在这里写题意 [题解] 莫队算法+树状数组. 区间增加1或减少1. 对逆序对的影响是固定的. (用冒泡排序变成升序的交换次数,就是逆序对的个数) [错的次数] 0 [ ...

  3. 2017 icpc 沈阳网络赛

    cable cable cable Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  4. 2017 ICPC 广西邀请赛1004 Covering

    Covering Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  5. 2017 ICPC区域赛(西安站)--- J题 LOL(DP)

    题目链接 problem description 5 friends play LOL together . Every one should BAN one character and PICK o ...

  6. Bumped! 2017 ICPC North American Qualifier Contest (分层建图+dijstra)

    题目描述 Peter returned from the recently held ACM ICPC World finals only to find that his return flight ...

  7. 2017 ICPC网络赛(西安)--- Xor

    题目连接 Problem There is a tree with n nodes. For each node, there is an integer value ai, (1≤ai​≤1,000 ...

  8. 2017 ICPC西安区域赛 A - XOR (线段树并线性基)

    链接:https://nanti.jisuanke.com/t/A1607 题面:   Consider an array AA with n elements . Each of its eleme ...

  9. 2017 ICPC 广西邀请赛1005 CS Course

    CS Course Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

随机推荐

  1. js多元运算

    for(var i=1;i<=100;i++){ var f = i%3 == 0, b = i%5 == 0; if(f){ if(b){ console.log("FizzBuzz ...

  2. C# 创建桌面快捷方式 用法

    项目--->添加引用   找到 头部 using IWshRuntimeLibrary; 核心代码 string desktoppath = System.Environment.GetFold ...

  3. pytorch神经网络层搭建方法

    神经网络层的搭建主要是两种方法,一种是使用类(继承torch.nn.Moudle),一种是使用torch.nn.Sequential来快速搭建. 1)首先我们先加载数据: import torchim ...

  4. EM算法分析

    参考来源: <机器学习>——周志华 https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html 几个概念 极大似然估 ...

  5. TensorFlow实战第七课(dropout解决overfitting)

    Dropout 解决 overfitting overfitting也被称为过度学习,过度拟合.他是机器学习中常见的问题. 图中的黑色曲线是正常模型,绿色曲线就是overfitting模型.尽管绿色曲 ...

  6. 非常好的一个JS代码(CJL.0.1.js)

    /*! * Cloudgamer JavaScript Library v0.1 * Copyright (c) 2009 cloudgamer * Blog: http://cloudgamer.c ...

  7. Rsyslog收集应用日志

    收集系统其它服务日志,在客户端node1 上操作,示例以openstack-nova 服务的日志为例: 1.先修改配置文件 /etc/rsyslog.conf,完整内容如下: [root@node1 ...

  8. [Python3] 033 异常

    目录 异常 1. 简介 2. 异常的分类 3. 出现异常小例子 例子 4. 异常处理 5. 解决异常小例子 5.1 例子1 5.2 例子2 5.3 例子3 5.4 例子4 6. 手动引发异常 6.1 ...

  9. ZooKeeper常用命令行操作

    ZooKeeper常用命令行操作 通过./zkCli.sh 打开zk的客户端进入命令行后台 ls/ls2 列出当前节点下的子节点 ls2还会列出当前节点的状态 [zk: localhost:2181( ...

  10. hive_UDTF函数

    hive的UDTF函数是可以输入一行数据然后输出多行多列(可以是单行/单列)的函数 public class Tex extends GenericUDTF { /** * 对传入的参数进行初始化 * ...