F题TLE求助

学术版

@[2345A](/user/565070) ```cpp //my code #include<iostream> using namespace std; int n,arr[100000],loction[100000]; int main() { ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n; for(int i=0;i<n;++i) { cin>>arr[i]; if(arr[i]>n||loction[arr[i]-1]) { cout<<"NO"; return 0; }else loction[arr[i]-1]=i+1; } for(int i=1;i<=n;++i) if(arr[i-1]!=loction[i-1]) { cout<<"NO"; return 0; } cout<<"YES"; return 0; } ```
by xiangzhenze611 @ 2024-04-19 21:06:35


@[2345A](/user/565070) unordered_map你值得拥有。
by fishredflying @ 2024-04-19 21:06:48


@[xiangzhenze611](/user/1005749) @[fishredflying](/user/1029122) 谢谢
by 2345A @ 2024-04-19 21:08:16


F 首A: ```cpp #include<bits/stdc++.h> using namespace std; #define ll long long const ll N=114514,M=1919810; ll n,m,k,x,a[N]; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;++i) cin>>a[i]; bool fl=0; for(int i=1;i<=n;++i) if(a[a[i]]!=i) fl=1; if(fl) cout<<"NO"; else cout<<"YES"; return 0; } ```
by The_Elation_Aha @ 2024-04-19 21:08:21


@[2345A](/user/565070) set 你值得拥有。
by 2c_s @ 2024-04-19 21:08:46


吾码 ```cpp #include <bits/stdc++.h> using namespace std; int n,a[100050],p[100050]; int main(){ scanf("%d",&n); for (int i = 1; i <= n; i++) scanf("%d",&a[i]); for (int i = 1; i <= n; i++) p[a[i]] = i; for (int i = 1; i <= n; i++) { if (a[i] != p[i]) { printf("NO"); return 0; } } printf("YES"); return 0; } ```
by liuruiqing @ 2024-04-19 21:15:31


@2453A 题目最后一行不是说了:"数据保证 a 是一个排列。"吗?所以你的这个部分 ```cpp for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[j]==a[i]&&i!=j) { cout<<"NO\n"; return 0; } } } ``` 建议删除。 \ 除此之外如果还WA了,我的AC代码供参考: ```cpp #include<bits/stdc++.h> using namespace std; long long a[100005],vis[100005]; int main() { int n; cin>>n; for(int i=1;i<=n;i++)cin>>a[i],vis[a[i]]=i; for(int i=1;i<=n;i++){ if(a[i]!=vis[i]){ cout<<"NO"; return 0; } } cout<<"YES"; return 0; } ```
by zengyuqiao @ 2024-04-19 21:46:59


我是蒟蒻,"@"符号没用好,希望大佬们谅解
by zengyuqiao @ 2024-04-19 21:48:27


```cpp #include<iostream> #include<cstring> //#define int long long using namespace std; signed main(){ int n,a[100010],b[100010]; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; b[a[i]]=i; } for(int i=1;i<=n;i++){ if(b[i]==0){ cout<<"NO"; return 0; } if(b[i]!=a[i]){ cout<<"NO"; return 0; } } cout<<"YES"; } ```
by yu1128 @ 2024-04-19 22:49:31


|