传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=110

传送门2:http://www.lydsy.com/JudgeOnline/problem.php?id=2581

这题我一看就知道自己不会了,只想了个O(2^n * 2 ^ n)即O(2 ^ 2n)的大暴力,也懒得打了,果断看solution。

看了之后惊呆了,看到了一种从未见过,闻所未闻的树叫做And-Or Tree,百度了一下,并没有官方中文翻译,姑且叫他“与或树”好了。这种树是一棵满二叉树,每个节点的属性要么为And要么为Or,若为And,则该节点的值为其左儿子的值 && 右儿子的值;同理若为Or,则该节点的值为其左儿子的值 || 右儿子的值。

对应到这一题,就很明显(好叭我承认并不明显= =)的看出这是一个And-Or Tree的模型了,先上一张图,这张图就是Sample Input对应的And-Or Tree

怎么理解这棵树呢?现在我们有N堆卡片,每堆有8张,FJ的操作是要取当前堆的前4张或后4张,只要这两种操作其中至少一种可以完成任务就ok了,所以这就对应每个Or节点。而由于FJ并不知道在取出这4张卡前并不知道Bessie要如何操作,所以为了保证万无一失,应该要使Bessie不管取这4张卡的前两张还是后两张都可以完成任务,即对应了And节点。上图左子树的意思是选择底部,右子树是选择顶部。具体看代码吧,很好理解的。

#include <cstdio>
#include <cstdlib> int n;
long long m, k, a[16][9], now;
char s[16]; bool solve_or(int, long long);
bool solve_and(int step, long long dis, int this4) {
int this2 = rand() & 1;
int rt = solve_or(step + 1, (dis * (a[step][this4 * 4 + this2 * 2] + 1) + a[step][this4 * 4 + this2 * 2 + 1]) % m) &&
solve_or(step + 1, (dis * (a[step][this4 * 4 + (this2 ^ 1) * 2] + 1) + a[step][this4 * 4 + (this2 ^ 1) * 2 + 1]) % m);
return rt;
}
bool solve_or(int step, long long dis) {
if (step == n + 1) {return dis <= k || dis >= m - k;
}
int next4 = rand() & 1;
int rt = solve_and(step, dis, next4) || solve_and(step, dis, next4 ^ 1);
return rt;
} int main(void) {
freopen("cowrun.in", "r", stdin);
freopen("cowrun.out", "w", stdout);
unsigned seed;
scanf("%d%I64d%I64d", &n, &m, &k);
seed += n + m + k;
scanf("%s", s + 1);
for (int i = 1; i <= n; ++i) {
for (int j = 0; j < 8; ++j) {
scanf("%I64d", &a[i][j]);
seed += a[i][j];
}
}
srand(seed); int t_this2;
for (int i = 1; i <= n; ++i) {
t_this2 = s[i] == 'B';
if (solve_and(i, now, 1)) {
printf("B");
now = (now * (a[i][4 + t_this2 * 2] + 1) + a[i][4 + t_this2 * 2 + 1]) % m;
}
else {
printf("T");
now = (now * (a[i][t_this2 * 2] + 1) + a[i][t_this2 * 2 + 1]) % m;
}
}
puts("");
return 0;
}

  真是涨姿势了,这个世界上真是啥奇葩玩意儿都有。。。

bzoj2581 [USACO 2012 Jan Gold] Cow Run【And-Or Tree】的更多相关文章

  1. [USACO 2012 Feb Gold] Cow Coupons【贪心 堆】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=118 传送门2:http://www.lydsy.com/JudgeOn ...

  2. bzoj258 [USACO 2012 Jan Gold] Bovine Alliance【巧妙】

    传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=111 传送门2:http://www.lydsy.com/JudgeOn ...

  3. [USACO 2011 Dec Gold] Cow Calisthenics【二分】

    Problem 1: Cow Calisthenics [Michael Cohen, 2010] Farmer John continues his never-ending quest to ke ...

  4. [USACO 2011 Nov Gold] Cow Steeplechase【二分图】

    传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=93 很容易发现,这是一个二分图的模型.竖直线是X集,水平线是Y集,若某条竖 ...

  5. [USACO 2012 Jan Silver] Bale Share【DP】

    传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=107 没想到太不应该了,真的不应该啊! f[i][j][k]表示前i个包, ...

  6. [USACO 2012 Jan Silver] Delivery Route【拆点】

    传送门:http://www.usaco.org/index.php?page=viewproblem2&cpid=106 这道题还真是完全没思路,真的不知道怎么做,但是看了题解后恍然大悟. ...

  7. USACO翻译:USACO 2012 JAN三题(2)

    USACO 2012 JAN(题目二) 一.题目概览 中文题目名称 叠干草 分干草 奶牛联盟 英文题目名称 stacking baleshare cowrun 可执行文件名 stacking bale ...

  8. USACO翻译:USACO 2012 JAN三题(1)

    USACO 2012 JAN(题目一) 一.题目概览 中文题目名称 礼物 配送路线 游戏组合技 英文题目名称 gifts delivery combos 可执行文件名 gifts delivery c ...

  9. [USACO 2018 Jan Gold] Tutorial

    Link: USACO 2018 Jan Gold 传送门 A: 对于不同的$k$,发现限制就是小于$k$的边不能走 那么此时的答案就是由大于等于$k$的边形成的图中$v$所在的连通块除去$v$的大小 ...

随机推荐

  1. 一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法

    有一段时间没有瞎折腾了. 这周一刚上班萌主过来反映说:微信里面打开聚客宝.分享功能是能够的(这里是用微信自身的js-sdk实现的).可是在android应用里面打开点击就没反应了:接下来狡猾的丁丁在产 ...

  2. 相机标定(Camera calibration)

    简单介绍 摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程.也就是求终于的投影矩阵 P 的过程,以下相关的部分主要參考UIUC的计算机视觉的课件(网址Spr ...

  3. LoadRunner系列实例之— 01录制cas登陆脚本

    关于CAS 的概念,见链接 需要增加4个关联函数,初次加载页面时取cookie和it1,输入账号密码点击登录时,取ticketGrantingTicketId和it2 实际上前后台完成两次交互, // ...

  4. Xcode升级插件失效解决办法-升级版

    Xcode升级插件失效解决办法 每每升级Xcode,第三方插件总是中枪.解决办法也基本是依据http://joeshang.github.io/2015/04/10/fix-xcode-upgrade ...

  5. [IT学习]Linux 学习笔记

    1.踢掉用户 # who 15:23:13 up 26 days, 1:44, 2 users, load average: 0.00, 0.05, 0.03 USER TTY FROM LOGIN@ ...

  6. aspx后台引用不到服务器控件

    从其他地方拷贝的页面到自己的项目,后台CS代码引用hidden时,提示找不到,百度,发现可能是网站项目和Web应用程序的区别,右键aspx转化为Web应用程序即可.

  7. 2016/3/1 淘宝 腾讯 网易 css初始化代码 以及最基础的初始化

    淘宝官网(http://www.taobao.com/)样式初始化 body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, o ...

  8. DBENV->open

    https://stuff.mit.edu/afs/sipb/project/sandbox/golem/db-3.0.55/docs/api_c/env_open.html #include < ...

  9. ORA-09817

    连接数据库的时候报:ORA-09817:write to audit file,在网上搜索了下,发现时oracle安装目录下面的磁盘空间不够,有不少人给出了解决办法,下面即是一例: 连接oracle  ...

  10. apple IOS的base64编解码

    <pre style="word-wrap: break-word; white-space: pre-wrap;">/* * Copyright (c) 2003 A ...