放假之前

咸鱼好久啦。快放假了调整下。

圣诞打到了小礼物自己动手丰衣足食(其实是没人给我送)

12.24

URAL 1519 Formula 1

插头dp。抄板子。

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <cstring>
  4 #include <algorithm>
  5 using namespace std;
  6 typedef long long LL;
  7 int N, M, ex, ey;
  8 int G[22][22];
  9
 10 const int HASH = 10007;
 11 const int STATE = 1111111;
 12 struct HashMap
 13 {
 14     int sz, h[HASH];
 15     int nxt[STATE];
 16     LL key[STATE], val[STATE];
 17
 18     void init()
 19     {
 20         sz = 0;
 21         memset(h, 0, sizeof(h));
 22     }
 23
 24     void push(LL Key, LL Val)
 25     {
 26         int t = Key % HASH;
 27         for(int i = h[t]; i; i = nxt[i])
 28         if(key[i] == Key) {val[i] += Val; return;}
 29         nxt[++sz] = h[t];
 30         key[sz] = Key, val[sz] = Val;
 31         h[t] = sz;
 32     }
 33 } H[2];
 34
 35 void decode(int * code, LL st)
 36 {
 37     for(int i = M; i >= 0; i--)
 38     {
 39         code[i] = st & 7LL;
 40         st >>= 3LL;
 41     }
 42 }
 43
 44 int ch[22];
 45 LL encode(int * code)
 46 {
 47     LL st = 0;
 48     memset(ch, -1, sizeof(ch));
 49     int cnt = ch[0] = 0;
 50     for(int i = 0; i <= M; i++)
 51     {
 52         if(ch[code[i]] == -1) ch[code[i]] = ++cnt;
 53         code[i] = ch[code[i]];
 54         st <<= 3LL;
 55         st |= (LL) code[i];
 56     }
 57     return st;
 58 }
 59
 60 void shift(int * code)
 61 {
 62     for(int i = M; i; i--) code[i] = code[i-1];
 63     code[0] = 0;
 64 }
 65
 66 void solve(int x, int y, int cur)
 67 {
 68     H[cur^1].init();
 69     for(int i = 1; i <= H[cur].sz; i++)
 70     {
 71         int code[22];
 72         decode(code, H[cur].key[i]);
 73         if(G[x][y])
 74         {
 75             int L = code[y-1], U = code[y];
 76             if(L && U)
 77             {
 78                 if(L == U)
 79                 {
 80                     if(x != ex || y != ey) continue;
 81                     code[y-1] = code[y] = 0;
 82                 }
 83                 else
 84                 {
 85                     code[y-1] = code[y] = 0;
 86                     for(int j = 0; j <= M; j++)
 87                     if(code[j] == U) code[j] = L;
 88                 }
 89             }
 90             else if(L || U)
 91             {
 92                 int t = L ? L : U;
 93                 if(G[x][y+1])
 94                 {
 95                     code[y-1] = 0, code[y] = t;
 96                     H[cur^1].push(encode(code), H[cur].val[i]);
 97                 }
 98                 if(G[x+1][y])
 99                 {
100                     code[y-1] = t, code[y] = 0;
101                     if(y == M) shift(code);
102                     H[cur^1].push(encode(code), H[cur].val[i]);
103                 }
104                 continue;
105             }
106             else
107             {
108                 if(!G[x][y+1] || !G[x+1][y]) continue;
109                 code[y-1] = code[y] = 20;
110             }
111         }
112         else code[y-1] = code[y] = 0;
113         if(y == M) shift(code);
114         H[cur^1].push(encode(code), H[cur].val[i]);
115     }
116     return;
117 }
118
119 int main(void)
120 {
121     ex = ey = 0;
122     scanf("%d %d", &N, &M);
123     for(int i = 1; i <= N; i++)
124     {
125         char s[22];
126         scanf("%s", s + 1);
127         for(int j = 1; j <= M; j++)
128         if(s[j] == ‘.‘) G[i][j] = 1, ex = i, ey = j;
129     }
130     if(!ex && !ey) puts("0");
131     else
132     {
133
134     int cur = 0;
135     H[cur].init();
136     H[cur].push(0, 1);
137     for(int i = 1; i <= N; i++)
138         for(int j = 1; j <= M; j++)
139             solve(i, j, cur), cur ^= 1;
140     LL ans = 0;
141     for(int i = 1; i <= H[cur].sz; i++) ans += H[cur].val[i];
142     printf("%I64d\n", ans);
143     }
144     return 0;
145 }

Aguin

12.25

HDU 1693 Eat the Trees

