-
个人简介
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. 前缀和、差分、离散化 作业