using namespace std;int main(){ cout<<"To iterate is human, to recurse di_降价提醒机器人c语言">
赞
踩
L1-1 人与神 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652352
题目大意:输出一行"To iterate is human, to recurse divine."
#include<iostream>
using namespace std;
int main(){
cout<<"To iterate is human, to recurse divine.";
return 0;
}
print("To iterate is human, to recurse divine.")
L1-2 两小时学完C语言 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652353
题目大意:输出还剩下多少页数没有读完,总体减去已读即可
已读为读的天数乘以每天读的页数
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
cout<<a-b*c;
return 0;
}
L1-3 强迫症 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652354
题目大意:将时间格式化
首先不能影响正确的时间
其次对22年开始划分
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n,y;
cin>>n;
y=n%100;
n/=100;
if(n<22)n+=2000;
else if(n<100)n+=1900;
printf("%02d-%02d",n,y);
return 0;
}
L1-4 降价提醒机器人 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652355
题目大意:一旦有降价便输出一行
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n;
cin>>n;
double a,x;
cin>>a;
while(n--){
cin>>x;
if(x<a)printf("On Sale! %.1lf\n",x);
}
return 0;
}
L1-5 大笨钟的心情 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652356
题目大意:将每天的心情存入,然后每次读取当时的心情,如果大于50便输出
#include<iostream>
using namespace std;
int p[25];
int main(){
for(int i=0;i<24;i++)
cin>>p[i];
int x;
while(cin>>x)
if(x<24&&x>=0)
if(p[x]>50)
cout<<p[x]<<" Yes\n";
else cout<<p[x]<<" No\n";
return 0;
}
L1-6 吉老师的回归 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652357
题目大意:如果题目中带有简单和签到便跳过,反之记录,如果写的题目超过了他的过题数,他便ak了,反之输出记录的过题数
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ int n,m; string s; vector<string> p; cin>>n>>m; getchar(); while(n--){ getline(cin,s); if(s.find("easy")!=-1)continue; if(s.find("qiandao")!=-1)continue; p.push_back(s); } if(p.size()<=m)cout<<"Wo AK le"; else cout<<p[m]; return 0; }
#include<iostream> #include<cstdio> #include<cstring> using namespace std; char s[510]; int main(){ int n,m; scanf("%d %d",&n,&m); while(n--){ getchar(); scanf("%[^\n]",s+1); int len=strlen(s+1); for(int i=1;i<len;i++) if(s[i]=='e'&&s[i+1]=='a'&&s[i+2]=='s'&&s[i+3]=='y') break; else if(s[i]=='q'&&s[i+1]=='i'&&s[i+2]=='a'&&s[i+3]=='n'&&s[i+4]=='d'&&s[i+5]=='a'&&s[i+6]=='o') break; else if(i==len-1){ m--; break; } if(m<0){ printf("%s",s+1); return 0; } } printf("Wo AK le"); }
L1-7 天梯赛的善良 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652358
题目大意:每次有最大最小值便更新数目和值
#include<iostream> const int INF=0x3f3f3f3f; int mmin=INF,cntmmin=0,mmax=-INF,cntmmax=0; using namespace std; int main(){ int x,n; cin>>n; for(int i=0;i<n;i++){ cin>>x; if(x>mmax){ cntmmax=1; mmax=x; } else if(x==mmax)cntmmax++; if(x<mmin){ cntmmin=1; mmin=x; } else if(x==mmin)cntmmin++; } cout<<mmin<<" "<<cntmmin<<endl; cout<<mmax<<" "<<cntmmax<<endl; return 0; }
L1-8 乘法口诀数列 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652359
题目大意:输出乘法表
#include<iostream> using namespace std; const int N=2e3+7; int s[N]; int main(){ int n; cin>>s[0]>>s[1]>>n; for(int i=0,j=2;i<=n;i++){ int a=s[i]*s[i+1]; if(a<10)s[j++]=a; else s[j++]=a/10,s[j++]=a%10; } for(int i=0;i<n;i++) cout<<s[i]<<" "; return 0; }
L2-1 包装机 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652360
题目大意:用一个栈保存框,传送带可以用队列存也可以用栈存,然后模拟即可
#include<iostream> #include<stack> using namespace std; const int N=1e2+7; stack<char> p[N],st; char str[100010]; int main(){ int n,m,k; cin>>n>>m>>k; string s; for(int i=1;i<=n;i++){ cin>>s; for(int j=m;j;j--) p[i].push(s[j-1]); } int x,cnt=0; while(cin>>x,x!=-1) if(!x){ if(st.size()) str[cnt++]=st.top(),st.pop(); } else{ if(p[x].size()){ if(st.size()==k) str[cnt++]=st.top(),st.pop(); st.push(p[x].top()); p[x].pop(); } } str[cnt]='\0'; cout<<str; return 0; }
L2-2 病毒溯源 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652361
题目大意:因为没有重复感染,所以成了树的深度搜索,用拓扑排序减少重复搜索
#include<iostream> #include<algorithm> #include<vector> using namespace std; const int N=1e4+7; vector<int> t,p,s[N]; int b[N]; int dfs(int i){ b[i]=1; if(!s[i].size()&&p.size()<t.size())p=t; for(int j=0;j<s[i].size();j++){ t.push_back(s[i][j]); dfs(s[i][j]); t.pop_back(); } } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ int m,x; cin>>m; for(int j=0;j<m;j++){ cin>>x; s[i].push_back(x); } sort(s[i].begin(),s[i].end()); } for(int i=0;i<n;i++){ t.push_back(i); if(!b[i])dfs(i); t.pop_back(); } cout<<p.size()<<"\n"; for(int i:p) cout<<i<<" "; return 0; }
L2-3 清点代码库 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652362
题目大意:将一个数组记录一个hash值,然后保存,有利于快速比对是否重复,这里我用map缩短代码
#include<iostream> #include<algorithm> #include<map> #include<vector> using namespace std; map<vector<int>,int> m; const int N=1e4+7; vector<pair<int,vector<int>>> s; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n,k,x; cin>>n>>k; while(n--){ vector<int> t; for(int j=0;j<k;j++){ cin>>x; t.push_back(x); } m[t]++; } for(auto [a,b]:m)s.push_back({-b,a}); sort(s.begin(),s.end()); cout<<s.size()<<"\n"; for(int i=0;i<s.size();i++){ cout<<-s[i].first; for(int j=0;j<s[i].second.size();j++) cout<<" "<<s[i].second[j]; cout<<"\n"; } }
L2-4 哲哲打游戏 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652363
题目大意:很简单,用一个数组模拟即可。
#include<iostream> #include<vector> using namespace std; const int N=1e5+7; vector<int> s[N]; int p[N]; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ int k,x; cin>>k; for(int j=0;j<k;j++){ cin>>x; s[i].push_back(x); } } int v=1; while(m--){ int x,j; cin>>x>>j; if(!x)v=s[v][j-1]; else if(x==1)p[j]=v,cout<<v<<"\n"; else v=p[j]; } cout<<v; }
L3-1 森森旅游 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652364
题目大意:由于现金只能兑换一次,并且要一次性将现金全部兑换成旅游币,将该图分为一个两个点的单源最短路,然后通过堆来寻找每一次更改汇率的最小现金额。
#include<iostream> #include<algorithm> #include<cstring> #include<queue> #include<set> #define endl "\n" using namespace std; typedef long long ll; struct xy{ ll x,y; inline bool operator<(const xy &b)const{ return x>b.x; } }; const int N=1e5+7; const int M=2e5+7; const ll INF=0x3f3f3f3f3f3f3f3fll; ll dis1[N],dis2[N]; ll h1[M],h2[M],ne1[M],ne2[M],e1[M],e2[M],w1[M],w2[M],idx; bool st[M]; int ra[N]; int n,m,k; void add(int a,int b,int c,int d){ e1[++idx]=b; w1[idx]=c; ne1[idx]=h1[a]; h1[a]=idx; e2[idx]=a; w2[idx]=d; ne2[idx]=h2[b]; h2[b]=idx; } void dij(int i,ll *dist,ll *w,ll *h,ll *e,ll *ne){ memset(dist,0x3f,sizeof dis1); memset(st,0,sizeof st); dist[i]=0; priority_queue<xy> heap; heap.push({0,i}); while(heap.size()){ xy k=heap.top(); heap.pop(); ll var=k.y,len=k.x; if(st[var])continue; st[var]=true; for(int j=h[var];j;j=ne[j]){ int en=e[j]; if(dist[en]>len+w[j]){ dist[en]=len+w[j]; heap.push({dist[en],en}); } } } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin>>n>>m>>k; for(int i=0;i<m;i++){ int a,b,c,d; cin>>a>>b>>c>>d; add(a,b,c,d); } dij(1,dis1,w1,h1,e1,ne1);dij(n,dis2,w2,h2,e2,ne2); for(int i=1;i<=n;i++)cin>>ra[i]; multiset<ll> S; for(int i=1;i<=n;i++) if(dis1[i]!=INF&&dis2[i]!=INF){ S.insert(dis1[i]+(dis2[i]+ra[i]-1)/ra[i]); } while(k--){ int a,b; cin>>a>>b; if(dis1[a]!=INF&&dis2[a]!=INF){ S.erase(S.find(dis1[a]+(dis2[a]+ra[a]-1)/ra[a])); ra[a]=b; S.insert(dis1[a]+(dis2[a]+ra[a]-1)/ra[a]); } cout<<*S.begin()<<endl; } return 0; }
L3-2 还原文件 (5 分)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/1386335159927652365
题目大意:dfs加剪枝,也可以使用kmp来写,切记每次对比的长度要减1因为每一个尾结点要重复配对,剪枝。
#include<iostream> #include<vector> using namespace std; const int N=1e5+7; vector<int> s[N]; int t[N],cnt=0; int n,m,x; bool st[N],flag=true; bool p(int i,int len){ for(int k=0;k<s[i].size();k++) if(s[i][k]!=s[0][len+k]) return false; return true; } void dfs(int len){ if(len==s[0].size()-1){flag=false;return ;} for(int i=1;flag&&i<=n;i++) if(!st[i]&&p(i,len)){ st[i]=1; t[cnt++]=i; dfs(len+s[i].size()-1); if(!flag)return ; cnt--; st[i]=0; } } int main(){ cin>>n; for(int i=0;i<n;i++){ cin>>x; s[0].push_back(x); } cin>>n; for(int i=1;i<=n;i++){ cin>>m; for(int j=0;j<m;j++){ cin>>x; s[i].push_back(x); } } dfs(0); for(int i=0;i<cnt;i++) cout<<t[i]<<(i==cnt-1?"\n":" "); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。