A. 搬家
#include
#include
#include
#include
#include
using namespace std;
int n;
stack st;
string op,name;
int main() {
cin>>n;
for(int i=0;i>op;
if(op=="Down") {
cin>>name;
st.push(name);
} else if(op=="Up") {
if(st.empty()) cout<<"?"<
B. 平衡素数
#include
#include
#include
#include
#include
using namespace std;
const int N = 10001000;
bool isprime[N];
int ans[N],cnt,n,num,bns[N],pos;
unordered_map mp;
void prime() {
fill(isprime,isprime+N,true);
isprime[0]=isprime[1]=false;
for(int i=2;i>1;
if(bns[mid]>=num) r=mid;
else l=mid+1;
}
printf("No %d\n",bns[l]);
}
}
return 0;
}
C. 二叉树的最小带权路径长度
#include
#include
#include
#include
#include
#include
using namespace std;
const int N = 110;
struct node {
int id,val,lc,rc,level;
};
vector res;
queue Q;
bool cmp(node &a, node &b) {
return a.val>b.val;
}
int n,cnt,sum;
node ans[2*N];
int main() {
scanf("%d",&n);
int num;
for(int i=0;i
D. 紫金之火,在于丹阳
#include
#include
#include
#include
using namespace std;
const int N = 510;
const int INF = 0x3f3f3f3f;
int n,m,p,k;
int s,t,d,b;
int dist[N],vis[N],G[N][N],res[N];
int cnt;
void dij() {
fill(dist,dist+N,INF);
dist[p]=0;
fill(vis,vis+N,false);
for(int i=0;i