HAPPY2020暑假训练前复习
生活随笔
收集整理的這篇文章主要介紹了
HAPPY2020暑假训练前复习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
A.計蒜客 - T1381
輸出hello world
萬惡之源
B.51Nod - 2060
全排列輸出
不要用STL的next_permutation,會超時
C HDU - 1715
求斐波那契數列(不過比較大到1000)
用數組來存每一位,模擬進制運算
D POJ - 2251
三維迷宮BFS搜就完事了
#include<iostream> #include<stdio.h> #include<algorithm> #include<queue> #include<string.h> using namespace std; const int maxn=32; struct node {int x;int y;int z;int step; } start,fin; char a[maxn][maxn][maxn]; bool vis[maxn][maxn][maxn];int dx[]={0,0,1,-1,0,0}; int dy[]={1,-1,0,0,0,0}; int dz[]={0,0,0,0,1,-1};int l,r,c;bool flag=false; queue<node> q;void bfs() {while(q.size()) q.pop();memset(vis,false,sizeof(vis));q.push(start);vis[start.x][start.y][start.z]=true;while(!q.empty()){node temp=q.front();q.pop(); if(temp.x==fin.x && temp.y==fin.y && temp.z==fin.z){flag=1;printf("Escaped in %d minute(s).\n",temp.step);return ;}for(int i=0;i<6;i++){node next;next.x=temp.x+dx[i];next.y=temp.y+dy[i];next.z=temp.z+dz[i];if( next.x>=0&&next.x<l && next.y>=0&&next.y<r && next.z>=0&&next.z<c &&!vis[next.x][next.y][next.z] && a[next.x][next.y][next.z]!='#'){vis[next.x][next.y][next.z]=true;next.step=temp.step+1;q.push(next); } } } } int main() {while(cin>>l>>r>>c){if(l==0&&r==0&&c==0){break;}for(int i=0;i<l;i++){for(int j=0;j<r;j++){for(int k=0;k<c;k++){cin>>a[i][j][k];if(a[i][j][k]=='S'){start.x=i;start.y=j;start.z=k;start.step=0;}if(a[i][j][k]=='E'){fin.x=i;fin.y=j;fin.z=k;fin.step=0;}}}} flag=0;bfs(); if(!flag){cout<<"Trapped!"<<endl; } }return 0; }E 計蒜客 - T2028
跳石頭,經典二分題目, noip原題
#include<bits/stdc++.h> using namespace std; long long int a[50004];long long int d,n,m; bool judge(int x){int tot=0;int i=0;int now=0;while(i<n+1){i++;if(a[i]-a[now]<x)tot++;else now=i;}if(tot>m)return 0;else return 1; } int main() {cin>>d>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];} a[n+1]=d;int l=1;int r=d;int ans;while(l<=r){int mid=(l+r)>>1;if(judge(mid)){l=mid+1;ans=mid;}else r=mid-1;}cout<<ans<<endl; }F HDU - 1702
#include<iostream> #include<cstdio> #include<queue> #include<stack> using namespace std; void cnd(int sum,bool f) {if(f==1){//先進先出 queue<int>q;string a;int b;for(int i=1;i<=sum;i++){cin>>a;if(a[0]=='I'){cin>>b;q.push(b);}else {if(q.empty()){cout<<"None"<<endl;}else {cout<<q.front()<<endl;q.pop();}}}while(!q.empty())q.pop();}else{stack<int>s;string a;int b;for(int i=1;i<=sum;i++){cin>>a;if(a[0]=='I'){cin>>b;s.push(b);}else {if(s.empty()){cout<<"None"<<endl;}else {cout<<s.top()<<endl;s.pop();}}}while(!s.empty())s.pop();}} int main() {int n;cin>>n;int a;string s;for(int i=1;i<=n;i++){cin>>a>>s; // cout<<s[0]<<endl;bool f;if(s[2]=='F')f=1;//先進先出 else f=0;cnd(a,f); }return 0; }G POJ - 1011
詳細題解
H POJ - 3494
求最大全1子矩陣的面積
題解
總結
以上是生活随笔為你收集整理的HAPPY2020暑假训练前复习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通关必读—linux面试题(带答案)
- 下一篇: hdu 1576 A/B