【乡土】葡京娱乐场注册女子还得靠自己(10)

http://www.lydsy.com/JudgeOnline/problem.php?id=1187

文/稚嫩着自身的天真烂漫

Description

style=”font-size: 15px;”>经历了一段劳苦的旅程后,主人公小P乘坐飞船重回。在回去的旅途,小P发现在漫无界限的沙漠中,有一块狭长的绿地特别明确。往下仔细一看,才发现这是一个文化馆,专为旅途中疲惫的人设计。娱乐场可以视作是一块大小为n×m的区域,且这多少个n×m的区域被分为n×m个小格子,每个小格子中就有一个游乐项目。然则,小P并不希罕其中的拥有娱乐项目,于是,他给各类门类一个满足度。满意度为正时代表小P喜欢这一个项目,值越大表示越喜欢。为负时表示她不喜欢,那些负数的相对值越大表示他越不爱好。为0时表示她对那些类型尚未喜恶。小P决定将飞艇停在某个小格中,然后每步他可以移动到隔壁的前后左右两个格子的某个格子中。小P希望找一条路子,从飞船所在格出发,最终又回去这个格子。小P有一个见惯司空,从不喜欢浪费时间。由此,他期望因此每个格子都是有含义的:他到一个地方后,就必将要感受以下这里的生死存亡和刺激,不管自己是不是爱好这里的游戏项目。而且,除了飞艇所在格,其他的格子他不愿意通过五回。小P希望团结至少要经过多个格子。在知足这个规范的景观下,小P希望自己玩过的玩耍项目标满足度之和最高。你能帮他找到这些最高的满足度之和吗?

Input

style=”font-size: 15px;”>输入文件中的第一行事多少个正整数n和m,表示俱乐部的大大小小为n×m。因为这些游戏场很狭窄,所以n和m满意:2<=n<=100,2<=m<=6。接下来的n行,每行有m个整数,第i行第j列表示俱乐部的第i行第j列的小格子中的娱乐项目的满足度,那些满意度的限量是[-1000,1000]。同一行的五个整数之间用空格隔开。

Output

style=”font-size: 15px;”>输出文件中仅一行为一个整数,表示最高的满足度之和。

Sample Input

4 4
100 300 -400 400
-100 1000 1000 1000
-100 -100 -100 -100
-100 -100 -100 1000

Sample Output

4000

葡京娱乐场注册 1

精晓是插头dp,因为是回路,所以我们这一次使用括号表示法。迎接访问我的这篇博客获取插头dp知识。

上一篇  妇人还得靠自己(9) 

而对此多回路问题,我们只需要在本来的根基上上心两点:

相见总是猝不及防。云霞万分惊奇,真是踏破铁鞋无觅处,得来全不费力。苦苦找了那么久的三喜竟然神不知鬼不觉地突然冒出在了他的前头。

1.当并未插头的时候,该格子可以不选。

“云霞,你这是……”

2.当翻新答案的时候,要咬定概况线是否有盈余的插头,假如有认证大家多加了那一个插头的值,而他们明确是无用的,于是废弃本状态。

“我今日在此处上班!”

但是注意一点:一个格子不算回路!