简化版。改改板子。

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <cstring>
  4 #include <algorithm>
  5 using namespace std;
  6 typedef long long LL;
  7 int G[22][22];
  8 int N, M;
  9
 10 const int HASH = 10007;
 11 const int STATE = 1111111;
 12 struct HashMap
 13 {
 14     int sz, h[HASH];
 15     int nxt[STATE];
 16     LL key[STATE], val[STATE];
 17
 18     void init()
 19     {
 20         sz = 0;
 21         memset(h, 0, sizeof(h));
 22     }
 23
 24     void push(LL Key, LL Val)
 25     {
 26         int t = Key % HASH;
 27         for(int i = h[t]; i; i = nxt[i])
 28         if(key[i] == Key) {val[i] += Val; return;}
 29         nxt[++sz] = h[t];
 30         key[sz] = Key, val[sz] = Val;
 31         h[t] = sz;
 32     }
 33 } H[2];
 34
 35 void decode(int * code, LL st)
 36 {
 37     for(int i = M; i >= 0; i--)
 38     {
 39         code[i] = st & 7LL;
 40         st >>= 3LL;
 41     }
 42 }
 43
 44 int ch[22];
 45 LL encode(int * code)
 46 {
 47     LL st = 0;
 48     memset(ch, -1, sizeof(ch));
 49     int cnt = ch[0] = 0;
 50     for(int i = 0; i <= M; i++)
 51     {
 52         if(ch[code[i]] == -1) ch[code[i]] = ++cnt;
 53         code[i] = ch[code[i]];
 54         st <<= 3LL;
 55         st |= (LL) code[i];
 56     }
 57     return st;
 58 }
 59
 60 void shift(int * code)
 61 {
 62     for(int i = M; i; i--) code[i] = code[i-1];
 63     code[0] = 0;
 64 }
 65
 66 void solve(int x, int y, int cur)
 67 {
 68     H[cur^1].init();
 69     for(int i = 1; i <= H[cur].sz; i++)
 70     {
 71         int code[22];
 72         decode(code, H[cur].key[i]);
 73         if(G[x][y])
 74         {
 75             int L = code[y-1], U = code[y];
 76             if(L && U)
 77             {
 78                 if(L == U)
 79                 {
 80                     // if(x != ex || y != ey) continue;
 81                     code[y-1] = code[y] = 0;
 82                 }
 83                 else
 84                 {
 85                     code[y-1] = code[y] = 0;
 86                     for(int j = 0; j <= M; j++)
 87                     if(code[j] == U) code[j] = L;
 88                 }
 89             }
 90             else if(L || U)
 91             {
 92                 int t = L ? L : U;
 93                 if(G[x][y+1])
 94                 {
 95                     code[y-1] = 0, code[y] = t;
 96                     H[cur^1].push(encode(code), H[cur].val[i]);
 97                 }
 98                 if(G[x+1][y])
 99                 {
100                     code[y-1] = t, code[y] = 0;
101                     if(y == M) shift(code);
102                     H[cur^1].push(encode(code), H[cur].val[i]);
103                 }
104                 continue;
105             }
106             else
107             {
108                 if(!G[x][y+1] || !G[x+1][y]) continue;
109                 code[y-1] = code[y] = 20;
110             }
111         }
112         else code[y-1] = code[y] = 0;
113         if(y == M) shift(code);
114         H[cur^1].push(encode(code), H[cur].val[i]);
115     }
116     return;
117 }
118
119 int main(void)
120 {
121     int T;
122     scanf("%d", &T);
123     for(int kase = 1; kase <= T; kase++)
124     {
125         memset(G, 0, sizeof(G));
126         scanf("%d %d", &N, &M);
127         for(int i = 1; i <= N; i++)
128             for(int j = 1; j <= M; j++)
129                 scanf("%d", &G[i][j]);
130         int cur = 0;
131         H[cur].init();
132         H[cur].push(0, 1);
133         for(int i = 1; i <= N; i++)
134             for(int j = 1; j <= M; j++)
135                 solve(i, j, cur), cur ^= 1;
136         LL ans = 0;
137         for(int i = 1; i <= H[cur].sz; i++) ans += H[cur].val[i];
138         printf("Case %d: There are %I64d ways to eat the trees.\n", kase, ans);
139     }
140     return 0;
141 }

Aguin

时间: 2024-10-27 11:23:58

放假之前的相关文章

2015-10-6 20:12 放假几天学习的状态越来越差,为自己加油

放假几天学习的状态越来越差! 加油!我不是打杂的网管!我要成为大神!

如何对抗放假综合症

?  春节7天假,估计初六又有很多人陷入不想上班的困境,似乎我这两年已经没有了这种困扰,下面来讲讲当年上学时候的我是怎样的.  当我还是上学的时候,每次放寒暑假的时候都特别兴奋,上了一个学期的课,终于要放假了,这种心情大家都懂的:).  然后,放假开始了,为了不“虚度“这个假期,先看几遍发下来的散发着油墨香气的寒假作业,再翻翻下个学期要用的教科书.如果是数学之类的也有可能一个学期只教了一半,那么就是翻翻后面没看过的下半册.现在想想倒是很像每次大战来临,将军都要跳到台子上进行战争总动员,弘扬已方目

