2020.10.10天梯赛补题
总结:前两个小时不要看排名,先做自己一看就会的,每个题都要看一下,避免落题。
1题;
相当考验人的字符串水平。
#include<string>
#include<iostream>
#include<vector>
#include<cstdio>
using namespace std;
int main()
{
int n,i;
cin>>n;
getchar();
string s;
vector<string>b;//每个元素都是字符串类型数组;
while(n--){
//cout<<n<<endl;
getline(cin,s);
cout<<s<<endl<<"AI: ";
//cout<<"AI: ";
//cout<<m<<endl;
for(i=0;i<s.size();i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
if(s[i]!='I')s[i]+=32;
}
else if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='z'))continue;
else if(s[i]!=' ')//排除字母和数字后当为标点符号时
{
s.insert(i," ");//在标点符号前插入空格,便于找出独立性的单词
i++;
}
if(s[i]=='?')s[i]='!';
}
string temp="";
//int q=0;
for(i=0;i<s.size();i++)
{
if(s[i]!=' ')
{
temp+=s[i];
}
else
{
if(temp!=""){
b.push_back(temp);//将单词或者数字依次存储在b中;
temp="";
}
//cout<<b[q]<<"*"<<endl;
//q++;
}
}
// cout<<q<<endl;
if(temp!="")b.push_back(temp);//存储第m-1个
//int w=b.size();
//cout<<w<<endl;
for(int j=0;j<b.size();j++)
{
if(b[j]=="I"||b[j]=="me")b[j]="you";
else if(b[j]=="can"||b[j]=="could")
{
if((j+1)<b.size())
{
if(b[j+1]=="you")
{
b[j+1]=b[j];
b[j]="I";
//b[i+1]=
}
}
}
}
for(i=0;i<b.size();i++)
{
cout<<b[i];
if(i==b.size()-1)break;
if((b[i+1][0]>='0'&&b[i+1][0]<='9')||(b[i+1][0]>='a'&&b[i+1][0]<='z')||b[i+1][0]=='I')
{
printf(" ");
}
}
printf("\n");
//cout<<n<<endl;
b.clear();//清空数组b
}
return 0;
}
3题:
题意很好理解,注意分情况,但输入要用scanf否则会浮点错误。
#include<algorithm>
#define ll long long
using namespace std;
int main(){
ll t;
cin>>t;
ll x,y;
ll al=0,bl=0;
ll a,b;
while(t--){
scanf("%lld/%lld",&a,&b);
if(al!=0){
x=al*b+a*bl;
y=bl*b;
}else{
x=a;
y=b;
}
ll m;
m=__gcd(x,y);
x/=m;
y/=m;
al=x;
bl=y;
}
if(x!=0&&x/y==0){
cout<<x<<"/"<<y<<endl;
}else if(x%y==0){
cout<<x/y<<endl;
}else{
cout<<x/y<<" "<<x%y<<"/"<<y<<endl;
}
}
#include<algorithm>
#define ll long long
using namespace std;
const ll nl=1e5+5;
string a[10001];
ll b[10001];
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int main(){
speed_up;
int n,g,k;
cin>>n;
cin>>g;
cin>>k;
int i,j;
for(i=0;i<n;i++){
cin>>a[i];
cin>>b[i];
}
ll temp=0;
string temp1;
temp1=a[0];
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(b[i]<b[j]){
temp=b[j];
b[j]=b[i];
b[i]=temp;
temp1=a[j];
a[j]=a[i];
a[i]=temp1;
}
}
}
ll kl=k;
for(i=k-1;i<n;i++){
if(b[i]==b[i+1]){
kl++;
}else{
break;
}
}
k=kl;
for(i=0;i<k;i++){
if(b[i]==b[i+1]){
for(j=i+1;j<k;j++){
if(b[i]!=b[j]){
break;
}
if(a[i]>a[j]){
temp=b[j];
b[j]=b[i];
b[i]=temp;
temp1=a[j];
a[j]=a[i];
a[i]=temp1;
}
}
}
}
j=1;
ll dll=0;
for(i=0;i<n;i++){
if(b[i]>=g){
dll+=50;
}else if(b[i]>=60){
dll+=20;
}
}
cout<<dll<<endl;
ll jl=1;
for(i=0;i<k;i++){
cout<<j<<" "<<a[i]<<" "<<b[i]<<endl;
if(b[i]==b[i+1]){
jl++;
}else{
j=j+jl;
jl=1;
}
}
}
using namespace std;
struct node{
int key;
int next;
};
node a1[100005];
int a2[100005],a3[100005];
bool flag[100005];
int main(){
int m,n;
cin>>m>>n;
int addr,key,next;
for(int i=0;i<n;i++){
cin>>addr;
cin>>a1[addr].key;
cin>>a1[addr].next;
}
memset(flag,true,sizeof(flag));
int k1=0,k2=0;
for(int i=m;i!=-1;i=a1[i].next){
int q = abs(a1[i].key);
if(flag[q]){
flag[q] = false;
a2[k1++] = i;
}
else{
a3[k2++] = i;
}
}
printf("%05d %d ",a2[0],a1[a2[0]].key);
for(int i=1;i<k1;i++){
printf("%05d\n",a2[i]);
printf("%05d %d ",a2[i],a1[a2[i]].key);
}
printf("-1\n");
if(k2){
printf("%05d %d ",a3[0],a1[a3[0]].key);
for(int i=1;i<k2;i++){
printf("%05d\n",a3[i]);
printf("%05d %d ",a3[i],a1[a3[i]].key);
}
printf("-1\n");
}
return 0;
}
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
int n,q;
const int N=1e4+100;
int p[N];
int find(int x){
if(p[x]!=x){
p[x]=find(p[x]);
}
return p[x];
}
set<int>st;
int main(){
for(int i=1;i<=N-10;i++){
p[i]=i;
}
cin>>n;
for(int i=0;i<n;i++){
int a,b;
cin>>a;
a--;
cin>>b;
st.insert(b);
int fa=find(b);
while(a--){
cin>>b;
st.insert(b);
int fb=find(b);
if(fb!=fa){
p[fb]=fa;
}
}
}
int cnt=0;
for(auto &x:st){
if(p[x]==x){
cnt++;
}
}
cin>>q;
cout<<st.size()<<' '<<cnt<<endl;
while(q--){
int a,b;
cin>>a>>b;
if(find(a)==find(b)){
cout<<'Y'<<endl;
}
else{
cout<<'N'<<endl;
}
}
return 0;
}
#include<algorithm>
#define ll long long
using namespace std;
const ll nl=1e5+5;
double a[1001];
double b[1001];
double c[1001];
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int main(){
speed_up;
ll n;
cin>>n;
ll d;
cin>>d;
ll i;
for(i=0;i<n;i++){
cin>>a[i];
}
for(i=0;i<n;i++){
cin>>b[i];
}
for(i=0;i<n;i++){
c[i]=b[i]*1.0/a[i];
}
ll sum=0,j;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(c[i]<c[j]){
ll temp;
temp=c[i];
c[i]=c[j];
c[j]=temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
}
double num=0;
for(i=0;i<n;i++){
if(sum<d){
if((sum+a[i])<=d){
sum+=a[i];
num+=1.0*b[i];
}else{
num+=1.0*(d-sum)*c[i];
sum=d;
}
}else{
break;
}
}
printf("%.2lf",num);
}
浙公网安备 33010602011771号