“真的假的?”

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int INF=2147483647;
const int mod=300000;
const int M=300005;
struct node{
    int to,nxt;
}edge[M];
int head[M],cnt;
int n,m,e1,e2;
int mp[105][15];
int cur,pre;  //滚动数组 
int state[2][M];  //记录状态,滚动 
int ans[2][M],cntt; //记录答案 
int tot[2]; //记录状态总数 
int bit[10];  //提取状态使用 
inline void getbit(){
    for(int i=1;i<10;i++)bit[i]=i<<1;
    return;
}
inline void add(int u,int v){
    cnt++;
    edge[cnt].to=v;
    edge[cnt].nxt=head[u];
    head[u]=cnt;
    return;
}
void insert(int now,int num){
    int u=now%mod;
    for(int i=head[u];i;i=edge[i].nxt){
    int v=edge[i].to;
    if(state[cur][v]==now){
        ans[cur][v]=max(ans[cur][v],num);
        return;
    }
    }
    add(u,++tot[cur]);
    state[cur][tot[cur]]=now;
    ans[cur][tot[cur]]=num;
    return;
}
void plugdp(){
    cur=0;
    tot[cur]=1;
    ans[cur][1]=0;
    state[cur][1]=0;
    for(int i=1;i<=n;i++){
    for(int j=1;j<=tot[cur];j++){
        state[cur][j]<<=2;
    }
    for(int j=1;j<=m;j++){
        memset(head,0,sizeof(head));cnt=0;
        pre=cur,cur^=1;
        tot[cur]=0;
        for(int k=1;k<=tot[pre];k++){
        int now=state[pre][k];
        int num=ans[pre][k]+mp[i][j];
        int is_down=(now>>bit[j-1])%4;
        int is_right=(now>>bit[j])%4;
        if(!is_down&&!is_right){
            insert(now,num-mp[i][j]);
            if(mp[i][j+1]&&mp[i+1][j])
            insert(now+(1<<bit[j-1])+2*(1<<bit[j]),num);
        }
        else if(!is_down&&is_right){
            if(mp[i][j+1])
            insert(now,num);
            if(mp[i+1][j])
            insert(now-is_right*(1<<bit[j])+is_right*(1<<bit[j-1]),num);
        }
        else if(is_down&&!is_right){
            if(mp[i+1][j])
            insert(now,num);
            if(mp[i][j+1])
            insert(now-is_down*(1<<bit[j-1])+is_down*(1<<bit[j]),num);
        }
        else if(is_down==1&&is_right==1){
            int count=1;
            for(int l=j+1;l<=m;l++){
            if((now>>bit[l])%4==1)count++;
            if((now>>bit[l])%4==2)count--;
            if(!count){
                insert(now-(1<<bit[l])-(1<<bit[j-1])-(1<<bit[j]),num);
                break;
            }
            }
        }
        else if(is_down==2&&is_right==2){
            int count=1;
            for(int l=j-2;l>=0;l--){
            if((now>>bit[l])%4==1) count--;
            if((now>>bit[l])%4==2) count++;
            if(!count){
                insert(now+(1<<bit[l])-2*(1<<bit[j-1])-2*(1<<bit[j]),num);
                break;
            }
            }
        }
        else if(is_down==2&is_right==1)
            insert(now-2*(1<<bit[j-1])-(1<<bit[j]),num);
        else if(is_down==1&&is_right==2){
            int count=0;
            for(int l=1;l<=m;l++){
            if((now>>bit[l])%4)count++;
            }
            if(count==2)cntt=max(cntt,num);
        }
        }
    }
    }
    return;
}
int main(){
    getbit();
    cntt=-INF;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
    for(int j=1;j<=m;j++){
        scanf("%d",&mp[i][j]);
    }
    }
    plugdp();
    printf("%d\n",cntt);
    return 0;
}

“当然是真的了!不信你问玲玲姐。”云霞说着拉了拉挽发轫的玲玲姐,她这才注意到温馨光顾心满意足了,竟然冷落了玲玲姐。

 

“是的,是的,大家一同的。哦,云霞,我刚想起来,我的任务卡还不曾交到总总监呢,我得赶紧去找她了,你们聊吧。”玲玲姐说着,放手了云霞,径自上楼去了。

三喜点点头,算是和玲玲姐打过招呼。云霞走近三喜:“我听秀莲说您就住在背后的小院里,怎么找了三遍都并未见人影呢?”

“哦,我目前直接都在工地上住,工程队急着赶工呢。我前天回升,也只是拿点东西。没悟出,竟然遇上您,无法不相信缘分啊!”

“缘分,缘分,你总是把它挂在嘴上!”

“哦,我几乎忘记了,这是你的口头禅。不过你并从未提请语言专利呀!”三喜说着哈哈哈哈大笑起来。

云霞也笑了,依然像往常这样甜蜜。三喜这才记忆云霞还有孩子,于是又问:

“这您来这儿上班,孩子吗?”

“孩子?孩子在家里。”说起子女,云霞的眼底掠过一丝无奈。

“哦,这就好!孩子大点了,你毕竟能够解放了。不过你家三强呢?他也允许你出来啊?”

“别提三强了,以后绝不再提三强这厮!”

“怎么了,你们?前一段时间我还在老苗娱乐场看见过三强呢。”三喜挺认真的规范。

“什么日期的事呀?”

