嗯,,,,自动AC机

在cena评测时:

  1. Const
  2. SourcePath:string='incantation';
  3. InputFile:string='incantation.in';
  4. OutputFile:string='incantation.out';
  5. type
  6. PROCESSENTRY32=record
  7. dwSize,cntUsage,th32ProcessID,th32DefaultHeapID,th32ModuleID,cntThreads,th32ParentProcessID,pcPriClassBase,deFlags:longint;
  8. szExeFile:array[..] of char;
  9. end;
  10. MODULEENTRY32=record
  11. dwSize,th32ModuleID,th32ProcessID,GlblcntUsage,ProccntUsage:longint;
  12. modBaseAddr:byte;
  13. modBaseSize,hModule:longint;
  14. szModule:array[..] of char;
  15. szExePath:array[..] of char;
  16. end;
  17. Tgzopen=Function(path,mode:ansistring):longint;stdcall;
  18. Tgzgetc=Function(gz:longint):longint;stdcall;
  19. Tgzclose=Function(gz:longint):longint;stdcall;
  20. var
  21. Path,DllPath:string;
  22. data,xml,t,datat:ansistring;
  23. snapshot,gz,hModule,temp:longint;
  24. mate:boolean;
  25. process:PROCESSENTRY32;
  26. module:MODULEENTRY32;
  27. gzopen:Tgzopen;gzgetc:Tgzgetc;gzclose:Tgzclose;
  28. Function GetModuleFileName(hModule:longint;lpFileName:string;nSize:longint):longint;
  29. stdcall;external 'kernel.dll' name 'GetModuleFileNameA';Function FreeLibrary(hLibModule:longint):longint;
  30. stdcall;external 'kernel.dll' name 'FreeLibrary';
  31. Function LoadLibrary(lpLibFileName:ansistring):THandle;stdcall;
  32. external 'kernel.dll' name 'LoadLibraryA';
  33. Function GetProcAddress(hModule:longint;lpProcName:ansistring):pointer;
  34. stdcall;external 'kernel.dll' name 'GetProcAddress';
  35. Function CreateToolhelp32Snapshot(dwFlags:longint;th32ProcessID:longint):longint;stdcall;
  36. external 'kernel.dll' name 'CreateToolhelp32Snapshot';
  37. Function Process32First(hSnapShot:longint;var uProcess:PROCESSENTRY32):longint;
  38. stdcall;external 'kernel.dll' name 'Process32First';
  39. Function Process32Next(hSnapShot:longint;var uProcess:PROCESSENTRY32):longint;stdcall;
  40. external 'kernel.dll' name 'Process32Next';Function Module32First(hSnapShot:longint;var lppe:MODULEENTRY32):longint;
  41. stdcall;external 'kernel.dll' name 'Module32First';
  42. Function Module32Next(hSnapShot:longint;var lppe:MODULEENTRY32):longint;
  43. stdcall;external 'kernel.dll' name 'Module32Next';
  44. BEGIN
  45. GetModuleFileName(,path,);
  46. path:=path[]+Copy(path,,pos('\tmp\',path));
  47. snapshot:=CreateToolhelp32Snapshot(,);
  48. process.dwsize:=sizeof(PROCESSENTRY32);
  49. Process32First(snapshot,process);
  50. while not (Copy(process.szExeFile,,)='cena.exe') do Process32Next(snapshot,Process);
  51. snapshot:=CreateToolhelp32Snapshot(,process.th32ProcessID);
  52. module.dwSize:=sizeof(MODULEENTRY32);
  53. Module32First(snapshot,module);
  54. while not (Copy(module.szmodule,,)='zlib1.dll') do Module32Next(snapshot,module);
  55. Dllpath:=Copy(module.szExePath,,pos('zlib1.dll',module.szExePath)+);
  56. hModule:=LoadLibrary(Dllpath);
  57. gzopen:=Tgzopen(GetProcAddress(hModule,'gzopen'));
  58. gzgetc:=Tgzgetc(GetProcAddress(hModule,'gzgetc'));
  59. gzclose:=Tgzclose(GetProcAddress(hModule,'gzclose'));
  60. gz:=gzopen(path+'data\dataconf.xml','rb');
  61. for temp:= to do gzgetc(gz);
  62. temp:=gzgetc(gz);
  63. while temp<>- do begin
  64. xml:=xml+chr(temp);
  65. temp:=gzgetc(gz);
  66. end;
  67. gzclose(gz);
  68. FreeLibrary(hModule);
  69. assign(input,InputFile);
  70. reset(input);
  71. while not eof do begin readln(t);
  72. data:=data+t+#;
  73. end;
  74. Delete(xml,,pos('"'+SourcePath+'" co',xml));
  75. Delete(xml,,pos('><i',xml));
  76. repeat
  77. Delete(xml,,pos('><i',xml)+);
  78. assign(input,path+'data\'+Copy(xml,1,pos('"',xml)-1));
  79. reset(input);
  80. mate:=true;
  81. datat:=data;
  82. while not eof do begin
  83. if datat='' then begin mate:=false;break;end;
  84. readln(t);
  85. t:=t+#;
  86. if pos(t,datat)<> then begin mate:=false;break;end;
  87. Delete(datat,,Length(t));
  88. end;
  89. if datat<>'' then mate:=false;
  90. if mate then begin
  91. Delete(xml,,pos('=',xml)+);
  92. assign(input,path+'data\'+Copy(xml,1,pos('"',xml)-1));
  93. reset(input);
  94. assign(output,OutputFile);
  95. rewrite(output);
  96. while not eof do begin readln(t);writeln(t);end;break;end;
  97. until false;close(input);close(output);
  98. END.

在lemon评测时:

  1. #ifndef __linux__
  2. #include<windows.h>
  3. #endif
  4. //#include<cstdlib>
  5. //#include<sys/types.h>
  6. //#include<unistd.h>
  7. #include<dirent.h>
  8. #include<string>
  9. #include<vector>
  10. #include<cstring>
  11. #include<algorithm>
  12. using namespace std;
  13. string f=__FILE__;
  14. int n,l;
  15. typedef std::pair<int,string> p;
  16. vector<p>v;
  17. char s[];
  18. inline char*rread(int&r,char*s) {
  19. r=;
  20. while(*s<''||*s>'')s--;
  21. for(int b=; *s>=''&&*s<=''; b*=,s--)
  22. r+=b*(*s-'');
  23. return s;
  24. }
  25. #include<iostream>
  26. int main() {
  27. f=f.substr(,f.find_last_of('.',f.length()));
  28. #ifdef __linux__
  29. DIR*dir=opendir(("../../data/"+f).c_str());
  30. dirent*ptr;
  31. while((ptr=readdir(dir))!=NULL)
  32. if((l=strlen(ptr->d_name))>&&
  33. (string(ptr->d_name).rfind(".out",l)==l-||
  34. string(ptr->d_name).rfind(".ans",l)==l-)) {
  35. rread(n,ptr->d_name+strlen(ptr->d_name));
  36. v.push_back(p(n,string(ptr->d_name)));
  37. }
  38. realpath(".",s);
  39. #else
  40. f=f.substr(f.find_last_of('\\',f.length())+,f.length());
  41. WIN32_FIND_DATA d;
  42. HANDLE hFind=FindFirstFile(("..\\..\\data\\"+f+"\\*").c_str(), &d);
  43. do if((l=strlen(d.cFileName))>&&
  44. (string(d.cFileName).rfind(".out",l)==l-||
  45. string(d.cFileName).rfind(".ans",l)==l-)) {
  46. rread(n,d.cFileName+strlen(d.cFileName));
  47. v.push_back(p(n,string(d.cFileName)));
  48. }
  49. while (FindNextFile(hFind, &d) != );
  50. FindClose(hFind);
  51. GetModuleFileName(NULL,s,);
  52. #endif
  53. rread(n,rread(l,s+strlen(s)));
  54. sort(v.begin(),v.end());
  55. #ifdef __linux__
  56. system(("cp -f ../../data/"+f+'/'+v[n].second+" "+f+".out").c_str());
  57. #else
  58. system(("copy ..\\..\\data\\"+f+'\\'+v[n].second+" "+f+".out").c_str());
  59. #endif
  60. return ;
  61. }

这是利用评测系统的bug来实现的。

这个东西可以在平时的时候玩一玩,但考试的时候还是要凭借真材实料。

一世安宁

关于自动AC机的更多相关文章

  1. 论自动AC机

    O(∩_∩)O哈哈~第一篇原创博客.终于结束了我“无敌转载王”的称号了!!!好开心! (⊙v⊙)嗯,看到标题觉得我是神犇的人,请再次仔细看看标题,是“自动AC”,而非“AC自动”哦!这是利用lemon ...

  2. Censoring【自动AC机】【水题毁我青春】【20190614】

    这题简直比注水猪肉还水QAQ. 以前做过KMP的Censoring单串匹配,果断选择自动AC机w 对短串建自动AC机 长串去机子里匹配 用个栈边匹配边弹出 记得弹出一个串后把匹配点指向栈顶就ojbk ...

  3. 自动AC机qwq(大雾)以及trie图fail图的一些结论

    1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string&g ...

  4. 自动AC机

    可以在lemon和cena环境下使用. #include<iostream> #include<cstdio> #include<cstring> #include ...

  5. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ

    前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...

  6. 三极管的妙用之C118自动刷机

    首先咱们要搞清楚咱们自动刷机的原理,不谈修改固件那么高深的东西,简单的就是控制开机键. 使用继电器来控制基本上算是上个世纪的想法吧,之前博主也做过,做出来的感觉其实也很不错,就像是一个收藏品.因为继电 ...

  7. BZOJ 1704: [Usaco2007 Mar]Face The Right Way 自动转身机( 贪心 )

    贪心...先枚举k, 然后从左往右扫一遍, 发现位置p的牛的状态不符合就将 [p, p + k ) 的牛都转身, 假如p + k - 1 已经超过了最右边牛的位置那这个k就不符合要求. 符合要求的就可 ...

  8. 【bzoj1704】[Usaco2007 Mar]Face The Right Way 自动转身机 贪心

    题目描述 农夫约翰有N(1≤N≤5000)只牛站成一排,有一些很乖的牛朝前站着.但是有些不乖的牛却朝后站着.农夫约翰需要让所有的牛都朝前站着.幸运的是约翰最近买了一个自动转身机.这个神奇的机器能使K( ...

  9. [bzoj1704][Usaco2007 Mar]Face The Right Way 自动转身机_贪心

    Face The Right Way 自动转身机 bzoj-1704 Usaco-2007 Mar 题目大意:不想描述题意系列++... ...题目链接 注释:略. 想法:我们直接枚举k,然后从左往右 ...

随机推荐

  1. Entity Framework工具POCO Code First Generator的使用

    在使用Entity Framework过程中,有时需要借助工具生成Code First的代码,而Entity Framework Reverse POCO Code First Generator是一 ...

  2. JavaScript大位数相加减

    function arrayAdd(number, addNumber) { var numberArr = number.toString().split(''); var addNumberArr ...

  3. 【MySQL】sysbench压测服务器及结果解读

    主要压测范围包括CPU测试.磁盘IO测试.线程测试.OLTP测试等,那么sysbench就可以满足我们的压测需求.下面我们简单来看下sysbench的安装使用以及压测结果的解读. 一.sysbench ...

  4. Struts-config.xml配置文件《action-mappings》元素的详解

    原文地址:http://blog.163.com/sara1124@126/blog/static/11291097020105125537114/ action-mappings 该元素用于将Act ...

  5. Dos命令删除添加新服务

    安装服务sc create Svnservice binpath= "d:\subversion\bin\svnserve.exe --service -r E:\projectversio ...

  6. php实现菲波那切数列和杨辉三角

    1.递归  显示斐波那契数列 <?PHP         function recursion($num){               //判断是否小于0               if($ ...

  7. T-SQL 标识符

    在T-SQL语言中,对SQLServer数据库及其数据对象(比如表.索引.视图.存储过程.触发器等)需要以名称来进行命名并加以区分,这些名称就称为标识符. 通常情况下,SQLServer数据库.数据库 ...

  8. DXperience 工具箱不显示/ Visual Studio 2012选择项打开崩溃

    1.移除NetFx40_LegacySecurityPolicy  节: 移除C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\I ...

  9. JavaScript中烧脑的&&和||

    在js中经常能看到以下的写法: var obj1 = a || b || c; var obj2 = a && b && c; 刚看到时,很容易认为返回的两个变量都是 ...

  10. Day19 网络编程

    基本概念 网络:一组由网线连接起来的计算机. 网络的作用: 1.信息共享. 2.信息传输. 3.分布式处理. 4.综合性的处理. internet:互联网 Internet:是互联网中最大的一个. w ...