Codeforces Round #674 (Div. 3)

it2023-08-31  79

第一题: 1426A - Floor Number

#include <iostream> #include <cstring> #include <queue> #include <algorithm> #include <cmath> using namespace std; const int N = 500500; int r, n, m; int a[N], b[N], t[N], f[N]; int ans = 0; int main() { int T; cin >> T; while(T -- ) { cin >> n >> m; if(n <= 2) { puts("1"); } else { int cnt = 1; cnt += (n - 2 + m - 1) / m; cout << cnt << endl; } } return 0; }

第二题: B. Symmetric Matrix

只需要保证对角线相等(左下和右上)并且m为偶数即可

#include<bits/stdc++.h> using namespace std; int main() { int T; cin>>T; while(T--) { int n,m; cin>>n>>m; int a,b,c,d,f=0; while(n--) { cin>>a>>b>>c>>d; if(b==c) f=1; } cout<<((f&&m%2==0)?"YES":"NO")<<endl; } }

第三题:

C. Increase and Copy 解析: 让a[0] 增加后复制 (a0 - 1 + ((n - a0)/ a0)(上取整)) 显然枚举到根号n即可

#include <iostream> using namespace std; int main() { int t; cin >> t; while(t -- ) { int n; cin >> n; int ans = 1e9; for(int x = 1; x * x <= n; x ++ ) { ans = min(ans, x - 1 + ((n - x) + x - 1) / x); } cout << ans << endl; } return 0; }

第四题: D. Non-zero Segments 用一个map容器存储第二次出现的数。 m.count(s) > 0 则 ans ++ ;

#include<iostream> #include<map> using namespace std; typedef long long LL; int main() { map<LL, LL> m; LL n, a, s = 0, ans = 0; cin >> n; m[0] ++ ; while(n -- ) { cin >> a; s += a; while(m[s] > 0) { ans ++ ; s = a; m.clear(); m[0] ++ ; } m[s] ++ ; } cout << ans << endl; return 0; }

第五题: 石头剪刀布,比大小但是如果不会技巧运用,一直模拟,代码量也是很大的。

#include<bits/stdc++.h> using namespace std; int main() { int n, a, b, c, d, e, f; cin >> n >> a >> b >> c >> d >> e >> f; cout << n - min(a, n - e) - min(b, n - f) - min(c, n - d) << " " << min(a, e) + min(b, f) + min(c, d); }

第六题: 1426F - Number of Subsequences

#include <bits/stdc++.h> #define int long long using namespace std; const int N=2e5+5,mod=1e9+7; int n; char s[N]; signed main() { scanf("%lld%s",&n,s+1); int a=0,ab=0,abc=0,t=1; for(int i=1;i<=n;i++) { if(s[i]=='a') a+=t; else if(s[i]=='b') ab+=a; else if(s[i]=='c') abc+=ab; else { //如果为?,则出现三种情况,则需要乘以3 //而加上上一个a/ab/t是因为我们?不同增加不同 // t*=3; abc=abc*3+ab; ab=ab*3+a; a=a*3+t; t=t*3%mod; } a%=mod; ab%=mod; abc%=mod; } cout<<abc<<endl; return 0; }
最新回复(0)