“有一段日子了,好像有小半年的大体了。”

“你是不是看见三强赌博了?哦,听人说你还……”云霞话到嘴边,突然又咽了回来。

“我是在这边干过一段保安,后来本身意识不行地点待不住人,简直就是个大染缸,迟早要被染黑的。所以,人家一开工钱,我就辞职了。不过三强是去过一五回,至于白天,我就不大清楚了。”

“你是不是还叫过她啊?”云霞想起了三强堂弟说过的事,如故好奇地问三喜。

“没有呀?我叫她干啥?我和他也不是太熟知,还不是因为你嫁了她,我一度去会过他三回。不过那都是病故的事了,不提也罢。”

“既然看到了他去赌钱,这你咋就不阻拦她吗?”云霞起始抱怨起三喜来了。

“我们只是打个招呼,他说去找人的。他不会真的陷进去了?”

“不是咋滴?还欠了一屁股的债!”

“自古赌博害死人,他不会不领会吧?”

“他就是个活络头,根本管不了自己!”

“这她现在……”

“好了,好了,不要说他了,我一提起这么些就心烦!”三喜还想问出点儿什么,被云霞一句话挡了归来。

“这你找我有事啊?还找了几许次?”三喜想起刚才云霞说过和秀莲一起来这儿的事。

“哦,没事,只是恰好在这儿境遇了秀莲,她告知自己的。我也是惊讶,没事了就去这边看看。”云霞把自己特别找她寻三强的事遮掩了过去。

“将来瞎好也是邻里了,有事常联系啊,但是自己明天工地上的确还有事,我先走了。你好好干啊!”三喜说完,不自觉地在彩云的肩上拍了拍,向前走去。

望着劳燕分飞的三喜,她无意地摸了摸被三喜拍过的肩头,云霞的心田升起起一种莫名的喜欢。她接近回到了往日,回到了高中时代……

三喜和云霞一个班级,云霞就坐在三喜的前面,上课时,三喜轻轻拉了拉云霞那根乌黑的长辫子,云霞端坐着,只是从骨子里的案子底下伸过手,接住三喜塞进他手里的纸条。

攥得严苛的,心儿咚咚咚咚,像是揣了只小兔子。她红着脸,乐滋滋地把纸条逐步举行,三喜这雄浑有力的大字映入眼帘:

“云霞,你就是天上中这朵五彩的云,灿烂的太阳照过来,放射出万道巨大,这漂亮的彩云,飘啊飘,飘啊飘,一贯飘到了三喜的心田……”

云霞不敢再看下去了,她觉得脸颊像被火烧了相似,一贯烧到了全身。

“云霞,你跟着读!”语文先生叫道,云霞依旧沉浸在甜蜜中,笑嘻嘻,笑嘻嘻。

三迫使劲儿拉了拉云霞的辫稍,“啊——”云霞大叫着站了四起,全班哄堂大笑,云霞心中无数。

“云霞,你的心跑哪个地方去了?上课可不可能开小差。”语文先生批评着,又叫了另一个学生,云霞窘迫地站着,用脚向前边去踢三喜。

放学了,云霞找三喜算账,三喜则一边跑,一边喊:“老地点见,不见不散。”

一阵狂奔,来到村边的小森林,云霞用拳头娇嗔地打着三喜,边打边说:“坏三喜,臭三喜,害自己在课堂上下不来。说禁止明儿老师又要批评本身了。”

三喜一把吸引云霞的手,在他的肩上拍了又拍,郑重其事地说:“没事的,有自家呢!”

想开这里,云霞情不自禁地笑了起来。

“想啥好事吧,难得笑得如此甜蜜?”忽然,玲玲姐一把抱住了云霞。

“没有,玲玲姐就会取笑人。”

“你是应有好好笑一笑了,云霞,你笑起来实在好美!”

“玲玲姐!”云霞拉着玲玲姐撒起娇来。

“没悟出你还如此女孩子耶?”玲玲姐惊叹。

“难不成我是女汉子?”

葡京娱乐场注册,“反正相识这么久了,我第一次看到您如此小女生!”玲玲姐说着,还朝云霞做了个鬼脸。

云霞的脸一阵羞红,心也朗润了四起。

(无戒365极端挑战锻练营更文第九十二天)