伊犁哈萨克自治州网站建设_网站建设公司_PHP_seo优化
2025/12/19 21:18:24 网站建设 项目流程

做了几道模拟题,总结一下

  • 动手之前一定要好好读题,遗漏信息大概率WA到死
  • 不要怕麻烦,码量大是模拟题的特点
  • 对算法要求一般不高
  • 细心,逻辑链要完整

luogu P1563

处理环形数组

#include<bits/stdc++.h>
using namespace std;
namespace IO{template<typename T>void read(T&x){x=0;bool f=0;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}if(f)x=-x;}void read(char&c){c=getchar();while(isspace(c))c=getchar();}void read(string&s){s.clear();char ch=getchar();while(isspace(ch))ch=getchar();while(!isspace(ch)&&ch!=EOF){s+=ch;ch=getchar();}}template<typename T,typename...Args>void read(T&first,Args&...rest){read(first);read(rest...);}template<typename T>void wr(T x){if(x==0){putchar('0');return;}if(x<0){putchar('-');x=-x;}char stk[20];int top=0;while(x){stk[++top]=x%10+'0';x/=10;}while(top){putchar(stk[top--]);}}void wr(const char c){putchar(c);}void wr(const string&s){for(char c:s)putchar(c);}void wr(const char*s){while(*s)putchar(*s++);}template<typename T>void wr(const T&x,char sep){wr(x);putchar(sep);}template<typename T,typename...Args>void wr(const T&first,const Args&...rest){wr(first);((putchar(' '),wr(rest)),...);}}using namespace IO;
typedef long long ll;
typedef pair<int,int> pii;void solve(){int n,m;read(n,m);string s;vector<int>a(n);vector<string>b(n);for(int i=0;i<n;++i)read(a[i],b[i]);int x,y,cur=0;while(m--){read(x,y);y%=n;if(a[cur]==x)cur=(cur-y+n)%n;else cur=(cur+y+n)%n;}wr(b[cur]);
}
int main(){int T=1;//read(T);while(T--){solve();}
}

luogu P1328

简单记数

void solve(){int n,na,nb;read(n,na,nb);vector<int>a(na),b(nb);for(int i=0;i<na;++i)read(a[i]);for(int i=0;i<nb;++i)read(b[i]);int A=0,B=0;int i=0,j=0;while(n--){if(a[i]==0){if(b[j]==2||b[j]==3)A++;if(b[j]==1||b[j]==4)B++;}if(a[i]==1){if(b[j]==0||b[j]==3)A++;if(b[j]==2||b[j]==4)B++;}if(a[i]==2){if(b[j]==4||b[j]==1)A++;if(b[j]==0||b[j]==3)B++;}if(a[i]==3){if(b[j]==2||b[j]==4)A++;if(b[j]==0||b[j]==1)B++;}if(a[i]==4){if(b[j]==0||b[j]==1)A++;if(b[j]==3||b[j]==2)B++;}i=(i+1)%na;j=(j+1)%nb;}wr(A,B);}

luogu P1067

处理

  • 全为0
  • 1,-1
  • 首位,末位
void solve(){int n;read(n);if(n==0){int x;read(x);wr(x);return ;}vector<int>a(n+1);bool f=0;for(int i=0;i<=n;++i){read(a[i]);if(a[i])f=1;}if(f==0||n==0){wr(0);return ;}if(a[0]==-1)wr("-x^"),wr(n);else if(a[0]==1)wr("x^"),wr(n);else if(a[0]>1)wr(a[0]),wr("x^"),wr(n);else if(a[0]<-1)wr(a[0]),wr("x^"),wr(n);for(int i=1;i<n-1;i++){if(a[i]==-1)wr("-x^"),wr(n-i);else if(a[i]==1)wr("+x^"),wr(n-i);else if(a[i]>1)wr('+'),wr(a[i]),wr("x^"),wr(n-i);else if(a[i]<-1)wr(a[i]),wr("x^"),wr(n-i);}if(a[n-1]==-1)wr("-x");else if(a[n-1]==1)wr("+x");else if(a[n-1]>1)wr('+'),wr(a[n-1]),wr("x");else if(a[n-1]<-1)wr(a[n-1]),wr("x");if(a[n]>0)wr('+'),wr(a[n]);if(a[n]<0)wr(a[n]);
}

luogu P4924

矩阵翻转

void solve(){int n,m;read(n,m);int t=1;vector<vector<int>>M(n+1,vector<int>(n+1));for(int i=1;i<=n;++i){for(int j=1;j<=n;++j){M[i][j]=t++;}}int x,y,r,z;while(m--){read(x,y,r,z);if(z){for(int k=x-r;k<=x+r;k++){int i=y-r,j=y+r;while(i<j){swap(M[k][i],M[k][j]);i++,j--;}}for(int i=x-r;i<=x+r;++i){for(int j=y-r;j<=y+r;j++){if(i-x<j-y)swap(M[i][j],M[x+j-y][y+i-x]);}}}else{for(int i=x-r;i<=x+r;++i){for(int j=y-r;j<=y+r;j++){if(i-x<j-y)swap(M[i][j],M[x+j-y][y+i-x]);}}for(int k=x-r;k<=x+r;k++){int i=y-r,j=y+r;while(i<j){swap(M[k][i],M[k][j]);i++,j--;}}}}for(int i=1;i<=n;++i){for(int j=1;j<=n;++j){wr(M[i][j],' ');}wr('\n');}
}

