2021.1.20

今天

新的改变

今天明白了自己的渺小,早上在队长的2小时熏陶下,没太听懂,也记不住,讲的很快,下午做题目,在一次次的思考,尝试,运用STL的一些东西,比如说map,set,虽然说最后一题还没写出来,但感觉这样充实的日子让人感到折磨,希望后面的几天能继续努力,能不要退出ACM队,能坚持下去,好累,写着代码午饭都忘了吃,加油加油加油!!!!

A题

就前面的进后面的出
找到中间点只能是堆栈的顶端或者还在等待的后一个,或者后一个再进再继续那啥

#include<bits/stdc++.h>
using namespace std;
int main(){
	stack<int>a;
	int n,x[1010];
	while(scanf("%d",&n)&&n){
		memset(x,0,sizeof(x));
		while(scanf("%d",&x[1])&&x[1]){
			int c=0,e=1;
			for(int i=2;i<=n;i++)scanf("%d",&x[i]);
			for(int i=1;i<=n;i++){
			 	a.push(i);
			 	while(x[e]==a.top()){
			 		c++;
					e++;
			 		a.pop();
			 		if(a.empty()) break;
				 }
			 }
			 if(c==n)printf("Yes\n");
			 else printf("No\n");
		}printf("\n");
	}
	return 0;
}

B题

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int main(){
	char s[MAXN];
	stack<char>st;
	scanf("%s",s);
	int len;
	len=strlen(s);
	for(int i=0;i<len;i++){
		if(s[i]=='(') st.push('(');
		else if(s[i]==')') {
			if(st.empty()) {
				printf("NO");
				return 0;
			}
			st.pop();
		}
	}
	if(st.empty()) printf("YES");
	else printf("NO");
	return 0;
 }

C题

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
const int inf = 0x3f3f3f3f;
int main(){
	int n;
	string s;
	map<string,int> mp;
	while(~scanf("%d",&n)&&n){
		mp.clear();
		while(n--){
			cin>>s;
			mp[s]++;
		}
		map<string,int>::iterator iter;
	    map<string,int>::iterator max;
		max = mp.begin();
		for(iter = mp.begin(); iter != mp.end(); iter++){
			if((*iter).second > (*max).second) max = iter;
		}
		cout<<(*max).first<<endl;
	}
	return 0;
 }

D题

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int main(){
	int T,a,b;
	char s[10];
	queue<int> qu;
	stack<int> st;
	scanf("%d",&T);
	while(T--){
		while(!qu.empty()) qu.pop();
		while(!st.empty()) st.pop();
	    scanf("%d",&a);
	    scanf("%s",s);
	    if(strcmp(s,"FIFO")==0){
	    	while(a--){
	    		scanf("%s",s);
	    		if(strcmp(s,"IN")==0){
	    			scanf("%d",&b);
	    		    qu.push(b);	
				}
				else {
					if(qu.empty()) printf("None\n");
					else {
						printf("%d\n",qu.front());qu.pop();
					}
				}
			}
		}
		else if(strcmp(s,"FILO")==0){
	    	while(a--){
	    		scanf("%s",s);
	    		if(strcmp(s,"IN")==0){
	    			scanf("%d",&b);
	    		    st.push(b);	
				}
				else {
					if(st.empty()) printf("None\n");
					else {
						printf("%d\n",st.top());st.pop();
					}
				}
			}
		}
	}
	return 0;
 }

E题

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int main(){
	int num,m,g,h[11],sum,a;
	char s[30];
	map<string,int> mp;
	while(~scanf("%d",&num)&&num){
		mp.clear();
		scanf("%d%d",&m,&g);
		for(int i=1;i<=m;i++) scanf("%d",&h[i]);
		while(num--){
			sum=0;
			scanf("%s%d",s,&m);
			while(m--){
				scanf("%d",&a);
				sum+=h[a];
			}
			if(sum>=g) mp[s]=sum;
		}
		cout<<mp.size()<<endl;
		if(mp.size()){
			map<string,int> ::iterator max;
			map<string,int> ::iterator b;
			while(mp.size()){
				max = mp.begin();
				for(b=mp.begin();b!=mp.end();b++){
				    if((*b).second>(*max).second) max=b;
			    }
			    cout<<(*max).first<<' '<<(*max).second<<endl;
			    mp.erase(max);
			}
		}
	}
	return 0;
 }

F题

我运用了set

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int main(){
	int n,m,a;
	set<int> s1,s2;
	while(~scanf("%d%d",&n,&m)&&(m||n)){
		s1.clear();
		s2.clear();
		while(n--){
			cin>>a;
			s1.insert(a);
		}
		while(m--){
			cin>>a;
			s2.insert(a);
		}
		set<int>::iterator o;
		for(o = s1.begin();o!=s1.end();){
			a=*o;
			if(s2.find(a)!=s2.end()) {
				s1.erase(o);o=s1.begin();
			}
			else o++;
		}
		if(s1.size()) {
            for(o = s1.begin(); o!= s1.end(); o++)
                cout << *o << " ";
            puts("");
		}
		else{
			cout<<"NULL"<<endl;
		}
	}
	return 0;
}

G题

#include<bits/stdc++.h>
using namespace std;
int main(){   
    map<string, map<string, int> > Map;
    string name, d;
	int T, m, num;
	cin>>T;
	while(T--){
		Map.clear();
		cin>>m;
		for(int i=0; i < m; i++){
			cin >>name>>d>>num;
			(Map[d])[name] += num;
		}
		for(map<string, map<string, int> >::iterator it = Map.begin(); it != Map.end(); it++)
		{
			cout << it->first <<endl;
			for(map<string, int> ::iterator o=it->second.begin();o!=it->second.end(); o++) {
				cout<<"   |----"<<o->first<<"(" << o->second << ")"<<endl;
			}
		}
		if(T!=0) cout<<endl;
	}
	return 0;
}

H题

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int n;
struct node{
	int k;
	int id;
	node(int k1, int id1){
		k=k1;
		id=id1;
	}
	bool friend operator<(node n1, node n2){
		if(n1.k != n2.k) return n1.k<n2.k;
		return n1.id>n2.id; 
	}
};
priority_queue<node>qu[4];
int main(){
	while(cin>>n){
		for(int i=1;i<=3;i++){
			while(qu[i].size()) qu[i].pop();
		}
	  	int id = 0;
    	for(int i=1 ; i<=n ; i++){
	    	string s;
    		cin>>s;
    		if(s=="IN"){
    			++id;
      			int x,y;
    			cin>>x>>y;
    			qu[x].push(node(y,id));
    		}
    		else {
    			int x;
    			cin>>x;
	    		if(qu[x].empty()) puts("EMPTY");
	    		else {
	    			cout<<qu[x].top().id<<endl;
	    			qu[x].pop();
	    		}
	    	}
	    }
	}
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值