P1335 [NOI2013] 小Q的修炼 题解

感觉这种题答都没有题解,而我又想在这里保存一下代码,就写一份题解咯。【题意】一共有M个变量。有一系列的操作,按顺序标为1~N。操作分为三种:①普通操作:将一个变量加上一个量。②条件跳转:给出两个量A、B和两个编号P、Q。如果A<B那么跳到编号为P的操作,否则跳到编号为Q的操作。③选择跳转:给出两个编号P、Q。在P和Q中任选一个跳过去。注意以上的“量”可以是常量,也可以是目前某一个变量的值。如果什么时候跳转到的编号不在1~N之间,则视为退出游戏。你要给出选择跳转的
摘要由CSDN通过智能技术生成

感觉这种题答都没有题解,而我又想在这里保存一下代码,就写一份题解咯。

【题意】

一共有M个变量。

有一系列的操作,按顺序标为1~N。操作分为三种:

①普通操作:将一个变量加上一个量。

②条件跳转:给出两个量A、B和两个编号P、Q。

如果A<B那么跳到编号为P的操作,否则跳到编号为Q的操作。

③选择跳转:给出两个编号P、Q。在P和Q中任选一个跳过去。

注意以上的“量”可以是常量,也可以是目前某一个变量的值。

如果什么时候跳转到的编号不在1~N之间,则视为退出游戏。

你要给出选择跳转的决策,使退出游戏的时候第一个变量的值尽量的大。

(数据隐藏条件:跳转满足拓扑序)

【Case1和Case2】

C1的决策只有20个,直接DFS一下。

(顺便要写一个比较DJ的读入和模拟器)

发现C2跑了几秒也跑出来了QAQ。动态规划

#include<cstdio>
#include<cstring>
const int V=14,N=35005,A=35008,M=1005;// test4,5,<6>:6005,5005;test7,9,<8,10>:17505,505;
long long a3[50]={// test3 answers in 40 bits each
105025473538,966002026284,29071798794,828015681698,345076144512,7609663648,75572971281,893434105988,55374250029,69357298497,
352188367880,606129394432,114391256076,280284430482,21342331152,71438241792,552864354484,277310738817,292830118913,356817845002,
171866350220,738738866178,124730794401,567011710064,276090593300,146336664705,105370633227,8766641162,554084534088,220354604,
275834439762,689661677592,384430491443,35505128705,362000505380,717277582337,551404199944,28525008900,42180411432,111962951362,
756249821316,104178523169,970685944448,826990151840,550066487844,56014938624,183102753072,498235172866,367371821952,111820754965};
int a4[37]={// test4 answers in 27 bits each
53023363,126569282,96699504,125433988,17903708,69782701,20011427,79325988,34426572,28519852,73662648,88093828,111679748,2720499,
8722643,3446989,98607969,271677,9013658,3140163,39583877,77874946,99252525,50794073,5960927,58906286,79851791,88096402,74645533,
115779693,19405473,127156765,89097393,106777648,37504704,102765283,13775654};
unsigned long long a5[13]={// test5 answers in 64 bits each
2472856109046735176u,14002470006381216419u,9262603746387061448u,6104175549895418148u,7607447720203324760u,
187054435080471040u,5353311602114594057u,164434300413151236u,23615752480527815
  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值