1. 首页
  2. 评测记录
  1. 登录
  2. 注册
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文

FanBotao

UID: 451, 注册于 2024-12-19 19:50:03, 最后登录于 2025-12-11 18:43:37, 目前离线.

解决了 85 道题目,RP: 220.14 (No. 47)

♂
  • 个人简介

    UID:334623940

    8(56)级萌新求带

    可叹,落叶飘零~

    P1758调代码太痛苦了啊(注释密密麻麻,绿绿的一坨又一坨)

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
    	string sign,change;
    	int l;
    };
    int n,sine,k,flag,cnt[150];
    string st;
    vector<node> define;
    bool check(int i,int x){//cout<<i<<' '<<x<<endl;
    	if(i>=x||i<0)
    		return 0;
    	if(st[i]<='Z'&&st[i]>='A'||st[i]<='z'&&st[i]>='a'||st[i]>='0'&&st[i]<='9'){
    		return 1;
    	}
    	return 0;
    }
    int main(){
    //	freopen("7.in","r",stdin);
    //	freopen("test.out","w",stdout);
    	cin>>n;
    	getline(cin,st);
    	for(int _=1;_<=n;_++){
    		if(flag){
    			sine--;
    			flag=0;
    		}//cout<<sine;
    		getline(cin,st);
    		int x=st.size();
    		if(st.substr(0,7)=="#define"){
    			cout<<endl;
    			int i=9;
    			while(st[i++]!=' '){
    			}
    			define.push_back({st.substr(8,i-9),st.substr(i,x-i),i-9});
    			sine++;//cout<<"sine"<<sine<<endl;
    			continue;
    		}
    		if(st.substr(0,6)=="#undef"){
    			//k++;
    			cout<<endl;
    			int ii=8;
    			while(st[ii++]!=' '){
    			}
    			int sine=define.size();
    			for(int i=0;i<sine;i++){//cout<<st.substr(7,ii-8)<<' '<<define[i].sign<<endl;
    				if(define[i].sign==st.substr(7,ii-8)){//cout<<111<<endl;
    					for(int j=i;j<sine-1;j++){
    						define[j]=define[j+1];
    					}
    					break;
    				}
    				
    			}define.pop_back();//cout<<"sine"<<sine<<endl;
    			flag=1;//cout<<"sine"<<sine<<endl;
    			continue;
    		}
    		memset(cnt,0,sizeof(cnt));
    		for(int i=0;i<x;i++){//cout<<"x"<<x<<endl;
    			for(int j=0;j<sine;j++){//cout<<define[j].sign<<' '<<define[j].change<<' '<<define[j].l<<endl;
    				if(i+define[j].l<=x&&i>=cnt[j]){//cout<<"check"<<' '<<i<<' '<<define[j].l<<' '<<x<<' '<<cnt[j]<<' '<<st.substr(i,define[j].l)<<' '<<define[j].sign<<' '<<check(i-1,x)<<' '<<check(i+define[j].l,x)<<endl;
    					if(st.substr(i,define[j].l)==define[j].sign&&!check(i-1,x)&&!check(i+define[j].l,x)){//cout<<i<<' '<<j<<' '<<define[j].change<<endl;
    						int x2=x-i-define[j].l+1;
    						int changex=x;
    						st=st.substr(0,i)+define[j].change+st.substr(i+define[j].l,x-i-define[j].l+1);
    						x=st.size();
    						changex=x-changex;
    						for(int kkk=0;kkk<sine;kkk++){
    							if(cnt[kkk]>i)
    								cnt[kkk]+=changex;
    						}
    						i--;
    						cnt[j]=x-x2+1;//cout<<st<<' '<<x<<' '<<cnt[0]<<' '<<cnt[1]<<' '<<cnt[2]<<endl;
    						break;
    					}
    				}
    			}
    		}
    		cout<<st<<endl;
    	}
    	//sine-=k;
    //	if(flag)
    //		sine--;
    //	cout<<sine<<endl;
    //	for(int i=0;i<sine;i++){
    //		cout<<define[i].sign<<' '<<i<<endl;
    //	}
    }
    /*
    4
    #define shanxinhan sb
    #undef shanxinhan sb
    #define int long long
    #undef int long long
    */
    

    好在AC100(没用map?!)

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
    	string sign,change;
    	int l;
    };
    int n,sine,k,flag,cnt[150];
    string st;
    vector<node> defin1;
    bool check(int i,int x){//cout<<i<<' '<<x<<endl;
    	if(i>=x||i<0)
    		return 0;
    	if(st[i]<='Z'&&st[i]>='A'||st[i]<='z'&&st[i]>='a'||st[i]>='0'&&st[i]<='9'){
    		return 1;
    	}
    	return 0;
    }
    int main(){
    	cin>>n;
    	getline(cin,st);
    	for(int _=1;_<=n;_++){
    		if(flag){
    			sine--;
    			flag=0;
    		}
    		getline(cin,st);
    		int x=st.size();
    		if(st.substr(0,7)=="#define"){
    			cout<<endl;
    			int i=9;
    			while(st[i++]!=' '){
    			}
    			defin1.push_back({st.substr(8,i-9),st.substr(i,x-i),i-9});
    			sine++;
    			continue;
    		}
    		if(st.substr(0,6)=="#undef"){
    			cout<<endl;
    			int ii=8;
    			int sine=defin1.size();
    			for(int i=0;i<sine;i++){
    				if(defin1[i].sign==st.substr(7,x-7)){
    					for(int j=i;j<sine-1;j++){
    						defin1[j]=defin1[j+1];
    					}
    					break;
    				}
    				
    			}defin1.pop_back();
    			flag=1;
    			continue;
    		}
    		memset(cnt,0,sizeof(cnt));
    		for(int i=0;i<x;i++){
    			for(int j=0;j<sine;j++){
    				if(i+defin1[j].l<=x&&i>=cnt[j]){
    					if(st.substr(i,defin1[j].l)==defin1[j].sign&&!check(i-1,x)&&!check(i+defin1[j].l,x)){
    						int x2=x-i-defin1[j].l+1;
    						int changex=x;
    						st=st.substr(0,i)+defin1[j].change+st.substr(i+defin1[j].l,x-i-defin1[j].l+1);
    						x=st.size();
    						changex=x-changex;
    						for(int kkk=0;kkk<sine;kkk++){
    							if(cnt[kkk]>i)
    								cnt[kkk]+=changex;
    						}
    						i--;
    						cnt[j]=x-x2+1;
    						break;
    					}
    				}
    			}
    		}
    		cout<<st<<endl;
    	}
    }
    
  • 最近活动

    • 2025.12.11 字典树 IOI
    • 2025.12.4 字符串哈希、哈希表、树哈希 IOI
    • NOIP模拟赛(四) IOI
    • NOIP模拟赛(三) OI
    • NOIP模拟赛(一) OI
    • (初三)排序 作业
    • NOIP模拟赛(二) OI
    • CSP-S模拟赛(十一) OI
    • CSP-S模拟赛(十) OI
    • CSP-S模拟赛(八) OI
    • CSP-S模拟赛(九) OI
    • CSP-S模拟赛(七) OI
    • 【信奥】NOIP/CSP历年真题 作业
    • CSP-S模拟赛(四) OI
    • CSP-S模拟赛(三) OI
    • CSP-S模拟赛(二) OI
    • CSP-S模拟赛(一) OI
    • Day 14 综合练习+课后作业 OI
    • Day 12 字符串(KMP、Trie树、哈希字符串) OI
    • Day 11 数据结构(树状数组、线段树、笛卡尔树) OI
    • Day 10 数据结构(单调栈、单调队列、优先队列、双端队列) OI
    • Day 9 图论——欧拉图、二分图、割点割边、树剖求LCA OI
    • Day 13 模拟测试 OI
    • Day 8 图论——LCA、树的直径与重心 OI
    • Day 3 数学 OI
    • Day 7 图论——并查集、最(K)短路、最(次)小生成树、拓扑排序 OI
    • Day 6 动态规划(树形DP、状压DP、数位DP) OI
    • Day 5 动态规划(线性DP、背包问题、区间DP、多维DP) OI
    • Day 4 搜索算法(剪枝、双向BFS、记忆化搜索、折半搜索、启发式搜索、迭代加深搜索) OI
    • Day 2 基础算法技巧(前缀和、差分、离散化、倍增与ST表) OI
    • Day 1 常用STL及其它 OI
    • 【信奥】2025.4.2测试 作业
    • 【信奥】6.线段树 作业
    • 【信奥】5.树状数组 作业
    • 【信奥】3. 倍增、ST表、RMQ 作业
    • 【信奥】1. 前缀和、差分、离散化 作业
134
已递交
85
已通过
0
题解被赞

状态

  • 评测队列
  • 服务状态

开发

  • 开源
  • API

支持

  • 帮助
  • QQ 群
  1. 关于
  2. 联系我们
  3. 隐私
  4. 服务条款
  5. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  6. Theme
    1. Worker 0 in 45ms
    2. Powered by Hydro v4.19.1 Community, Modified by 王丰
    3. 浙ICP备15020708号-3

    还没有账户?

    注册一个 火星信奥 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。

    现在注册
    关闭

    登录

    使用您的 火星信奥 通用账户

    忘记密码或者用户名?