1. Home
  2. Record
  1. Login
  2. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文

C20250465

UID: 28, Registered at 2022-9-6 10:54:06, last login at 2025-5-16 14:45:25, last active at 2025-5-28 21:23:10.

Solved 265 problems, RP: 250.43 (No. 14)

♂
  • Bio

    $$\Huge{\cnums \reals \text{\AA} \Z \gamma \omicron\mu\tau\hbar} $$ %

    打字速度测试:

    #include <bits/stdc++.h>
    #include <windows.h>
    #include <conio.h>
    #include <pthread.h>
    using namespace std;
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    const int WORDNUM = 8869;
    string choose="abcdefghijklmnopqrstuvwxyz _+=!#%^&*()'\":;/?,.<>1234567890\n\\ABCDEFGHIJKLMNOPQRSTUVWXYZ~";
    string library[100]={"#include <iostream>\nusing namespace std;\nint main()\n{\n    int a,b;\n    cin>>a>>b;\n    cout<<a+b;\n    return 0;\n}\n"};
    string name_of_library[100]={"1. A+B Problem\n"};
    const int LIBRARY_NUM=1;
    int ed=0,correct,mode_let;
    double now_time;
    string mode,type_s,emp;
    void* input_output(void*);
    void start();
    void type();
    void say(string s)
    {
    	int len=s.size();
    	for(int i=0;i<len;i++)
    	{
    		cout<<s[i];
    		Sleep(5);
    	} 
    }
    void ctn()
    {
    	say("请按任意键继续...\n");
    	_getch();
    }
    void help()
    {
    	system("cls");
    	say("基本规则:打出屏幕上显示的字符串,自动判对错,实时显示正确率与速度\n");
    	say("关于新建文本:输入文本,然后开始练习\n");
    	say("输入文本请以Ctrl+Z结束,换行并不会识别为结束\n");
    	say("忠告:有任何打字错误都会阻止你完成练习\n");
    	say("忠告:暂不支持中文\n");
    	say("tips: 按Esc退出当前程序,主页除外\n");
    	ctn();
    	start();
    }
    void print(string s)
    {
    	for(int i=0;i<s.size();i++)
    	{
    		if(s[i]!=13) cout<<s[i];
    		else cout<<endl;
    	}
    }
    string read_clipboard(string s)
    {
    	HWND hWnd = NULL;
    	OpenClipboard(hWnd);
    	if ( IsClipboardFormatAvailable(CF_TEXT) )
    	{
    		HANDLE h = GetClipboardData(CF_TEXT);
    		s+=(char*)GlobalLock(h);
    		GlobalUnlock(h);
    	}
    	CloseClipboard();
    	return s;
    }
    void create()
    {
    	char c;
    	mode=emp;
    	while(c!=26)
    	{
    		system("cls");
    		cout<<"输入你的文本:\n";
    		print(mode);
    		c=_getch();
    		if(c==22)
    		{
    			mode=read_clipboard(mode);
    		}
    		else if(c>=32||c==13&&c<128)
    		mode+=c;
    		else if(c==8)
    		{
    			if(mode.size()) mode.erase(mode.size()-1,1);
    		}
    		else if(c==9)
    		{
    			mode+="    ";
    		}
    		else if(c==27) start();
    	}
    	type();
    }
    void* count(void* args)
    {
    	now_time=0;
    	while(!ed)
    	{
    		Sleep(100);
    		now_time+=0.1;
    	}
    }
    void type()
    {
    	ed=0;
    	pthread_t count_id,start_id;
    	pthread_create(&count_id,NULL,count,NULL);
    	pthread_create(&start_id,NULL,input_output,NULL);
    	pthread_exit(NULL);
    }
    void print_check(string s)
    {
    	for(int i=0;i<s.size();i++)
    	{
    		if(!(s[i]==mode[i]||(s[i]==13&&mode[i]==10)))
    		{
    			SetConsoleTextAttribute(handle,12);
    			correct=0;
    		}
    		else SetConsoleTextAttribute(handle,15);
    		if(s[i]==13) cout<<endl;
    		else cout<<s[i];
    	}
    	if(correct==-1) correct=1;
    }
    void print_mode(string s)
    {
    	for(int i=0;i<s.size();i++)
    	{
    		if(i==mode_let) SetConsoleTextAttribute(handle,160);
    		else SetConsoleTextAttribute(handle,15);
    		if(s[i]==13) cout<<endl;
    		else cout<<s[i];
    	}
    }
    int check_correct(string s)
    {
    	for(int i=0;i<s.size();i++) if(!(s[i]==mode[i]||(s[i]==13&&mode[i]==10))) return 0;
    	return 1;
    }
    int same(string a,string b)
    {
    	if(a.size()!=b.size()) return 0;
    	for(int i=0;i<a.size();i++) if(!(a[i]==b[i]||(a[i]==10&&b[i]==13))) return 0;
    	return 1;
    }
    void* input_output(void *args)
    {
    	int p=0;
    	mode_let=0;
    	system("cls");
    	type_s=emp;
    	correct=0;
    	while(!same(mode,type_s))
    	{
    		system("cls");
    		print_mode(mode);
    		cout<<endl<<endl;
    		correct=-1;
    		print_check(type_s);
    		cout<<endl;
    		SetConsoleTextAttribute(handle,15);
    		if(now_time>0)
    		printf("当前打字速度:%lf字/min",type_s.size()/now_time*60);
    		else printf("当前打字速度:%lf字/min",type_s.size()*60);
    		if(correct) cout<<"无";
    		else cout<<"有";
    		cout<<"打字错误";
    		int c=_getch();
    		if(c!=8&&(c>=32||c==13)&&c<128&&c!=27)
    		{
    			type_s+=c;
    			if(check_correct(type_s)) mode_let++;
    		}
    		else if(c==8)
    		{
    			if(check_correct(type_s)) mode_let--;
    			type_s.erase(type_s.size()-1,1);
    		}
    		else if(c==9)
    		{
    			c=' ';
    			type_s+=c;
    			if(c==mode[mode_let]) mode_let++;
    			type_s+=c;
    			if(c==mode[mode_let]) mode_let++;
    			type_s+=c;
    			if(c==mode[mode_let]) mode_let++;
    			type_s+=c;
    			if(c==mode[mode_let]) mode_let++;
    		}
    		else if(c==27) start();
    	}
    	ed=1;
    	system("cls");
    	say("恭喜你完成测试,你的平均打字速度为");
    	if(now_time>0)
    	printf("%lf字/min",type_s.size()/now_time*60);
    	else printf("%lf字/min",type_s.size()*60);
    	cout<<endl;
    	ctn();
    	start();
    }
    void rand_type()
    {
    	mode=emp;
    	int r=rand()%choose.size();
    	int rr=rand()%200+1;
    	for(int i=1;i<=rr;i++)
    	{
    		mode+=choose[r];
    		r=rand()%choose.size();
    	}
    	type();
    }
    void use_library()
    {
    	void *args;
    	system("cls");
    	say("请选择一个库文本:\n");
    	for(int i=1;i<=LIBRARY_NUM;i++) say(name_of_library[i-1]);
    	char c;
    	while((c<'1'&&c!=27)||c-'0'>LIBRARY_NUM) c=_getch();
    	if(c!=27)
    	mode=library[c-'0'-1],type();
    	else start();
    }
    void start()
    {
    	system("cls");
    	SetConsoleTextAttribute(handle,15);
    	say("打字速度测试\n");
    	say("Made by: Crazyouth\n");
    	say("1.新建打字文本\n");
    	say("2.使用随机文本\n");
    	say("3.使用库存文本\n");
    	say("4.如何使用?\n");
    	char c='0';
    	while(c<'1'||c>'4') c=_getch();
    	if(c=='1') create();
    	else if(c=='2') rand_type();
    	else if(c=='3') use_library();
    	else if(c=='4') help();
    }
    int main()
    {
    	//SetConsoleTextAttribute(handle,12);//红字 
    	//SetConsoleTextAttribute(handle,15);//白字 
    	srand(time(0));
    	start();
    }
    
  • Recent Activities

    • 20250317 领军班比赛1 IOI
    • 省选训练1 IOI
    • 高一期末考 IOI
    • 20241203集训 IOI(Strict)
    • 20241126集训 IOI
    • 1125集训 IOI
    • 20241119集训 IOI(Strict)
    • NOIP 模拟赛(十一) OI
    • 20241112集训 IOI(Strict)
    • 20241029集训 IOI(Strict)
    • CSP难度的题目 IOI
    • 初中练习 IOI
    • NOIP模拟赛 OI
    • CSP-S 2024 信心赛 IOI(Strict)
    • NOIP模拟赛 OI
    • Soft-O(1) 类数据结构的应用(入门) IOI
    • NOI真题(~2000) Assignment
    • 10.6 提高组模拟赛 OI
    • 10.4 提高组模拟赛 OI
    • 国庆提高组30题(1~3号) IOI
    • 10.8 提高组后两题训练 OI
    • 10.5 练习 IOI
    • 10.7 国庆普及组训练 IOI
    • 保送生第15周 杂题选讲 Assignment
    • 保送生第14周 反演 Assignment
    • 保送生第13周 二次离线莫队 Assignment
    • 保送生第12周 FFT 多项式 Assignment
    • 保送生第11周 期望与min max容斥 Assignment
    • 保送生第10周 莫比乌斯反演 积性函数前缀和 Assignment
    • ad-hoc 选讲——liangzexian1 ACM/ICPC
    • 20240924集训 IOI(Strict)
    • 保送生第九周 Kruskal重构树 Assignment
    • 保送生第八周 NOI2020题目 Assignment
    • 保送生第七周 启发式合并 Assignment
    • 保送生第六周 wqs二分 Assignment
    • 20240910集训 IOI(Strict)
    • 保送生第四周 点分治 Assignment
    • 保送生第三周 CDQ分治 Assignment
    • 保送生第二周 高维前缀和 FWT Assignment
    • 保送生第一周 矩阵快速幂 Assignment
    • 训练 IOI
    • NOIP 模拟赛(八)system test OI
    • NOIP 模拟赛(八)pretest IOI
    • NOIP 训练赛(七)HARD OI
    • NOIP 训练赛 (IOI赛制) IOI
    • NOIP 2024 模拟赛(五)hard OI
    • [订正] 多校2024第5场 Assignment
    • NOIP2024 模拟赛(四)hard OI
    • NOIP 2024 模拟赛(三) OI
    • NOIP2024 模拟赛(二) OI
    • NOIP2024 模拟赛(一) OI
    • [订正]多校2024第3场 第4场 Assignment
    • [订正]多校2024第1场 第2场 Assignment
    • 暑期康复训练一 IOI
    • 暑假集训第二阶段 ACM/ICPC
    • 暑期康复训练二 IOI
    • 暑假集训第一阶段 IOI
    • 2023-2024第二学期初二信息竞赛组期末考 IOI
    • 2023-2024下信息提高组选修课期末考 IOI
    • 20240611集训 IOI
    • 20240604集训 IOI
    • 20240528集训 IOI
    • 2024水题过家家 IOI
    • 2023-2023下学期初二竞赛组期中考 OI
    • 20240507集训_ IOI
    • 20240409集训 IOI
    • 20240319集训 IOI
    • 20240312集训 IOI
    • 20240305集训 IOI
    • 20240121CFdiv3.1881 ACM/ICPC
    • 20240120字符串专题模板 IOI
    • 20240119反悔贪心选讲 IOI
    • 20240118期望的线性选讲 ACM/ICPC
    • 20240116杂题选讲 IOI
    • 寒假集训1 Assignment
    • 20240102集训 IOI
    • 2023上学期初二竞赛组期末考 OI
    • 2023-2024第一学期选修课期末考 OI
    • 20231212集训 IOI
    • 初二竞赛组作业——主席树 Assignment
    • 20231114集训 OI
    • 初二竞赛组作业——线段树合并 Assignment
    • 20231107集训 OI
    • 动态规划选讲(一) IOI
    • 2023上学期初二竞赛组期中考 OI
    • 信心赛 IOI
    • 赛前十题 IOI
    • CSP模拟 IOI
    • 20231018比赛 OI
    • 20231017集训 OI
    • CSP-J 前两题真题汇总 Ledo
    • 20231010集训 OI
    • 虚假的比赛 IOI
    • 国庆集训S组模拟赛2 OI
    • 国庆集训S组模拟赛1 OI
    • 国庆集训模拟赛(普及) OI
    • HFI 图灵社 国庆欢乐赛 div1 OI
    • 初二信息竞赛组——斜率优化 Assignment
    • 9月19日周二晚上集训赛 IOI
    • 初二竞赛组作业——DP复习 Assignment
    • S组初赛模拟题 OI
    • 9月8日居家练习 IOI
    • 提高A组-题目分享 Assignment
    • 单调队列优化DP Assignment
    • 信息选修课(普及/提高)期末考 IOI
    • 平衡树 Assignment
    • 水题过家家 IOI
    • 状压DP堂练 Assignment
    • 20230511练习 Assignment
    • DP堂练20230424 Assignment
    • 初一竞赛组DP堂上复习题 Assignment
    • 初一竞赛组状压DP堂上练习 Assignment
    • 初一竞赛组排序+DP堂上练习 Assignment
    • 初一竞赛组换根DP堂上练习 Assignment
    • 初中信息竞赛组AC自动机 Assignment
    • 初中竞赛组树形DP1 Assignment
    • 信息选修课第二周练习 Assignment
    • 编程题可看成绩 IOI
    • 22年秋季 初一竞赛组期末考 OI
    • 22年秋季 初一上期末考 OI
    • 初一竞赛组数位DP Assignment
    • NOIP模拟赛1 OI
    • 初一竞赛组区间DP Assignment
    • 初中选修课期中考 IOI
    • 上学期竞赛组期中考试(初一) IOI
    • 初一上学期期中考试机试(1班2班) IOI
    • 初一上学期期中考试笔试(1班2班) OI
    • 初一竞赛班背包DP作业 Assignment
    • 初一竞赛班动态规划作业2 Assignment
    • 周四提高比赛3 IOI
    • 初一3班9月26日课堂作业 Assignment
    • 初一竞赛班作业 Assignment
335
Submitted
265
Accepted
0
Solutions Liked

Status

  • Judging Queue
  • Service Status

Development

  • Open Source
  • API

Support

  • Help
  • QQ Group
  1. About
  2. Contact Us
  3. Privacy
  4. Terms of Service
  5. Copyright Complaint
  6. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  7. Legacy mode
  8. Theme
    1. Light
    2. Dark
  1. 粤ICP备2021104657号
  2. Worker 0, 26ms
  3. Powered by Hydro v4.14.1 Community

Don't have an account?

By signing up a HFOJ universal account, you can submit code and join discussions in all online judging services provided by us.

CLOSE

SIGN IN

Using your HFOJ universal account

Forgot password or username?