深圳网站建设公司天地心网络五一放假安排

深圳网站建设公司天地心网络依据国家2014年度法定节假日安排,5月1日(星期四)- 5月3日(星期六)为五一节假日,5月4日(星期日)正式上班,假期共3天:深圳网络公司天地心网络假期工作安排如下:一.5月1日(星期四)- 5月3日(星期六)为五一节假日,假期我司将一如既往的为您提供优质.高效的问题速决服务,若您需要相关维护,请您根据天地心网络官方站提交维护工单界面(http://www.tiandixin.net/41/)要求整理维护信息,我司维护员将会尽快为您解决:二.此期间,若您问题紧急,您

放假第一天

昨晚睡的晚,打算今天睡个懒觉,但到了8点多醒了就再也睡不着了,越是放假越是这样,或许这就是年纪大的表现. 上午10点去东三环自提点,取回朋友给的海产品提货券.最近生意不好做,老板将门面撤了,搬到了家里,老板50多岁,神采奕奕,很具有亲和力,温州人,在北京待了几十年,从事着家乡的海产生意,从地理位置和家里装修来看,在以前可没少赚,感受到浙商果然名不虚传.房间位于22楼,老板领我到阳台,这两天空气质量好,站在阳台上,视野很开阔,心旷神怡,还是很羡慕这种高层居住的感觉.阳台上摆了一个大冰柜,里面整齐的

.NET判断某一年的所有放假的日期

由于工作需求写的一个程序,判断某一年所有的放假日期,根据国家的法定假日和补休日期进行的判断. protected void Button1_Click(object sender, EventArgs e) { string sql = ""; //2015年1月1日的星期数 int year = 2015; int week = 4; for (int month = 1; month <= 12; month++) { int day = 31; switch (month)

周末了,也给心灵放放假

当只能手机.电脑等各种娱乐工具充斥于我们的生活,周末再也不是周末,而是成为各种电子产品操纵人类的工作日.似的,周末本是用来休息的时间,不仅是停下来五天的工作,让身体彻底放手,而且还是给心灵一个可以安静思考.自由放松的空间,让我们在工作之余,能够见识更精彩的人生,能够享受大自然的馈赠.但是,渐渐地,我们成了电子产品的奴隶,周末也不再具备最初的意义. 周末了关闭电脑和电视,将手机放在包里还原它最初接听电话的功能.不要让这些电子科技时代的速成产品躁动了你的心灵.这个世界不正常的飞速和浮躁大部分来源于这

2014中秋放假的第一天

今天是2014-09-06也就是中秋放假的第一天,博主今天早上6点半的时候肚子疼醒了 上了几次厕所还是不行,也没有像着凉的症状.一直在回想到底是怎么了.觉得自己可能是肠胃痉挛.以前读书的和也痛过,擦了风油精也没用.想去楼下看医生,估计还没开门不过还是去楼下跑了几家药店和诊所都没开门,在跑的过程中疼痛还减少了不少.于是我想反正没开门我就跑步去.果然跑一圈的时候肚子没痛了于是想上楼.想了想反正下来了就多跑一下子,于是跑了一段时间,发现身上的肉是个趟啊 我真的该减肥了.跑的过程我想了很多东西.想想自己

胜利日放假偶感

放假这四天,现已荒废了三天,还剩一天了.想振作一番,却又懒的动手,一直困居在这个小屋子里,仿佛与世隔绝.回顾我已经历的人生,可以说我是一个乖孩子,一直多谋少断,做了事情以后经常会回首去看,不免唏嘘一番,片刻后却又打断这种念头,因为我接受的教育是做过的事莫后悔,要往前走. 一直想着看几本书,但手头上的书自从从图书馆借来后,都只是翻了前面几十页,后来就为各种理由耽误了,临到还书日期却又各种找推荐, 然后又是另一批书,结果亦如是.或许这是我现在的生活太安逸了,虽然工资不高但我一个人也饿不死,反正我的物

你发多少年终奖,放假几天

马上就要进入2015年2月份,春节长假也开始了倒计时,还没回家被三姑六婆追问男/女朋友.结婚.工作.票子.房子,就常常被朋友问: 你们什么时候放假,发多少年终奖? 先来看看土豪们的年终奖情况,不过千万不要拿这个去给你老板谈判,要不他会深深的望你一眼:那你怎么不去? 据说百度今年也要变土豪了 李彦宏在公司年会上说要改变年终奖规则,有人可能会拿到50个月工资,还说"没有上限",oh my god,年终奖都发上百万. 不过,据说,百度过去的做法是用差异化系数通过一个公司来算(不愧是技术驱动的