问题 B: y

时间限制: 1 Sec  内存限制: 256 MB

题面


题面谢绝公开。

题解


考虑双向搜索。

定义$cal_{i,j,k}$表示当前已经搜索状态中是否存在长度为i,终点为j,搜索过边的状态为k的状态。

同样状态设计定义一个$cal2_{i,j,k}$。每个数组搜一半,暴力转移即可。

考虑初始化:$cal_{i,j,k}$数组起点必须是1节点,因此初始值为$cal_{0,1,0}=1$。

而$cal2_{i,j,k}$数组起点任意。因此$cal_{0,i,0}=1(i \in [1,n])$。

考虑最后将两半状态拼成一个状态,枚举断点即最终状态,判定是否有两个状态可以拼接起来当前总状态即可。

至于拼接的方向问题,可以将$cal2$数组的状态定义稍改一下:倒序搜索,当前起点为j,这样无须反转cal2的状态即可拼接。状态转移不变。

(关于为什么要拆开搜索,如果没有拆开,数组定义将是这样:$ cal[21][91][(1<<20)+10]$,大小为2003847846,也就是说不分开的话状态数将爆炸式增长。)

#include<bits/stdc++.h>
#define rint register int
using namespace std;
int n,m,d,ans,len,ren;
bool cal[][][],cal2[][][];
vector < pair<int,int> > v[];
int main()
{
scanf("%d %d %d",&n,&m,&d);len=d/,ren=d-len;
cal[][][]=;for(rint i=;i<=n;++i)cal2[][i][]=;
for(rint i=,ST,EN,CL;i<=m;++i)
{
scanf("%d %d %d",&ST,&EN,&CL);
v[ST].push_back(make_pair(EN,CL));
v[EN].push_back(make_pair(ST,CL));
}
for(rint i=;i<len;++i)
for(rint j=;j<(<<i);++j)
for(rint k=;k<=n;++k)
if(cal[i][k][j])
{
for(rint q=;q<v[k].size();++q)
cal[i+][v[k][q].first][(j<<)+v[k][q].second]=;
}
for(rint i=;i<ren;++i)
for(rint j=;j<(<<i);++j)
for(rint k=;k<=n;++k)
if(cal2[i][k][j])
{
for(rint q=;q<v[k].size();++q)
cal2[i+][v[k][q].first][(j<<)+v[k][q].second]=;
}
for(rint i=;i<(<<d);++i)for(rint j=;j<=n;++j)
if(cal[len][j][i>>ren]&&cal2[ren][j][i&(<<ren)-]){ans++;break;}
printf("%d\n",ans);
}

「题解」:y的更多相关文章

  1. 「题解」「美团 CodeM 资格赛」跳格子

    目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...

  2. 「题解」「HNOI2013」切糕

    文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最 ...

  3. 「题解」JOIOI 王国

    「题解」JOIOI 王国 题目描述 考场思考 正解 题目描述 点这里 考场思考 因为时间不太够了,直接一上来就着手暴力.但是本人太菜,居然暴力爆 000 ,然后当场自闭- 一气之下,发现对 60pts ...

  4. 「题解」:[loj2763][JOI2013]现代豪宅

    问题 A: 现代豪宅 时间限制: 1 Sec  内存限制: 256 MB 题面 题目描述 (题目译自 $JOI 2013 Final T3$「現代的な屋敷」) 你在某个很大的豪宅里迷路了.这个豪宅由东 ...

  5. 「题解」:$Six$

    问题 A: Six 时间限制: 1 Sec  内存限制: 512 MB 题面 题面谢绝公开. 题解 来写一篇正经的题解. 每一个数对于答案的贡献与数本身无关,只与它包含了哪几个质因数有关. 所以考虑二 ...

  6. 「题解」:Kill

    问题 A: Kill 时间限制: 1 Sec  内存限制: 256 MB 题面 题面谢绝公开. 题解 80%算法 赛时并没有想到正解,而是选择了另一种正确性较对的贪心验证. 对于每一个怪,我们定义它的 ...

  7. 「题解」:x

    问题 A: x 时间限制: 1 Sec  内存限制: 256 MB 题面 题面谢绝公开. 题解 赛时想到了正解并且对拍了很久.对拍没挂,但是评测姬表示我w0了……一脸懵逼. 不难证明,如果对于两个数字 ...

  8. 「题解」:07.16NOIP模拟T2:通讯

    问题 B: 通讯 时间限制: 1 Sec  内存限制: 256 MB 题面 题目描述 “这一切都是命运石之门的选择.” 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短 信,并由此 ...

  9. 「题解」:$e$

    问题 B: $e$ 时间限制: 2 Sec  内存限制: 512 MB 题面 题面谢绝公开. 题解 话说一天考两个主席树这回事…… 正解可以叫树上主席树??(脸哥说也叫主席树上树???) 对于树上的每 ...

随机推荐

  1. favicon.ico引用

    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> ...

  2. element 点击切换按钮的颜色

    1.html <el-button-group label="时间"> <el-button @click="seeHour" :type=& ...

  3. Comet OJ - Contest #11 E ffort(组合计数+多项式快速幂)

    传送门. 题解: 考虑若最后的总伤害数是s,那么就挡板分配一下,方案数是\(C_{s-1}^{n-1}\). 那么问题在于总伤害数很大,不能一个一个的算. \(C_{s-1}^{n-1}\)的OGF是 ...

  4. 同源策略 - JSONP - CORS

    1.  Jquery 对象可以通过 .index() 进行取出自当前元素在父级元素中存放的索引: 2. 浏览器的同源策略 -- Ajax 在访问非本网站的时候,在数据返回的时候,会被浏览器拦截 - 后 ...

  5. Yii2中应用子模块下的内容

    public function actionIndex(){ $article=\YII::$app->getModule('article'); $article->runAction( ...

  6. Java打war包or打jar包

    //一个jar包可以包含多个entry,这样就能实现下面功能 1.I/O       读文件流步骤                 File file=new File(filePath);     ...

  7. JS对象的讲解

    1.对象属性的可枚举性和所有权:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Enumerability_and_ownership_ ...

  8. WebBug靶场基础篇 — 02

    本篇以第一人称记录这个关卡的第 1-5 关. 由于我记录的过程有点偏向于思考,所以截图截的多 = =!所以文章有点长... 下午一觉醒来,已经 4 点多了,然后开电脑,在虚拟机里,铺了铺靶场,但是毕竟 ...

  9. 2019 wannafly winter camp day1-4代码库

    目录 day1 F div1 爬爬爬山 (最短路) B div2 吃豆豆 (dp) J div2 夺宝奇兵(暴力) J div1 夺宝奇兵 (权值线段树) C div1 拆拆拆数 E div1 流流流 ...

  10. Zend Studio出现 Some characters cannot be mapped using "GBK" character encoding 错误

    解决办法: Window->Profermance->General->Content Types->Text看目录下面的每个文件,包括子目录里面 Default encodi ...