csu 1008 - Horcrux
不得不表示,能用栈来做的题目前对我来说都很费解,这题又是抄的,来自校友JMDWQ,只不过把C改成了C++。开始时我用的是暴搜,数组的每一位就是一个“魂器”,而他的栈结构里每一位是连续相同的“魂器”的长度,明显要好的多。对他的核心代码,我的理解是这样的,大牛勿喷:
判断当前与前一位 相同:栈顶++;(当前连续区长度+1)
不同:不能变化 || top==0: s[++top] = 1;(开辟新区,长度为1)
能变化 && top(存在区):只有一个区:栈顶++(长度+1);t = !t(最左边的区变了);
存在多个区:s[top-1] += s[top]+1;top--;(合并区);
现在举一个最后一种情况的例子:00110001,当前到最后一个,“1”,不同,可以变化,之前有三个区,s[1]==2,s[2]==2,s[3]==3,区3里的3个0都变为1,加上的当前的1(可以理解为区4),全都合并的区2里了,s[2] += s[3]+1;top--就是少一个区嘛。
最后不得不说代码中t的安排,真是巧妙。所有的区是0、1、0、1间隔的,t变化表示最左边的区变了,后来的top%2==t是用来判断当前也就是最后一个区是0还是1;本来我还是搞不清,后来看到t=f(第一个数),我觉悟了,原来t 一开始就是最左边的,它是0 t也是0,它是1 t也是1;然后它变t也变,完全一样嘛!t与top各2种情况,一共4种,枚举一下就发现这样会保证top指向0,真是妙,以后我也这样判断。
1 #include<iostream> 2 using namespace std; 3 const int MAXN = 100010; 4 unsigned short s[MAXN]; 5 int main() 6 { 7 int t,f,top,ans,i,n,x; 8 while(cin>>n) 9 { 10 top = ans = 0; 11 memset(s,0,sizeof(s)); 12 cin>>f; 13 t = f; 14 s[++top] = 1; 15 for(i = 1; i < n; i++) 16 { 17 cin>>x; 18 if(f!=x) 19 { 20 f = x; 21 if(i%2 && top) 22 if(top > 1) 23 s[top-1] += s[top]+1,top--; 24 else 25 s[top]++,t = !t; 26 else s[++top] = 1; 27 } 28 else s[top]++; 29 } 30 if(top%2 == t) top--; 31 while(top > 0) 32 { 33 ans += s[top]; 34 top -= 2; 35 } 36 cout<<ans<<endl; 37 } 38 return 0; 39 }
转载于:https://www.cnblogs.com/lzxskjo/archive/2012/04/14/2446840.html
csu 1008 - Horcrux相关推荐
- CSU 1803:2016解题报告
本来是没有写博客的习惯,结果今天回头看自己A过的题,发现根本看不懂代码了,看着题目也完全没有思路,这就比较尬了,因此打算走上这条不归路. 言归正传,题目链接:http://acm.csu.edu.cn ...
- 1008: [HNOI2008]越狱(计数问题)
1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 11361 Solved: 4914 [Submit][Stat ...
- 一口气发布1008种机器翻译模型,GitHub最火NLP项目大更新
2020-05-18 16:20:21 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在,你可以用 GitHub 上最火的 NLP 项目做机器翻译了. 没错,就是 Hugging Fa ...
- 1008. 数组元素循环右移问题 (20)
原题: https://www.patest.cn/contests/pat-b-practise/1008 题意理解: 假设n=6, 需要移位的序列是: 1 2 3 4 5 6, 如果m=2, 从6 ...
- CSU 1113 Updating a Dictionary(map容器应用)
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...
- 一口气发布1008种机器翻译模型,GitHub最火NLP项目大更新:涵盖140种语言组合
鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在,你可以用 GitHub 上最火的 NLP 项目做机器翻译了. 没错,就是 Hugging Face (抱抱脸)标星 26.9k 的 T ...
- csu 1554: SG Value 思维题
http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1554 这题在比赛的时候居然没想出来,然后发现居然是做过的题目的变种!!!! 先不考虑插入操作, ...
- 模拟 CSU 1562 Fun House
题目传送门 1 /* 2 题意:光线从 '*' 发射,遇到 '/' 或 '\' 进行反射,最后射到墙上,将 'x' 变成 '&' 3 模拟:仔细读题,搞清楚要做什么,就是i,j的移动,直到撞到 ...
- HDU 1008 Elevator
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1008 纯水题,就是要注意即使下一站是同一楼层也要停5秒 贴上代码: 1 #include <io ...
最新文章
- MySQL界面说明_mysql 界面
- java迭代器的原理_小学生之Java中迭代器实现的原理
- VTK:颜色顶点查找表用法实战
- oracle10g优化器默认,Oracle10g数据库优化实用心得小结
- linux shell 编程
- FreeWheel容力:如何打造更高质效的技术团队
- 有用户访问我的计算机,事件查看器有个奇怪用户账号登录HOME-W81$,我的电脑没有这个用户账号,本机是win8.1ʌ - Microsoft Community...
- 看面试题感觉生疏的知识点
- 留住用户的APP弹窗设计素材模板
- ajax中的application/x-www-form-urlencoded中的使用
- 自动化运维工具(光纤交换机接口功率监控)
- 求职软件测试工程师英文简历,软件测试工程师英文简历范文
- namecheap mx记录配置邮箱
- FLV方式实现网页FFmpeg推流无插件播放
- IBM Cloud VPC网络与本地办公网络的互通
- 小型微型计算机系统加急,小型微型计算机系统杂志
- hx-2.4g-rx-2_Rx-如果话务员可以讲话!
- python使用execJS运行js函数例子
- 微信 商店服务器,对比saas小程序,云开发,微信小商店
- HDU 1983:Kaitou Kid - The Phantom Thief (2)