1
#include<bits/stdc++.h>
using namespace std;
string s;
int get(string s)
{
int res=0;
for(int i=0;i<=1;i++){
res=res*10+(s[i]-'0');
}
return res;
}
int main()
{
cin>>s;
if(s.length()==6){
for(int i=0;i<=3;i++)cout<<s[i];
cout<<"-";
cout<<s[4]<<s[5];
}
else if(get(s)<=21){
cout<<20;
cout<<s[0]<<s[1]<<"-";
cout<<s[2]<<s[3];
}
else{
cout<<19;
cout<<s[0]<<s[1]<<"-";
cout<<s[2]<<s[3];
}
}
2
#include<bits/stdc++.h>
using namespace std;
string s[55];
char op[55];
int main()
{
map<string,string>mp;
map<string,int>ed;
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>op[i]>>s[i];
}
for(int i=1;i<=n;i++){
if(mp[s[i]]==""){
for(int j=n;j>=1;j--){
if(op[i]!=op[j]&&mp[s[j]]==""){
mp[s[i]]=s[j];
mp[s[j]]=s[i];
break;
}
}
}
}
for(int i=1;i<=n;i++){
if(ed[s[i]]||ed[mp[s[i]]])continue;
cout<<s[i]<<" "<<mp[s[i]]<<"\n";
ed[s[i]]=1;
ed[mp[s[i]]]=1;
}
}
3
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
int n=0;
int b=0,c=0;
while(1){
getline(cin,s);
if(s==".")break;
++n;
if(s.find("chi1 huo3 guo1")!=-1){
c++;
if(!b)b=n;
}
}
cout<<n<<"\n";
if(b){
cout<<b<<" "<<c;
}
else cout<<"-_-#";
}
4
#include<bits/stdc++.h>
using namespace std;
int get(string s)
{
int res=0;
for(int i=0;i<=1;i++){
res=res*10+(s[i]-'0');
}
return res;
}
int main()
{
string s;
cin>>s;
if(get(s)<=11){
cout<<"Only "<<s<<". Too early to Dang.";
}
else if(get(s)==12&&s[3]=='0'&&s[4]=='0'){
cout<<"Only "<<s<<". Too early to Dang.";
}
else {
int ans=get(s)-12;
ans+=((s[3]!='0')||(s[4]!='0'));
for(int i=1;i<=ans;i++){
cout<<"Dang";
}
}
}
5
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,y;
cin>>n>>y;
int c=n;
while(n){
int temp=n;
map<int,int>mp;
int d=0;
while(temp){
mp[temp%10]++;
temp/=10;
++d;
}
if(d<=3)mp[0]++;
if(y==mp.size()){
cout<<n-c<<" ";
while(4-d>0){
d++;
cout<<0;
}
cout<<n;
break;
}
++n;
}
}
6
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,now;
scanf("%d %d",&n,&now);
getchar();
for(int i=1;i<=n;i++){
string s;
getline(cin,s);
int x=min(s.find("qiandao"),s.find("easy"));
if(x!=-1)continue;
if(!now){
cout<<s;
return 0;
}
now--;
}
cout<<"Wo AK le";
}
7
#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;
int main()
{
int n;
cin>>n;
while(n--)
{
int k;
cin>>k;
if(k==1){
string s;
cin>>s;
}
else{
for(int i=1;i<=k;i++){
string s;
cin>>s;
mp[s]++;
}
}
}
int m;
cin>>m;
bool ok=false;
vector<string>ans;
while(m--){
string s;
cin>>s;
if(!mp[s]){
mp[s]++;
ans.push_back(s);
ok=true;
}
}
for(int i=0;i<ans.size();i++){
cout<<ans[i];
if(i!=ans.size()-1)cout<<" ";
}
if(!ok)cout<<"No one is handsome";
}
8
#include<bits/stdc++.h>
using namespace std;
int mp[15];
int s[15];
int main()
{
string ss;
cin>>ss;
for(int i=0;i<ss.length();i++){
mp[ss[i]-'0']++;
}
int m=0;
for(int i=9;i>=0;i--){
if(mp[i])s[m++]=i;
}
cout<<"int[] arr = new int[]{";
cout<<s[0];
for(int i=1;i<=m-1;i++){
cout<<","<<s[i];
}
cout<<"};\n";
cout<<"int[] index = new int[]{";
int temp=ss[0]-'0';
for(int j=0;j<=m-1;j++)if(s[j]==temp)cout<<j;
for(int i=1;i<ss.length();i++){
int temp=ss[i]-'0';
for(int j=0;j<=m-1;j++){
if(s[j]==temp)cout<<","<<j;
}
}
cout<<"};";
}
9
#include<bits/stdc++.h>
using namespace std;
int first;
int n;
struct Node{
int data,next;
}node[100005];
int cnt;
int gocnt;
int order[100005];
int goorder[100005];
bool flag[100005];
int main()
{
cin>>first>>n;
for(int i=1;i<=n;i++)
{
int temp;
cin>>temp;
cin>>node[temp].data>>node[temp].next;
}
int temp=first;
while(temp!=-1)
{
int step=abs(node[temp].data);
if(!flag[step])
{
order[cnt++]=temp;
flag[step]=1;
}
else
{
goorder[gocnt++]=temp;
}
temp=node[temp].next;
}
for(int i=0;i<cnt-1;i++)
{
printf("%05d %d %05d\n",order[i],node[order[i]].data,order[i+1]);
}
printf("%05d %d -1\n",order[cnt-1],node[order[cnt-1]].data);
for(int i=0;i<gocnt-1;i++)
{
printf("%05d %d %05d\n",goorder[i],node[goorder[i]].data,goorder[i+1]);
}
if(n!=1)
printf("%05d %d -1\n",goorder[gocnt-1],node[goorder[gocnt-1]].data);
}
10
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
int n;
int idx,e[10000005],ne[1000005],h[10005];
void add(int a,int b)
{
e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}
struct node{
int a,b;
bool operator<(const node&t)const
{
if(a!=t.a)return a>t.a;
return b>t.b;
}
}edge[10000005];
bool isroot[10005];
int maxlength;
void bfs(int t)
{
queue<PII>q;
q.push({1,t});
while(q.size())
{
int u=q.front().second;
int dis=q.front().first;
q.pop();
for(int i=h[u];i!=-1;i=ne[i]){
int j=e[i];
q.push({dis+1,j});
maxlength=max(maxlength,dis+1);
}
}
}
int com[10005];
bool retu=false;
void dfs(int u,int step)
{
if(retu)return;
if(step==maxlength){
for(int i=1;i<=step-1;i++){
cout<<com[i]<<" ";
}
cout<<u;
retu=true;
return;
}
for(int i=h[u];i!=-1;i=ne[i]){
com[step]=u;
int j=e[i];
dfs(j,step+1);
}
}
int main()
{
cin>>n;
int m=0;
for(int i=0;i<=n-1;i++)isroot[i]=true;
for(int i=0;i<=n-1;i++){
int k;
cin>>k;
while(k--){
int b;
cin>>b;
edge[m++]={i,b};
isroot[b]=false;
}
}
memset(h,-1,sizeof h);
sort(edge,edge+m);
for(int i=0;i<=m-1;i++){
int a=edge[i].a;
int b=edge[i].b;
add(a,b);
}
maxlength=1;
for(int i=0;i<=n-1;i++){
if(isroot[i]){
bfs(i);
cout<<maxlength<<"\n";
dfs(i,1);
return 0;
}
}
}
11
#include<bits/stdc++.h>
using namespace std;
int n;
unordered_map<string,pair<int,string>>mp;
bool check(string s1,string s2)
{
set<string>has;
string a=s1;
int cnt=4;
while(1){
if(a.empty())break;
has.insert(a);
a=mp[a].second;
//cout<<"->"<<a<<"\n";
}
string b=s2;
while(cnt--){
if(has.count(b))return false;
if(b.empty())return true;
b=mp[b].second;
//cout<<"+>"<<b<<"\n";
}
return true;
}
int main()
{
cin>>n;
int m=0;
getchar();
for(int i=1;i<=n;i++){
string s1,s2;
cin>>s1>>s2;
int len2=s2.length();
string temp;
if(s2[len2-1]=='m'){
temp=s2.substr(0,len2-1);
mp[s1].first=1;
}
else if(s2[len2-1]=='f'){
temp=s2.substr(0,len2-1);
mp[s1].first=2;
}
else if(s2[len2-1]=='n'){
temp=s2.substr(0,len2-4);
mp[s1].first=1;
}
else if(s2[len2-1]=='r'){
temp=s2.substr(0,len2-7);
mp[s1].first=2;
}
if(mp[temp].second.empty())mp[temp].second=++m;
if(mp[s1].second.empty())mp[s1].second=++m;
if(s2[len2-1]=='m'||s2[len2-1]=='f')continue;
mp[s1].second=temp;
}
int q;
cin>>q;
getchar();
while(q--)
{
string s1,x1,s2,x2;
cin>>s1>>x1>>s2>>x2;
if(!mp[s1].first||!mp[s2].first){
cout<<"NA\n";
continue;
}
if(mp[s1].first==mp[s2].first){
cout<<"Whatever\n";
continue;
}
if(check(s1,s2)&&check(s2,s1)){
cout<<"Yes\n";
continue;
}
else cout<<"No\n";
}
}
12
#include<bits/stdc++.h>
using namespace std;
int d,p;
map<string,int>M;
struct node{
int id;
string name;
string shenfenzheng;
int op;
bool st;
int time_h;
int time_min;
bool operator<(const node&t)const{
if(time_h==t.time_h){
if(time_min!=t.time_min)return time_min<t.time_min;
return id<t.id;
}
return time_h<t.time_h;
}
}E[30005];
bool check(string s)
{
if(s.length()!=18)return false;
for(int i=0;i<s.length();i++){
if(s[i]<'0'||s[i]>'9')return false;
}
return true;
}
int main()
{
cin>>d>>p;
int cnt=0;
for(int i=1;i<=d;i++){
int t,s;
cin>>t>>s;
node e[t+10];
for(int j=1;j<=t;j++){
e[j].id=j;
cin>>e[j].name>>e[j].shenfenzheng>>e[j].op;
scanf("%d:%d",&e[j].time_h,&e[j].time_min);
if(check(e[j].shenfenzheng)){
e[j].st=true;
}
else e[j].st=false;
if(e[j].st&&e[j].op==true){
E[cnt++]=e[j];
}
}
sort(e+1,e+t+1);
for(int j=1;j<=t&&s;j++){
if(e[j].st==false)continue;
if(M[e[j].shenfenzheng]==0)M[e[j].shenfenzheng]=-2*p;
if(i-M[e[j].shenfenzheng]>=p+1){
cout<<e[j].name<<" "<<e[j].shenfenzheng<<"\n";
s--;
M[e[j].shenfenzheng]=i;
}
}
}
for(int i=0;i<cnt;i++){
if(M[E[i].shenfenzheng]!=-1){
cout<<E[i].name<<" "<<E[i].shenfenzheng<<"\n";
M[E[i].shenfenzheng]=-1;
}
}
}
13
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
int n,m;
int idx,e[10000005],ne[10000005],h[505],len[10000005],tim[10000005];
void add(int a,int b,int l,int t)
{
e[idx]=b;len[idx]=l;tim[idx]=t;ne[idx]=h[a];h[a]=idx++;
}
int distlen[505],distim[505];
bool st[505];
int pre[505];
vector<int>restim,restlen;
void dijkstra1(int s,int t)
{
memset(distim,0x3f,sizeof distim);
memset(st,0,sizeof st);
distlen[s]=0;
distim[s]=0;
pre[s]=-1;
priority_queue<PII,vector<PII>,greater<PII>>heap;
heap.push({0,s});
while(!heap.empty())
{
int u=heap.top().second;
heap.pop();
if(st[u])continue;
st[u]=true;
for(int i=h[u];i!=-1;i=ne[i]){
int j=e[i];
if(distim[j]>distim[u]+tim[i]){
distim[j]=distim[u]+tim[i];
distlen[j]=distlen[u]+len[i];
pre[j]=u;
heap.push({distim[j],j});
}
else if(distim[j]==distim[u]+tim[i]){
if(distlen[j]>distlen[u]+len[i]){
distlen[j]=distlen[u]+len[i];
pre[j]=u;
heap.push({distim[j],j});
}
}
}
}
int temp=t;
while(temp!=-1){
restim.push_back(temp);
temp=pre[temp];
}
}
int cnt[505];
void dijkstra2(int s,int t)
{
memset(cnt,0x3f,sizeof cnt);
memset(st,0,sizeof st);
memset(distlen,0x3f,sizeof distlen);
distlen[s]=0;
pre[s]=-1;
priority_queue<PII,vector<PII>,greater<PII>>heap;
heap.push({0,s});
while(!heap.empty())
{
int u=heap.top().second;
heap.pop();
if(st[u])continue;
st[u]=true;
for(int i=h[u];i!=-1;i=ne[i]){
int j=e[i];
if(distlen[j]>distlen[u]+len[i]){
distlen[j]=distlen[u]+len[i];
cnt[j]=cnt[u]+1;
pre[j]=u;
heap.push({distlen[j],j});
}
else if(distlen[j]==distlen[u]+len[i]){
if(cnt[j]>cnt[u]+1){
cnt[j]=cnt[u]+1;
pre[j]=u;
heap.push({distlen[j],j});
}
}
}
}
int temp=t;
while(temp!=-1){
restlen.push_back(temp);
temp=pre[temp];
}
}
int main()
{
cin>>n>>m;
memset(h,-1,sizeof h);
for(int i=1;i<=m;i++){
int a,b,op,len,tim;
cin>>a>>b>>op>>len>>tim;
add(a,b,len,tim);
if(op==0)add(b,a,len,tim);
}
int s,t;
cin>>s>>t;
dijkstra1(s,t);
dijkstra2(s,t);
bool con=true;
if(restim.size()!=restlen.size())con=false;
for(int i=0;i<restlen.size();i++)if(restlen[i]!=restim[i])con=false;
if(!con){
cout<<"Time = "<<distim[t]<<":";
for(int i=restim.size()-1;i>=0;i--){
cout<<" "<<restim[i];
if(i!=0)cout<<" =>";
}
cout<<"\n";
cout<<"Distance = "<<distlen[t]<<":";
for(int i=restlen.size()-1;i>=0;i--){
cout<<" "<<restlen[i];
if(i!=0)cout<<" =>";
}
}
else{
cout<<"Time = "<<distim[t]<<"; Distance = "<<distlen[t]<<":";
for(int i=restlen.size()-1;i>=0;i--){
cout<<" "<<restlen[i];
if(i!=0)cout<<" =>";
}
}
}
14
#include<bits/stdc++.h>
using namespace std;
int n,m;
int w[10005];
bool vis[10005];
vector<int>res;
bool ok=false;
void dfs(int step,int now)
{
if(ok)return;
if(now==m){
for(int i=1;i<=step;i++){
if(vis[i]){
res.push_back(i);
}
}
ok=true;
return;
}
if(step+1>n)return;
if(w[step+1]+now>m)return;
vis[step+1]=true;
dfs(step+1,w[step+1]+now);
vis[step+1]=false;
dfs(step+1,now);
}
int main()
{
cin>>n>>m;
int sum=0;
for(int i=1;i<=n;i++){
cin>>w[i];
sum+=w[i];
}
if(sum<m){
cout<<"No Solution";
return 0;
}
sort(w+1,w+n+1);
vis[1]=true;
dfs(1,w[1]);
vis[1]=false;
dfs(1,0);
if(ok)
for(int i=0;i<=res.size()-1;i++){
cout<<w[res[i]];
if(i!=res.size()-1)cout<<" ";
}
else cout<<"No Solution";
}
15
#include<bits/stdc++.h>
using namespace std;
int n;
int a[10000005];
map<int,int>mp;
int geta(string x)
{
int res=0;
int q=0;
if(x[0]=='-') q=1;
for(int i=q;i<x.length();i++)
{
if(x[i]<='9'&&x[i]>='0')
res=res*10+x[i]-'0';
else
break;
}
if(q)res*=-1;
return res;
}
int getb(string x)
{
int res=0;
int flag=0;
bool fu=false;
for(int i=0;i<x.length();i++)
{
if(x[i]<='z'&&x[i]>='a')
flag++;
if(flag)
{
if(x[i]=='-')
fu=true;
if(x[i]<='9'&&x[i]>='0')
res=res*10+x[i]-'0';
}
}
if(fu)res*=-1;
return res;
}
void add(int i,int d)
{
if(a[i]==-1113131){
a[i]=d;
return;
}
if(a[i]>d){
add(i*2,d);
}
if(a[i]<d){
add(i*2+1,d);
}
}
int main()
{
cin>>n;
for(int i=1;i<=10000004;i++)a[i]=-1113131;
for(int i=1;i<=n;i++){
int x;
cin>>x;
add(1,x);
}
int cnt=1;
for(int i=1;i<=n;i++){
while(a[cnt]==-1113131)cnt++;
mp[a[cnt]]=cnt;
cnt++;
}
int m;
cin>>m;
getchar();
while(m--)
{
string s;
getline(cin,s);
int len=s.length();
if(s.find("root")!=-1){
int x=geta(s);
if(mp[x]==1)cout<<"Yes\n";
else cout<<"No\n";
}
else if(s.find("level")!=-1){
int a=geta(s),b=getb(s);
int l=1,r=1;
bool ok=true;
if(mp[a]&&mp[b]){
a=mp[a];b=mp[b];
while(1){
r=l*2-1;
if(a>=l&&a-l<l){
if(b>r||b<l)ok=false;
break;
}
l*=2;
}
if(ok)cout<<"Yes\n";
else cout<<"No\n";
}
else cout<<"No\n";
}
else if(s.find("siblings")!=-1){
int a=geta(s),b=getb(s);
a=mp[a];b=mp[b];
if(a&&b){
if(a/2==b/2){
cout<<"Yes\n";
}
else cout<<"No\n";
}
else cout<<"No\n";
}
else if(s.find("parent")!=-1){
int a=geta(s),b=getb(s);
a=mp[a];
b=mp[b];
if(a&&b){
if(b/2==a){
cout<<"Yes\n";
}
else cout<<"No\n";
}
else cout<<"No\n";
}
else if(s.find("left")!=-1){
int a=geta(s),b=getb(s);
a=mp[a];b=mp[b];
if(a&&b){
if(b*2==a){
cout<<"Yes\n";
}
else cout<<"No\n";
}
else cout<<"No\n";
}
else if(s.find("right")!=-1){
int a=geta(s),b=getb(s);
a=mp[a];b=mp[b];
if(a&&b)
{
if(b*2+1==a){
cout<<"Yes\n";
}
else cout<<"No\n";
}
else cout<<"No\n";
}
}
}
4565

被折叠的 条评论
为什么被折叠?



