今天
新的改变
今天明白了自己的渺小,早上在队长的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;
}