07 2024 档案
摘要:女神的睿智 void solve() { string s; cin >> s; int a = 0, b = 0; for (int i = 0; i < s.size(); ++i) { if (s[i] == s[0]) a++; if (s[i] == s[4]) b++; } if (s[
阅读全文
摘要:G The Set of Squares 思路: 对于一个序列内的所有数的乘积可以分解为p1k1p2k2...pnkn,(p为质数)此时只有当k都为偶数时,这个序列数的乘积才为完全平方数 当在两个序列当中,所有k为奇数时对应的质数p都相同,说明这两个序列合并可以构成完全平方数 那么可以以ki的奇偶来
阅读全文
摘要:B Crash Test 思路: a的任意倍数与b的任意倍数的和 都是 a和b的最大公约数的倍数 如果选一次操作,最近的距离为min(D % h[i],h[i] - D % h[i]) 那么多次操作的最近距离即为min(D % gcd_h,gcd_h - D % gcd_h) void solve(
阅读全文
摘要:A Make Equal With Mod 思路: 首先x >= 2,那么对于出现1的时候就没有办法处理,所以需要把所有数都变为1,从最大的数开始,每个数 mod 这个数减一 后得到1,只有当出现两个数的差为1时没有办法把全部树变为1 当没有出现1时,所有数都可以通过mod 自己 后得到0 void
阅读全文
摘要:国际旅行Ⅰ 思路:排序后直接输出 void solve() { int n, m, q; cin >> n >> m >> q; vector<int> a(n + 1); for (int i = 1; i <= n; ++i) cin >> a[i]; vector<vector<int> >
阅读全文
摘要:A Many Formulas 思路:二进制枚举 void solve() { string s; cin >> s; int n = s.size(); int m = pow(2, n - 1); int ans = 0; for (int i = 0; i < m; ++i) { int no
阅读全文
摘要:A 题目链接 思路: 枚举每个十字中心点,合法就标记,最后若还剩下点没被标记就NO #include <bits/stdc++.h> using namespace std; #define int long long #define PII pair<int, int> const int N =
阅读全文
摘要:A Robot Takahashi 思路: 将所有数排序,枚举孩子成人的分解点X,同时根据s的标识维护正真的孩子成人的个数 void solve() { int n; cin >> n; string s; cin >> s; int sum = 0; for (int i = 0; i < s.s
阅读全文
摘要:A造数 思路: 将n看成二进制,倒着操作将n变为0即可 赛时的想法也是看成二进制,正着从0加到n,乘2就是向前移位,加1就是把0变1,加2就是添一个1...(还是倒着好想些) void solve() { int n; cin >> n; if (n == 0) { cout << 0; retur
阅读全文
摘要:A Made Up 思路:统计A的个数,O(1)统计cnt[bc] void solve() { int n; cin >> n; vector<int> cnt (n + 1), b(n + 1); for (int i = 1; i <= n; ++i) { int x; cin >> x; c
阅读全文
摘要:训练内容 本周的任务有数据结构的专题题单,以及牛客上的数据结构进阶课。周一到周六都进行了比赛,包括早晨2个小时的小比赛和3个小时友谊赛。下午和晚上主要是补题,写题单。 训练题解 day1 SMU Summer 2024 Contest Round 1(7.8) day2 SMU Summer 202
阅读全文
摘要:[NOIP2012]借教室 可以看到答案是有单调性的,若第i个可以那么第i-1个也可以,就可以二分答案,用差分维护区间加,也可以用树状数组 #include <bits/stdc++.h> using namespace std; #define int long long //#define do
阅读全文
摘要:AtCoder abc204_d 一开始想着贪心,试了下wa掉了,然后看着过的人挺多的还是觉得是贪心🤡(试了好几遍 思路:答案最小为sum/2,那么就是找到大于等于sum/2的最小子集和,上dp,f[i][j]表示前i个数中是否存在子集和为j(看数据范围也可以看出是dp的 void solve()
阅读全文
摘要:CodeForces 1265E 思路:期望dp,f[i]表示走到i的期望天数,有f[i] = p[i]/100 * (f[i - 1] + 1) + (100 - p[i]) / 100 * (f[i - 1] + 1 + f[i]), 得到f[i] = 100 / p[i] * (f[i - 1
阅读全文
摘要:AtCoder abc079_d 思路:floyd跑最短路(赛时把循环顺序记错了🤡) #include <bits/stdc++.h> using namespace std; #define int long long //#define double long double #define P
阅读全文
摘要:寻找素数对 思路:数的范围为10000,直接筛出所有范围内的质数,n2的枚举所有质数对和的情况 #include <bits/stdc++.h> using namespace std; #define int long long #define PII pair<int, int> const i
阅读全文
摘要:A Sierpinski carpet 思路:考虑把每一级的结构存下来,每一级都由3*3个上一级的结构推出的。先推出第一层1*3的结构,后面两层2*3直接复制1*3的结构,再找到中心位置赋值成白色即可 void solve() { vector<vector<string> > ve(10, vec
阅读全文
摘要:A_Dice and Coin 题目链接:abc126_c 思路:分别求所有掷到的筛子数时赢得可能,进行求和 void solve() { int n, k; cin >> n >> k; double ans = 0; for (int i = 1; i <= n; ++i) { double n
阅读全文