5.19
今天是开通博客的第一天,以后加油了。(你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根。)
/* #include<bits/stdc++.h> using namespace std; const int N=1e6; #define ll long long //定义 stack<int>ak;//定义栈 sk.push(a);//a入栈顶 sk.top();//返回栈顶元素 sk.pop();//删除栈顶元素 sk.empty();//是否为空 sk.size();//元素个数 queue<int>q;//定义队列 q.push(a);//a入队列 q.front();//返回队首元素 q.back();//返回队尾元素 q.pop();//删除队首元素 q.empty();//是否为空 q.size();//元素个数 set<int>se;//定义集合 se.insert(a);//a入集合 se.erase(a);//删除a; se.clear();//清空 se.empty();//是否为空 se.size();//元素个数 se.find(a);//返回一个迭代器,指向键值a; se.lower_bound(a)//返回一个迭代器,指向键值不小于a的第一个元素; se.upper_bound(a)//返回一个迭代器,指向键值大于a的第一个元素; set<int>::iterator it//定义迭代器 for(it=u[a].begin();it!=u[a].end();it++) if (u[b].find(*it)!=u[b].end())Nc++;//两集合都有的元素为Nc个 map<int,int>mp;//定义 并查集 #include<bits/stdc++.h> using namespace std; const int N=3015; struct t{ int x,y,z; }s[N]; int n,m,i,f[N]; int cmp(t a,t b){ return a.z<b.z; } int F(int x){ if(f[x]==x)return x; else return f[x]=F(f[x]); } int main() { int sum=0,cnt=0; for(i=0;i<N;i++)f[i]=i; cin>>n>>m; for(i=0;i<m;i++)cin>>s[i].x>>s[i].y>>s[i].z; sort(s,s+m,cmp); for(i=0;i<m;i++){ if(F(s[i].x)!=F(s[i].y)){ f[F(s[i].y)]=F(s[i].x);//换元素试试 sum+=s[i].z; cnt++; } } if(cnt==n-1)cout<<sum<<endl; else cout<<-1; return 0; }//7分钟 最小生成树 #include<bits/stdc++.h> using namespace std; const int MAX=1<<30,N=505; int a[N][N][2],b[N][2],c[N]; int n,m,s,d,i,j; void F() { c[s]=1; b[s][0]=b[s][1]=0; while(1){ int min=MAX,t; for(i=0;i<n;i++){ if(!c[i]&&b[i][0]<min){ min=b[i][0]; t=i; } } if(t==d||min==MAX)break; c[t]=1; for(i=0;i<n;i++){ if(!c[i]&&b[i][0]>b[t][0]+a[t][i][0]){ b[i][0]=b[t][0]+a[t][i][0]; b[i][1]=b[t][1]+a[t][i][1]; } else if(!c[i]&&b[i][0]==b[t][0]+a[t][i][0]){ if(b[i][1]>b[t][1]+a[t][i][1]) b[i][1]=b[t][1]+a[t][i][1]; } } } } int main() { cin>>n>>m>>s>>d; for(i=0;i<N;i++){ for(j=0;j<N;j++)a[i][j][0]=MAX; b[i][0]=MAX; } for(i=0;i<m;i++){ int x,y,l,q; cin>>x>>y>>l>>q; a[x][y][0]=a[y][x][0]=l; a[x][y][1]=a[y][x][1]=q; } for(i=0;i<n;i++){ if(a[s][i][0]<MAX){ b[i][0]=a[s][i][0]; b[i][1]=a[s][i][1]; } } F(); cout<<b[d][0]<<" "<<b[d][1]; return 0; } //10分钟 01背包 #include<bits/stdc++.h> using namespace std; const int N=1005; int kj[N],jz[N],jg[N]; int main() { int n,m,i,j; cin>>n>>m; for(i=1;i<=n;i++)cin>>kj[i]>>jz[i]; for(i=1;i<=n;i++)for(j=m;j>=kj[i];j--)jg[j]=max(jg[j],jg[j-kj[i]]+jz[i]); cout<<jg[m]; return 0; } int main() { return 0; } */ #include<bits/stdc++.h> using namespace std; const int N=1e6+2; int n,a[N],ma[N],st[N]; int main() { int i,top=0; cin>>n; for(i=0;i<n;i++)cin>>a[i]; for(i=n;i;i--)ma[i]=max(ma[i+1],a[i]); for(i=0;i<n;i++){ st[++top]=a[i]; while(top&&st[top]>ma[i+1]){ cout<<st[top--]<<" "; } } return 0; }