luogu P1098

没考虑数字和字母搭配,还有数字不需要转大写

void solve(){int p1,p2,p3;read(p1,p2,p3);string s;read(s);int ls=s.length();string ans="";for(int i=0;i<ls;i++){if(s[i]!='-'||i==0||i==ls-1){ans+=s[i];continue;}char l=s[i-1],r=s[i+1];if(((isdigit(l)&&isdigit(r))||(islower(r)&&islower(l)))&&r>l){if(r==l+1)continue;string t="";if(p1==1){for(char j=l+1;j<r;j++)for(int k=0;k<p2;k++)t+=j;}else if(p1==2){for(char j=l+1;j<r;j++){char ch=j;if(islower(j))ch=j-'a'+'A';for(int k=0;k<p2;k++){t+=ch;}}}else{int cnt=p2*(r-l-1);for(int k=0;k<cnt;k++)t+='*';}if(p3==2)reverse(t.begin(),t.end());ans+=t;}else ans+='-';   }wr(ans);
}

luogu P1786

哈希,排序技巧

void solve(){int n;read(n);st A;vector<st>ALL,FBZ,a;for(int i=0;i<n;i++){read(A.name,A.duty,A.w,A.age);A.id=i;if(A.duty=="BangZhu")ALL.push_back(A);else if(A.duty=="FuBangZhu")FBZ.push_back(A);else a.push_back(A);}for(int i=0;i<(int)a.size();i++){for(int j=i;j>0;--j){if(a[j-1].w<a[j].w)swap(a[j],a[j-1]);else break;}}for(int i=0;i<(int)a.size();++i){if(i<2)a[i].duty="HuFa";else if(i<6)a[i].duty="ZhangLao";else if(i<13)a[i].duty="TangZhu";else if(i<38)a[i].duty="JingYing";else a[i].duty="BangZhong";}for(int i=0;i<(int)FBZ.size();++i){for(int j=i;j>0;--j){if(FBZ[j-1].age<FBZ[j].age)swap(FBZ[j],FBZ[j-1]);else break;}}for(auto x:FBZ)ALL.push_back(x);for(auto x:a)ALL.push_back(x);unordered_map<string,int>rank={{"BangZhu", 7}, {"FuBangZhu", 6}, {"HuFa", 5},{"ZhangLao", 4}, {"TangZhu", 3}, {"JingYing", 2}, {"BangZhong", 1}};sort(ALL.begin(),ALL.end(),[&](st a,st b){if(rank[a.duty]!=rank[b.duty])return rank[a.duty]>rank[b.duty];if(a.age!=b.age)return a.age>b.age;return a.id<b.id;});for(auto x:ALL)wr(x.name,x.duty,x.age,'\n');
}

luogu P1518

  • 哈希判断死循环
  • 扩图,简化判断
vector<vector<char>>M(12,vector<char>(12,'*'));struct p{
int x,y,d;
}f,c;
void move(p& cur){int x=cur.x,y=cur.y;if(cur.d==0){if(M[x-1][y]=='*')cur.d=1;else cur.x--;}else if(cur.d==1){if(M[x][y+1]=='*')cur.d=2;else cur.y++;}else if(cur.d==2){if(M[x+1][y]=='*')cur.d=3;else cur.x++;}else{if(M[x][y-1]=='*')cur.d=0;else cur.y--;}
}
int h(p f,p c){return f.x+f.y*10+f.d*10000+c.x*100+c.y*1000+c.d*40000;
}
bool nomeet(p f,p c){if(f.x==c.x&&f.y==c.y)return 0;return 1;
}
void solve(){for(int i=1;i<=10;i++){for(int j=1;j<=10;j++){read(M[i][j]);if(M[i][j]=='F')f.x=i,f.y=j;if(M[i][j]=='C')c.x=i,c.y=j;}}f.d=0;c.d=0;int t=0;bitset<2000000>vis;while(nomeet(f,c)){t++;if(vis[h(f,c)]){wr(0);return;}vis[h(f,c)]=1;move(f);move(c);}wr(t);
}

luogu P1065

题目好长,需要一点耐心

void solve(){int m,n;read(m,n);vector<int>o(m*n);for(int i=0;i<n*m;++i)read(o[i]);vector<vector<int>>nm(n+1,vector<int>(m+1));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)read(nm[i][j]);vector<vector<int>>nt(n+1,vector<int>(m+1));for(int i=1;i<=n;i++)for(int j=1;j<=m;++j)read(nt[i][j]);vector<bitset<100000000>>mt(m+1);vector<int>nstep(n+1,1);vector<int>npre(n+1);int ans=0;for(int x:o){int step=nstep[x]++;int mar=nm[x][step];int cost=nt[x][step];int i=npre[x];while(1){while(mt[mar][i])i++;bool ok=1;for(int j=0;j<cost;++j){if(mt[mar][i+j]){ok=0;i+=j+1;break;}}if(ok){for(int j=0;j<cost;j++){mt[mar][i+j]=1;}npre[x]=i+cost;ans=max(ans,npre[x]);break;}   }}wr(ans);
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询