P1604&P1601
[usaco2010]冲浪_slide
受到秘鲁的马丘比丘的新式水上乐园的启发,Farmer John决定也为奶牛们建一个水上乐园。当然,它最大的亮点就是新奇巨大的水上冲浪。
超级轨道包含 E (1 <= E <=150,000)条小轨道连接着V (V <= 50,000)个水池,编号为1..V。每个小轨道必须按照特定的方向运行,不能够反向运行。奶牛们从1号水池出发,经过若干条小轨道,最终到达V号水池。每个水池(除了V号和1号之外,都有至少一条小轨道进来和一条小轨道出去,并且,一头奶牛从任何一个水池到达V号水池。最后,由于这是一个冲浪,从任何一个水池出发都不可能回到这个水池)
每条小轨道从水池P_i到水池Q_i (1 <= P_i <= V; 1<= Q_i <= V; P_i != Q_i),轨道有一个开心值F_i (0 <= F_i <= 2,000,000,000),Bessie总的开心值就是经过的所有轨道的开心值之和。
Bessie自然希望越开心越好,并且,她有足够长的时间在轨道上玩。因此,她精心地挑选路线。但是,由于她是头奶牛,所以,会有至多K (1 <= K <= 10)次的情况,她无法控制,并且随机从某个水池选择了一条轨道(这种情况甚至会在1号水池发生)
如果Bessie选择了在最坏情况下,最大化她的开心值,那么,她在这种情况下一次冲浪可以得到的最大开心值是多少?
在样例中,考虑一个超级轨道,包含了3个水池(在图中用括号表示)和4条小轨道,K的值为1(开心值在括号外表示出来,用箭头标识)
她总是从1号水池出发,抵达3号水池。如果她总是可以自己选择,就是不会发生不能控制的情况她可以选择从1到2(这条轨道开心值为5),再从2到3(开心值为5),总的开心值为5+5=10。但是,如过她在1号水池失去控制,直接到了3,那么开心值为9,如果她在2号水池失去控制,她总的开心值为8。
Bessie想要找到最大化开心值的方案,可以直接从1到3,这样,如果在1号水池失去控制,这样,她就不会在2号水池失去控制了,就能够得到10的开心值。因此,她的开心值至少为9。
这题最折腾人的是题目描述,语文不佳者勿入;
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iomanip>
#include<map>
#include<set>
#include<vector>
#include<ctime>
#include<cmath>
#define LL long long
using namespace std;
#define LL long long
#define up(i,j,n) for(int i=(j);(i)<=(n);(i)++)
#define max(x,y) ((x)<(y)?(y):(x))
#define min(x,y) ((x)<(y)?(x):(y))
namespace OI{
const int maxn=;
struct node{
int y,next,v;
}e[],E[];
int linkk[maxn],linker[maxn],q[maxn],len=,Len=;
int n,m,k,chu[maxn];
LL f[maxn][];
void insert(int x,int y,int v){
e[++len].next=linkk[x];
linkk[x]=len;
e[len].v=v;
e[len].y=y;
E[++Len].y=x;
E[Len].next=linker[y];
linker[y]=Len;
}
void init(){
scanf("%d%d%d",&n,&m,&k);
int x,y,v;
up(i,,m){
scanf("%d%d%d",&x,&y,&v);
insert(x,y,v);chu[x]++;
}
}
void work(){
int head=,tail=,x=;
q[++tail]=n;
while(++head<=tail){
x=q[head];
for(int i=linkk[x];i;i=e[i].next)
for(int j=;j<=k;j++)f[x][j]=max(f[x][j],f[e[i].y][j]+e[i].v);
for(int i=linkk[x];i;i=e[i].next)
for(int j=;j<=k;j++)f[x][j]=min(f[x][j],f[e[i].y][j-]+e[i].v);
for(int i=linker[x];i;i=E[i].next)if(--chu[E[i].y]==)q[++tail]=E[i].y;
}
printf("%I64d\n",f[][k]);
}
}
int main(){
using namespace OI;
init();
work();
return ;
}
[usaco2008dec]万圣节采糖
每年万圣节,Fj的奶牛都要打扮一番,出门在农场里N(1<=N<=100000)个牛棚里转悠,来采集糖果,她们每走到一个未曾经过的牛棚,就会采集这个棚里1棵糖果。
Fj为了让奶牛少采集糖果,他给每个牛棚设置了一个”后继牛棚”,牛棚i的后继牛棚是Xi,他告诉奶牛们,她们到了一个牛棚后,只要再往后继牛棚走去,就可以搜集到更多的糖果。
第i只奶牛从牛棚i开始她的旅程。请你计算,每一只奶牛可以采集到多少 糖果。
各种方法都可以做,我直接上最暴力的方法了;
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iomanip>
#include<map>
#include<set>
#include<vector>
#include<ctime>
#include<cmath>
#define LL long long
using namespace std;
#define LL long long
#define up(i,j,n) for(int i=(j);(i)<=(n);(i)++)
#define max(x,y) ((x)<(y)?(y):(x))
#define min(x,y) ((x)<(y)?(x):(y))
#define FILE "1"
namespace OI{
const int maxn=;
int a[maxn],x,y,cnt=,ru[maxn],ans[maxn],f[maxn];
int n;
int q[maxn],head=,tail=;
vector<int> G[maxn];
bool vis[maxn];
void init(){
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
ru[a[i]]++;G[a[i]].push_back(i);
}
}
void dfs3(int fa,int x){
ans[x]=ans[fa]+;
for(int i=;i<G[x].size();i++){
if(!ans[G[x][i]])dfs3(x,G[x][i]);
}
}
void bfs(int fa,int s){
tail=,head=;
q[++tail]=s;f[s]=fa;
while(++head<=tail){
x=q[head];ans[x]=ans[f[x]]+;
for(int j=;j<G[x].size();j++){
if(!ans[G[x][j]]){
f[G[x][j]]=x;
q[++tail]=G[x][j];
}
}
}
}
void work(){
up(i,,n)if(!ru[i])q[++tail]=i;
while(++head<=tail){
x=q[head];vis[x]=;
if(--ru[a[x]]==)q[++tail]=a[x];
}
up(i,,n)if(!vis[i]){
int u=i;cnt=;
do{cnt++;vis[u]=;u=a[u];
}while(u!=i);
do{ans[u]=cnt;u=a[u];
}while(u!=i);
do{
for(int j=;j<G[u].size();j++){
if(!ans[G[u][j]])bfs(u,G[u][j]);
}
u=a[u];
}while(i!=u);
}
up(i,,n)printf("%d\n",ans[i]);
}
void slove(){
init();
work();
}
} int main(){
using namespace OI;
slove();
}
P1604&P1601的更多相关文章
- 题解 P1601 【A+B Problem(高精)】
P1601 A+B Problem(高精) 题目描述 高精度加法,x相当于a+b problem,b不用考虑负数. 输入输出格式 输入格式: 分两行输入a,b<=10^500 输出格式: 输出只 ...
- 题解-洛谷P1601 A+B Problem(高精)
https://www.luogu.org/problemnew/show/P1601(题目传送) 显然数据范围超过了long long类型,故不能简单的用两个长整型存起来相加.这里用到大数据的高精度 ...
- P1601 A+B Problem(高精)
原题链接 https://www.luogu.org/problemnew/show/P1601 这个题提示的很清楚,并非简单的A+B,单纯的long long型也不行(不要被样例所迷惑).因为lo ...
- [uva P1601] The Morning after Halloween
[uva P1601] The Morning after Halloween 题目链接 非常经典的一道题目,lrj的书上也有(貌似是紫书?). 其实这题看起来就比较麻烦.. 首先要保证小鬼不能相遇, ...
- 洛谷——P1604 B进制星球
P1604 B进制星球 题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球.因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2 ...
- 洛谷【P1601】A+B Problem(高精)
题目传送门:https://www.luogu.org/problemnew/show/P1601 高精度加法板子.我们灵性地回忆一波小学学加法列竖式的场景(从\(6\)岁开始口算从未打过草稿的大佬请 ...
- 洛谷 P1604 B进制星球
P1604 B进制星球 题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球.因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2 ...
- 洛谷 P1601 A+B Problem(高精)
P1601 A+B Problem(高精) 题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式 ...
- 洛谷 题解 P1604 【B进制星球】
题目:P1604 B进制星球 本人提交记录:R6292872 作为一个极其无聊的人,我没事干地写了operator... 思路很简单: 读入b 读入b进制的x,y ans = x + y 输出ans ...
随机推荐
- js-压缩混淆工具 uglifyjs
单个打包文件npm install uglify-js -g 使用uglifyjs压缩js uglifyjs 原始js文件 -m -c -o 压缩后js文件 uglifyjs 原始js文件 -b -c ...
- Codeforces 932 B.Recursive Queries-前缀和 (ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined))
B. Recursive Queries time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 信号板拼包:数组方式(bug长度只是截短,并未清空,若之后拷贝数据长度小于之前数据长度,老数据会接在后面)
class SignalobardMsgReadHandler : public SessionVectChar::ReadHandler{public: SignalobardMsgReadHan ...
- 作为一个新人,怎样学习嵌入式Linux?
作为一个新人,怎样学习嵌入式Linux? 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会).尝试着写一些C语言竞赛的题目.它们是纯 ...
- 在CentOS上安装 MongoDB
安装是在线安装方式,因此必须先保证能正常上网. 安装mongodb,官方的安装文档,是在线安装方式: https://docs.mongodb.com/manual/tutorial/install- ...
- Android 打开其他程序
Intent intent = new Intent(); intent.setComponent(new ComponentName("所要打开的程序包名", "所要打 ...
- Keras学习
参加比赛用到了keras,虽然之前用tensorflow,但是感觉tensorflow的确不太友好,api比较难读,然后就学习keras使用 随着深入,发现keras的api确实比较友好 跑了一些ex ...
- vue2.0 自定义 侧滑删除(LeftSlider)组件
1.自定义侧滑删除组件 LeftSlider.vue <!-- 侧滑删除 组件 --> <template> <div class="delete"& ...
- SwitchyOmega 代理设置
1.SwitchyOmega官网 https://www.switchyomega.com/ 2.下载插件 https://www.switchyomega.com/download.html 3.配 ...
- odoo小数精确度
python round() 函数 Python用于四舍五入的内建函数round() ,它的定义为 意思是, 将 小数部分保留到 ndigits 指定的 小数位,也就是 精度保持到 ndigi ...