2023年多校联训NOIP层测试7+【LGR-149-Div.3】洛谷基础赛 #2 & qw Round -1
2023年多校联训NOIP层测试7,集训欢乐赛,绝对欢乐,童叟无欺
赛时在回家的路上+睡觉,所以没打。
\(T1\) 近似ybtOJ 2049:【例5.19】字符串判等
- 本题少了对空格的判断,水题。
- PS:题面和题解中都写了文件输入输出,测评时没有文件输入输出是几个意思,艹。
#include<bits/stdc++.h> using namespace std; #define ll long long #define sort stable_sort #define endl '\n' int main() { //freopen("lexi.in","r",stdin); //freopen("lexi.out","w",stdout); string a,b; int n,i,flag=0; cin>>a>>b; n=a.size(); for(i=0;i<=n-1;i++) { if('A'<=a[i]&&a[i]<='Z') { a[i]=a[i]-'A'+'a'; } if('A'<=b[i]&&b[i]<='Z') { b[i]=b[i]-'A'+'a'; } if(a[i]<b[i]) { flag=1; cout<<"-1"; break; } if(a[i]>b[i]) { flag=1; cout<<"1"; break; } } if(flag==0) { cout<<"0"; } return 0; }
\(T2\) 染色
- 暂时咕了。
\(T3\) 质因数分解
- 暂时咕了。
\(T4\) 滑冰
- \(1 \le n \le 2 \times 10^5\)
- 部分分:\(N^2\) 暴力建边,跑 \(Floyd\) or \(Dijkstra\) 。
- 正解:
- 这题挺有意思,如果是第一次做很难想出这种思路。
- 令 \(len[i][j]\) 表示从 \(i\) 到 \(j\) 的距离,考虑对于点 \(i,j,k\) ,若 \(x_i<x_j<x_k\) ,暂时不考虑 \(y\) 的情况,则此时有 \(len[i][k]=len[i][j]+len[j][k]\) ,即 \(x_k-x_i=(x_j-x_i)+(x_k-x_j)\) ,说明只需要连接从 \(i\) 到 \(j\) 和 \(j\) 到 \(k\) 两条边,不需要连接从 \(i\) 到 \(k\) 的边。对于 \(y\) 同理。建好边后,跑 \(Dijkstra\) 。
- 考虑分别对 \(x\) 和 \(y\) 进行排序,从小到大连边即可。
#include<bits/stdc++.h> using namespace std; #define ll long long #define sort stable_sort #define endl '\n' struct huabing { int x,y,id; }a[1000001]; struct node { int nxt,to,w; }e[1000001]; int head[1000001],dis[1000001],vis[1000001],cnt=0; bool cmp1(huabing p,huabing q) { return p.x<q.x; } bool cmp2(huabing p,huabing q) { return p.y<q.y; } void add(int u,int v,int w) { cnt++; e[cnt].nxt=head[u]; e[cnt].to=v; e[cnt].w=w; head[u]=cnt; } void dijkstra(int s) { int x,i; priority_queue<pair<int,int> >q; memset(vis,0,sizeof(vis)); memset(dis,0x3f,sizeof(dis)); dis[s]=0; q.push(make_pair(0,s)); while(q.empty()==0) { x=q.top().second; q.pop(); if(vis[x]==0) { vis[x]=1; for(i=head[x];i!=0;i=e[i].nxt) { if(dis[e[i].to]>dis[x]+e[i].w) { dis[e[i].to]=dis[x]+e[i].w; q.push(make_pair(-dis[e[i].to],e[i].to)); } } } } } int main() { //freopen("shortest.in","r",stdin); //freopen("shortest.out","w",stdout); int n,i; cin>>n; for(i=1;i<=n;i++) { cin>>a[i].x>>a[i].y; a[i].id=i; } sort(a+1,a+1+n,cmp1); for(i=1;i<=n-1;i++) { add(a[i].id,a[i+1].id,a[i+1].x-a[i].x); add(a[i+1].id,a[i].id,a[i+1].x-a[i].x); } sort(a+1,a+1+n,cmp2); for(i=1;i<=n-1;i++) { add(a[i].id,a[i+1].id,a[i+1].y-a[i].y); add(a[i+1].id,a[i].id,a[i+1].y-a[i].y); } dijkstra(1); cout<<dis[n]<<endl; return 0; }
【LGR-149-Div.3】洛谷基础赛 #2 & qw Round -1
一觉睡到了下午5点20,打完 \(T1\) 和 \(T2\) 就懒得打了。交得太晚了,被罚时拉排名了(祭)。
\(T1\) luoguP9516 color \(100pts\)
- 水题, \(2min\) 切了。
#include<bits/stdc++.h> using namespace std; #define ll long long #define sort stable_sort #define endl '\n' int main() { int a,b,c,d,e,f; cin>>a>>b>>c>>d>>e; f=a+b+c+d+e; if(0<=f&&f<=99) { cout<<"Gray"; } if(100<=f&&f<=119) { cout<<"Blue"; } if(120<=f&&f<=169) { cout<<"Green"; } if(170<=f&&f<=229) { cout<<"Orange"; } if(230<=f&&f<=500) { cout<<"Red"; } return 0; }
\(T2\) luoguP9517 drink \(100pts\)
- 水题, \(5min\) 切了。
#include<bits/stdc++.h> using namespace std; #define ll long long #define sort stable_sort #define endl '\n' int a[100002]; int main() { int n,i,l=0,r=0; cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; } for(i=1;i<=n;i++) { if(a[i]==1) { l=i; break; } } for(i=n;i>=1;i--) { if(a[i]==1) { r=i; break; } } if(l==r)//貌似有专门卡这个的数据,一下子就想到了 { cout<<"0"; } else { cout<<r-l+1; } return 0; }
\(T3\) luoguP9518 queue \(0pts\)
- 有时间再写,暂时咕了。
\(T4\) luoguP9519 pay \(0pts\)
- 有时间再写,暂时咕了。
后记
NOIP=CSP-J/S
本文来自博客园,作者:hzoi_Shadow,原文链接:https://www.cnblogs.com/The-Shadow-Dragon/p/17627204.html,未经允许严禁转载。
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。