1.红石难题(将红石线路拉成一条一维的线,再用总线路除一个红石源可满足的能量需求范围,不够进一即可)
#include<bits/stdc++.h> #define int long long using namespace std; int a[1000000],b[10000000]; signed main() { int n,m; cin>>n>>m; int ans=1; for(int i=0;i<n;i++) { cin>>a[i]>>b[i]; if(i)ans+=abs(a[i-1]-a[i])+abs(b[i-1]-b[i]); } if(m==0)cout<<0<<endl; else { int d=(15-m)*2+1;
int res;
if(ans%d!=0) res=ans/d+1;
else res=ans/d; cout<<res<<endl; } return 0; }
2.奶茶袋收集(隔板法,求一个差分数列,排序后前n-m项和就是所求)
#include<bits/stdc++.h> #define int long long using namespace std; int a[100000],b[1000000]; signed main() { int n,m; cin>>n>>m; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<n-1;i++) { b[i]=a[i+1]-a[i]; } sort(b,b+n-1); int sum=0; for(int i=0;i<n-m;i++) sum+=b[i]; cout<<sum<<endl; return 0; }
3.该加训了(换位异或的性质,推算后我们可得出f(a,b)=a^b,又例如a^b^c=x,b^c=y,那么a=x^y,由此我们可得出f(l-1)^f(l,r)=f(r),f(l,r)=f(r)^f(l-1))
#include<bits/stdc++.h> #define int long long using namespace std; int a[1000000],b[10000000]; signed main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; b[i]=b[i-1]^a[i]; } int m; cin>>m; int l,r; while(m--) { cin>>l>>r; cout<<(b[r]^b[l-1])<<endl; } return 0; }
4.cy的倒金字塔工厂(使用栈和队列进行模拟,按照条件写即可)
#include<bits/stdc++.h> #define int long long using namespace std; stack<int> l,b,h;//l:流水线,b:盒子,h:半成品,r:垃圾 queue<int> r; signed main() { int n,k; cin>>n>>k; for(int i=0;i<n;i++) { int a; cin>>a; l.push(a); } while(!l.empty()||!b.empty()) { if(!l.empty()) { if(h.empty()) { h.push(l.top()); l.pop(); } else { if(l.top()>h.top()&&l.top()-h.top()<=k) { h.push(l.top()); l.pop(); } else { if(!b.empty()&&b.top()>h.top()&&b.top()-h.top()<=k) { h.push(b.top()); b.pop(); } b.push(l.top()); l.pop(); } } } if(l.empty()) { if(h.size()>=2) { while(!h.empty()) { cout<<h.top()<<" "; h.pop(); } cout<<endl; } else { r.push(h.top()); h.pop(); } stack<int>t; while(!b.empty())//装到流水线末尾(为了顺序正确找个中间栈) { t.push(b.top()); b.pop(); } while(!t.empty()) { l.push(t.top()); t.pop(); } } } while(!r.empty()) { cout<<r.front()<<" "; r.pop(); } return 0; }
5.swj学长的精灵融合(用vector存图,将与x有关的精灵全部存入res中,并在输入时将精灵的品种和等级记录,最后遍历累加res中除x外精灵所需经验)
#include<bits/stdc++.h> #define int long long using namespace std; int a[100000],b[1000000],d1[100],d2[100],d3[100],p[1000000],q[1000000]; int x,m; vector<int> v[1000000],res; struct jing { int a; int b; int c; int d; }; struct jing j[100000]; void dfs(int n) { res.push_back(n); for(auto&t:v[n]) { dfs(t); } } signed main() { cin>>x>>m; for(int i=0;i<m;i++) { cin>>j[i].a>>j[i].b>>j[i].c>>j[i].d; v[j[i].a].push_back(j[i].b); p[j[i].b]=j[i].c; q[j[i].b]=j[i].d; } d1[1]=0,d2[1]=0,d3[1]=0; d1[2]=1,d2[2]=1,d3[2]=1; for(int i=3;i<=100;i++) { d1[i]=d1[i-1]+i-2; d2[i]=d2[i-1]+2*(i-2); d3[i]=d3[i-1]+5*(i-2); } dfs(x); int sum=0; for(auto&t:res) { int c,d; c=p[t],d=q[t]; if(t==x)continue; else { if (c== 1)sum += d1[d]; else if (c == 2)sum += d2[d]; else sum += d3[d]; } } cout<<sum<<endl; return 0; }
标签:int,res,top,cin,long,天梯,empty From: https://www.cnblogs.com/violet-hty/p/18064303