//1022
#include<bits/stdc++.h>
using namespace std;//除了要注意换行符的吸收 还有注意年份的格式是%04d 编号的输出格式是%07d容易遗忘
map<string,set<int>>booktitle,author,keyword,publiser;//输出格式问题最后一定要点出来
map<int,set<int>>year;
int main(){
int n;
scanf("%d",&n);
getchar();
long long int _1;
string _2,_3,_4,_5;
int _6;
for(int i=0;i<n;i++){
scanf("%lld",&_1);
getchar();
getline(cin,_2);
booktitle[_2].insert(_1);
getline(cin,_3);
author[_3].insert(_1);
while(cin>>_4){
keyword[_4].insert(_1);
if(getchar()=='\n'){
break;
}
}
getline(cin,_5);
publiser[_5].insert(_1) ;
scanf("%d",&_6);
getchar();
year[_6].insert(_1);
}
int k,_7,_8;
string temp;
scanf("%d",&k);
getchar();
for(int i=0;i<k;i++){
scanf("%d: ",&_7);
printf("%d: ",_7);
//getchar();分段部分输入不用带getchar
if(_7==1){
getline(cin,temp);
printf("%s\n",temp.c_str());
if(booktitle[temp].size()!=0)
for(auto it=booktitle[temp].begin();it!=booktitle[temp].end();it++){
printf("%07d\n",*it);
}else printf("Not Found\n");
}
else if(_7==2){
getline(cin,temp);
printf("%s\n",temp.c_str());
if(author[temp].size()!=0)
for(auto it=author[temp].begin();it!=author[temp].end();it++){
printf("%07d\n",*it);
}else printf("Not Found\n");
}else if(_7==3){
cin>>temp;
printf("%s\n",temp.c_str());
if(keyword[temp].size()!=0)
for(auto it=keyword[temp].begin();it!=keyword[temp].end();it++){
printf("%07d\n",*it);
}else printf("Not Found\n");
}else if(_7==4){
getline(cin,temp);
printf("%s\n",temp.c_str());
if(publiser[temp].size()!=0)
for(auto it=publiser[temp].begin();it!=publiser[temp].end();it++){
printf("%07d\n",*it);
}else printf("Not Found\n");
}else if(_7==5){
scanf("%d",&_8);//没加&
getchar();
printf("%04d\n",_8);
if(year[_8].size()!=0)
for(auto it=year[_8].begin();it!=year[_8].end();it++){
printf("%07d\n",*it);
}else printf("Not Found\n");
}
}
return 0;
}
//1025 格式输出%013样例中故意不给你前面缺位的情况
#include<bits/stdc++.h>
using namespace std;
struct node{
long long int id;
int score;
int location;
int lrank;
int frank;
};
bool cmp(node&a,node&b){
if(a.score!=b.score) return a.score>b.score;
else return a.id<b.id;
}
vector<node> ans,loc;
int main(){
int n,m,sum=0,_2;
long long _1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&m);
loc.clear();
sum+=m;
for(int j=0;j<m;j++){
scanf("%lld%d",&_1,&_2);
loc.push_back({_1,_2,i});
}
sort(loc.begin(),loc.end(),cmp);
loc[0].lrank=1;
ans.push_back(loc[0]);
for(int q=1;q<loc.size();q++){
loc[q].lrank=loc[q-1].score==loc[q].score? loc[q-1].lrank:q+1;
ans.push_back(loc[q]);
}
}
sort(ans.begin(),ans.end(),cmp);
ans[0].frank=1;
for(int i=1;i<ans.size();i++){
ans[i].frank=ans[i-1].score==ans[i].score?ans[i-1].frank:i+1;
}
printf("%d\n",sum);
for(int i=0;i<sum;i++){
printf("%013lld %d %d %d\n",ans[i].id,ans[i].frank,ans[i].location,ans[i].lrank);
}
return 0;
}
//1028
#include<bits/stdc++.h>
using namespace std;
struct node{
int id;
string name;
int grade;
};
int c;
bool cmp1(node&a,node&b){
if(c==1){
return a.id<b.id;
}else if(c==2){
if(a.name!=b.name)
return a.name<b.name;
else return a.id<b.id;
}else if(c==3){
if(a.grade!=b.grade){
return a.grade<b.grade;
}else{
return a.id<b.id;
}
}
}
vector<node> ans;
int main(){
int n,_1,_3;
string _2;
scanf("%d%d",&n,&c);
for(int i=0;i<n;i++){
cin>>_1>>_2>>_3;
ans.push_back({_1,_2,_3});
}
sort(ans.begin(),ans.end(),cmp1);
for(int i=0;i<n;i++){
printf("%06d %s %d\n",ans[i].id,ans[i].name.c_str(),ans[i].grade);
}
return 0;
}
//1039
#include<bits/stdc++.h>
using namespace std;
map<string,set<int>> ans;
int main(){
int n,k,_1,_2;
string _3;
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++){
scanf("%d%d",&_1,&_2);
for(int j=0;j<_2;j++){
cin>>_3;
ans[_3].insert(_1) ;
}
}
string _4;
for(int i=0;i<n;i++){
cin>>_4;
printf("%s",_4.c_str());
printf(" %d",ans[_4].size());
for(auto it=ans[_4].begin();it!=ans[_4].end();it++){
printf(" %d",*it);
}
printf("\n");
}
return 0;
}
//1041
#include<bits/stdc++.h>
using namespace std;
int book[100009];
vector<int> ans;
int main(){
int n,_1;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&_1);
book[_1]++;
ans.push_back(_1);
}
int flag=1;
for(int i=0;i<ans.size();i++){
if(book[ans[i]]==1){
printf("%d",ans[i]);
flag=0;
break;
}
}
if(flag==1){
printf("None");
}
return 0;
}
//1047
#include<bits/stdc++.h>
using namespace std;
bool cmp(string &a,string &b){
return a<b;
}
map<int,vector<string>>ans;
int main(){
int n,m,_2,_3;
string _1;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
cin>>_1>>_2;
for(int j=0;j<_2;j++){
scanf("%d",&_3);//输入不全忘加&
ans[_3].push_back(_1);
}
}
for(int i=1;i<=m;i++){
sort(ans[i].begin(),ans[i].end(),cmp);
printf("%d %d\n",i,ans[i].size());
for(auto it=ans[i].begin();it!=ans[i].end();it++){
string temp=*it;
printf("%s\n",temp.c_str());
}
}
return 0;
}
//1048 分一下全局答案与局部答案,哪些答案是需要全部遍历完才能得到的,不能直接在循环内判断得出的为全局答案
#include<bits/stdc++.h>
using namespace std;
int book[1010];
vector<int> ans;
int main(){
int n,m,_1;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&_1);
ans.push_back(_1);
book[_1]++;
}
sort(ans.begin(),ans.end());
int flag=1;
for(int i=0;i<ans.size();i++){
if(book[m-ans[i]]>0){
if(m-ans[i]==ans[i]&&book[m-ans[i]]>=2){//相当于等于中的子集,下面也有可能等于
printf("%d %d",ans[i],ans[i]);
flag=0;
break;
}else if(m-ans[i]!=ans[i]){//所以要特定限制
printf("%d %d",ans[i],m-ans[i]);
flag=0;
break;
}/*else{
printf("No Solution");
break;//输入完后直接break
}*///no solution 要等都遍历完才能判断有没有 需要全局答案
}
}
if(flag==1){
printf("No Solution");
}
return 0;
}
7道
总结
原来一个未解决的题1025是因为最后的格式问题忘记%013解决,输出时一定要点一下格式
1048 分一下 全局答案和局部答案 有些答案不能直接在循环中判断输出,要整个遍历完才能得出答案