51nod 1442 士兵的旅行】的更多相关文章

拆点,因为只能走一步,那么u->v 后就不能到k了,这样,建图就能保证只走一步: #include <bits/stdc++.h> using namespace std; *; const int INF = 0x3f3f3f3f; struct Edge { int from,to,cap,flow; }; struct Dinic { int n,m,s,t; vector<Edge> edge; vector<int> G[maxn]; bool vis[…
裸网络流拆点就可以了... #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> using namespace std; #define rep(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) #define clr(x,c) memset(x,c,sizeof(x…
E. Soldier and Traveling time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output In the country there are n cities and m bidirectional roads between them. Each city has an army. Army of the i-th ci…
[题目]51Nod 1273 旅行计划 [题意]给定n个点的树和出发点k,要求每次选择一个目的地旅行后返回,使得路径上未访问过的点最多(相同取编号最小),旅行后路径上所有点视为访问过,求旅行方案.\(n,k \leq 5*10^4\). [算法]贪心 首先显然是访问所有叶子节点,先按叶子节点深度从大到小排序后依次访问,算出到达每个叶子节点路径上未访问过的点数,再按这个从大到小排序输出就是答案. 这里有个问题,就是前面的点访问后,后面的点答案会发生改变,可能会变得不优.但实际上我们考虑会干扰这个点…
某个国家有N个城市,编号0 至 N-1,他们之间用N - 1条道路连接,道路是双向行驶的,沿着道路你可以到达任何一个城市.你有一个旅行计划,这个计划是从编号K的城市出发,每天到达一个你没有去过的城市,并且旅途中经过的没有去过的城市尽可能的多(如果有2条路线,经过的没有去过的城市同样多,优先考虑编号最小的城市),直到所有城市都观光过一遍.现在给出城市之间的交通图T,以及出发地点K,你来设计一个旅行计划,满足上面的条件.例如:   (K = 2)     第1天 从2到0 (城市 1 和 0 变成去…
1441 士兵的数字游戏 题目来源: CodeForces 基准时间限制:4 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  取消关注 两个士兵正在玩一个游戏,游戏开始的时候,第一个士兵为第二个士兵选一个正整数n.然后第二个士兵要玩尽可能多的轮数.每一轮要选择一个正整数x>1,且n要是x的倍数,然后用n/x去代替n.当n变成1的时候,游戏就结束了,第二个士兵所得的分数就是他玩游戏的轮数. 为了使游戏更加有趣,第一个士兵用 a! / b! 来表示n.k!表示把所有1到k…
luogu AC传送门(官方数据) 题目描述 小智最喜欢旅行了,这次,小智来到了一个岛屿众多的地方,有N座岛屿,编号为0到N-1,岛屿之间 由一些桥连接,可以从桥的任意一端到另一端,由于岛屿可能比较大,所以会出现一些桥连接的是同 一个岛屿,岛屿之间也可能有多座桥连接,每条桥有一个长度,小智有一个习惯,每次走过的桥都必 须严格比之前走的桥长度长,小智可以从任意一个岛屿出发,任意一个岛屿结束,现在小智想知道最 多能走过多少条桥? 输入格式 第一行两个数N和M,分别表示岛屿个数和桥的个数 接下来M行,…
一开始看到这题真的有点懵逼...一直在想着套算法,结果题解除了sort和dfs其他什么都没用到 显然每次到达的一定都是叶子,先从根节点dfs一遍,按深度对叶子降序排序,按这个顺序向根节点dfs,路径上没有被之前的叶子遍历过的点就是到达这个叶子时未经过的点的个数,于是我们跑出所有叶子未经过点的个数再排序一次输出就行了 #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio>…
>>这是原题传送门<< 答案参考来自 http://www.cnblogs.com/sugewud/p/9822933.html 思路:思维题OR规律题?个人没写出来,脑子里只有深度DFS暴力,看完了一个大佬的题解,学到了思路ANDpow()函数的另一种写法,妙不可言! 先说思路:从一条链的时候开始推导,假如这条链长度为n,这条链上面的点分为两种—端点和非端点: 先看非端点的情况 0-0-0-0-0-0-0-0-0-0-0 其中的某一个非端点,到达两个端点的情况是2^(n-2),也…
http://www.51nod.com/contest/problemList.html#!contestId=72&randomCode=147206 原题水题大赛.. A.珂朵莉的旅行 发现不管非叶子节点选什么,都可以改变叶子节点来满足条件,所以直接算即可 #include<bits/stdc++.h> #define REP(i,a,b) for(int i(a);i<=(b);++i) using namespace std; typedef long long ll;…