HDU 4594 Script Z
来源:互联网 发布:婵真淘宝 编辑:程序博客网 时间:2024/05/16 07:18
一道恶心的模拟,写了一整晚上也不知道哪里错,借助大神的代码AC了
这是Hint :The problem itself is easy of course. But some of the test cases of this problem are strange and annoying. Be careful!
#include<stdio.h>#include<iostream>#include<math.h>#include<string.h>#include<iomanip>#include<stdlib.h>#include<ctype.h>#include<algorithm>#include<deque>#include<functional>#include<iterator>#include<vector>#include<list>#include<map>#include<queue>#include<set>#include<stack>#include<sstream>#define CPY(A, B) memcpy(A, B, sizeof(A))typedef long long LL;typedef unsigned long long uLL;const int MOD = 1e9 + 7;const int INF = 0x3f3f3f3f;const LL INFF = 0x3f3f3f3f3f3f3f3fLL;const double EPS = 1e-9;const double OO = 1e20;const double PI = acos (-1.0);int dx[]= {0,1,1,1,0,-1,-1,-1};int dy[]= {1,1,0,-1,-1,-1,0,1};int gcd (const LL &a, const LL &b) {return b==0?a:gcd (b,a%b);}LL LLpow (LL a, LL b) { if (b==0) {return 1;} LL t=LLpow (a,b/2); if (b%2) {return t*t*a;} return t*t;}using namespace std;int T,t,n,m;map<string,string> match[4];char str[1010],str2[1010],s1[1010],s2[1010];int type1,type2,Err,Over;bool Has_Equal() { int i,len=strlen (str); bool flag=0,flag2=0; for (i=0; i<len; i++) { if (str[i]==34) {flag2=1;} if (str[i]=='=' && flag2==0) { flag=true; str[i]=' '; } if (str[i]==9) {str[i]=32;} } return flag;}bool kong() { int i,len=strlen (str); for (i=0; i<len; i++) if (! (str[i]==' ' || str[i]==9) ) { return false; } return true;}void solve() { int i,len=strlen (str); m=0; for (i=0; i<len; i++) if (str[i]==34) {break;} m=i; for (i=m; i<len; i++) if (! (str[i]==' ' || str[i]==9) ) {str[m++]=str[i];} str[m]='\0';}int main() { string string1,string2; scanf ("%d",&T); for (t=1; t<=T; t++) { if (t!=1) {puts ("");} scanf ("%d",&n); getchar(); for (int i=0; i<=3; i++) { match[i].clear(); } Err=1; Over=0;/**Init*/ while (n--) { gets (str); solve(); if (Over==1) {continue;} if (kong() ) {continue;} if (Has_Equal() ) { sscanf (str,"%s %s",s1,s2); if (s1[0]=='$') {type1=0;} else {type1=1;} if (s2[0]!=34) {type2=0;} else {type2=1;} if (type1==0) { match[0].erase (s1); match[1].erase (s1); match[type2][s1]=s2; } else { if (match[2].find (s1) ==match[2].end() && match[3].find (s1) ==match[3].end() ) { match[2+type2][s1]=s2; } else if (Err==1) { printf ("WARNING: Constant %s Already Defined!\n",s1); } } } else { sscanf (str,"%s %s",s1,s2); if (s1[0]=='P' && s1[1]=='a') { //Panic printf ("Script was KILLED.\n"); Over=1; } else if (s1[0]=='E' && s2[1]=='N') { //Errmsg ON Err=1; } else if (s1[0]=='E' && s2[1]=='F') { //Errmsg OFF Err=0; } else if (s1[0]=='P') { //Print if (s2[0]=='$') { if (match[0].find (s2) !=match[0].end() ) { string1=match[0][s2]; cout<<string1<<endl; } else if (match[1].find (s2) !=match[1].end() ) { string1=match[1][s2]; string2=string1.substr (1,string1.length()-2); cout<<string2<<endl; } else { printf ("NULL\n"); if (Err==1) { printf ("NOTICE: Undefined Variable %s.\n",s2); } } } else { if (match[2].find (s2) !=match[2].end() ) { string1=match[2][s2]; cout<<string1<<endl; } else if (match[3].find (s2) !=match[3].end() ) { string1=match[3][s2]; string2=string1.substr (1,string1.length()-2); cout<<string2<<endl; } else { printf ("%s\n",s2); if (Err==1) { printf ("NOTICE: Undefined Constant %s.\n",s2); } } } } else if (s1[0]=='D') { //Dump if (s2[0]=='$') { if (match[0].find (s2) !=match[0].end() ) { string1=match[0][s2]; printf ("integer: "); cout<<string1<<endl; } else if (match[1].find (s2) !=match[1].end() ) { string1=match[1][s2]; printf ("string: "); cout<<string1<<endl; } else { printf ("NULL\n"); if (Err==1) { printf ("NOTICE: Undefined Variable %s.\n",s2); } } } else { if (match[2].find (s2) !=match[2].end() ) { string1=match[2][s2]; printf ("integer: "); cout<<string1<<endl; } else if (match[3].find (s2) !=match[3].end() ) { string1=match[3][s2]; printf ("string: "); cout<<string1<<endl; } else { printf ("string: %c%s%c\n",34,s2,34); if (Err==1) { printf ("NOTICE: Undefined Constant %s.\n",s2); } } } } } } } return 0;}
0 0
- HDU 4594 Script Z
- Script Z - HDU 4594 大模拟
- HDU 4147 KFC -Z+W
- HDU 4147KFC -Z+W
- hdu 5015(矩阵快速幂z )
- script
- script
- script
- script
- script
- script
- script
- <script>
- script
- script
- script
- script
- script
- Android之export,process
- 枚举的总结和常用方法
- NOI 2016 游记
- Hust oj 1341 Who will be punished(字符串异或)
- 将整型数组A中的内容和整型数组B中的内容进行交换。(数组一样大)
- HDU 4594 Script Z
- 成龙电影全集
- poj 2524
- Eclipse下Target识别不出来引起的DDMS中Emulator Control显示灰色(Android SDK和ADT版本不兼容问题导致的)
- CSS盒子模型的更深层次理解
- 原始设备制造商OEM简介
- 欧几里得与扩展欧几里得介绍->POJ1061
- 并行计算 & HPC & MPI
- 求三个数中的最大数