洛谷刷题日记
evibhm
这个作者很懒,什么都没留下…
展开
-
Luogu P1591 阶乘数码 普及-
高精度,用 Python 秒了AC代码from math import *t = int(input())for _ in range(t): n, a = input().split() s = str(factorial(int(n))) cnt = 0 for i in s: if i == a: cnt += 1 print(cnt)为了尊重下传统语言C++,我还是重新写了一遍说明:OJ不能提交不怪我啊原创 2021-06-07 21:19:38 · 176 阅读 · 0 评论 -
Luogu P1873 砍树 普及/提高-
二分答案 + 贪心AC代码#include <iostream>#include <algorithm>using namespace std;using LL = long long;LL tree[1000006];LL N, M;bool check(LL h) { LL s = 0; for (LL i = 0; i < N; ++i) { if (tree[i] > h) { s +=原创 2021-05-11 23:33:06 · 100 阅读 · 0 评论 -
Luogu P2678 [NOIP2015 提高组] 跳石头 普及/提高-
二分答案 + 贪心先写个 check 函数,判断最短长度是否可行。然后二分找最大的最短长度。AC代码#include <iostream>#include <algorithm>using namespace std;using LL = long long;LL D[50004];LL sub[50004];LL L, M, N;bool check(LL l) { LL m = 0; for (LL i = 0; i <= N;原创 2021-05-11 22:43:11 · 88 阅读 · 0 评论 -
Luogu P2249 【深基13.例1】查找 普及-
二分查找题妈妈再也不用担心我手搓二分出问题了。lower_bound 返回第一个小于的迭代器upper_bound 返回第一个大于的迭代器STL YYDSAC代码#include <cstdio>#include <iostream>#include <algorithm>using namespace std;using LL = long long;LL a[1000006];int main(){ ios::sync_with_原创 2021-05-10 23:50:58 · 86 阅读 · 0 评论 -
Luogu P1226 【模板】快速幂||取余运算 普及-
快速幂的核心思想是用二进制的右移运算来减少运算次数例如:我们要算 npn^pnp 假设 p=7p=7p=7,我们原来的运算步骤是:n2=n∗nn3=n2∗nn4=n3∗nn5=n4∗nn6=n5∗nn7=n6∗nn^2 = n * n\\n^3 = n^2 * n\\n^4 = n^3 * n\\n^5 = n^4 * n\\n^6 = n^5 * n\\n^7 = n^6 * n\\n2=n∗nn3=n2∗nn4=n3∗nn5=n4∗nn6=n5∗nn7=n6∗n运用快速幂,我们可以简原创 2021-05-09 00:42:32 · 88 阅读 · 0 评论 -
Luogu P7522 ⎌ Nurture ⎌ 普及-
虽然很水,但是我还是WA了一发呜呜呜没有考虑到只有一个数的情况。AC代码#include <iostream>using namespace std;using LL = long long;int main(){ LL max = -0x7f7f7f7f7f7f7f7f; LL min = 0x7f7f7f7f7f7f7f7f; LL sum = 0; LL tmp; LL n; cin >> n; if (n原创 2021-05-08 22:49:13 · 81 阅读 · 0 评论 -
Luogu 5707 【深基2.例12】上学迟到 普及-
签到主要考察 printf("%02d:%02d\n", hour, min);即 cout 或 printf 的对齐补全AC代码#include <iostream>#include <cstdio>using namespace std;int main(){ int s, v; cin >> s >> v; int t = s / v; if (s % v) { t += 1;原创 2021-05-08 14:02:14 · 212 阅读 · 0 评论 -
Luogu P1003 [NOIP2011 提高组] 铺地毯 普及-
模拟题用实际的地面来模拟会 MLC所以把输入数据存起来,逆序比较AC代码#include <iostream>using namespace std;const int MAXN = 10004;int xmin[MAXN], ymin[MAXN], xmax[MAXN], ymax[MAXN];int main(){ int N; cin >> N; for (int n = 1; n <= N; ++n) { c原创 2021-05-08 13:49:55 · 90 阅读 · 0 评论 -
Luogu P1002 [NOIP2002 普及组] 过河卒 普及-
dp , 记忆化搜索状态转移方程dp(x,y)=dp(x−1,y)+dp(x,y−1)dp(x, y) = dp(x-1, y) + dp(x, y-1)dp(x,y)=dp(x−1,y)+dp(x,y−1)标记 9 个马所控制的点(一开始以为只有8个,导致样例没过)AC代码#include <iostream>using namespace std;using LL = long long;LL dp[30][30];bool vis[30][30];LL gdp(原创 2021-05-07 22:15:53 · 114 阅读 · 2 评论 -
Luogu P7578 「RdOI R2」数(number) 入门
签到题感觉自己写的有点慢只要看出来 x:y:z=3:2:1x:y:z=3:2:1x:y:z=3:2:1就完事了AC代码#include <iostream>#include <string>using namespace std;using LL = long long;int main(){ LL T, x, y, z; string s; cin >> T; while (T--) { cin >原创 2021-05-07 20:42:23 · 182 阅读 · 0 评论 -
Luogu P7567 「MCOI-05」魔仙 普及/提高-
奇奇怪怪的数学题注意到 n 个数的和是 0,积为 n,因此可以简单了解到,n 个数的绝对值之和是偶数,n 个数中有偶数个负数。对因数枚举可能会简单些,先打个表。打表代码prime = []for n in range(2, 10000): for i in range(2, int(n ** 0.5) + 1): if n % i == 0: break else: prime.append(n)for n i原创 2021-05-07 17:03:12 · 227 阅读 · 0 评论 -
Luogu P7566 「MCOI-05」饱食 入门
简单的签到题/数学题直接统计 “M”, “C”, “O”, “I” 开头的兔兔的个数,再用排列组合的乘法式C*M*O + C*M*I + C*O*I + M*O*I虽然这个题很简单,但还是WA了一发,这个每天都要发生的事情深刻的告诉我们“三年OI一场空,不开longlong见祖宗”。所以不论是什么题一定要开long longAC代码#include <iostream>#include <string>using namespace std;using LL = l原创 2021-05-07 10:36:48 · 319 阅读 · 0 评论 -
Luogu P1434 [SHOI2002]滑雪 普及/提高-
记忆化搜索状态转移方程dp[i][j] = 1 + max{上下左右四个}一开始没看清题目WA了WA代码#include <iostream>using namespace std;using LL = long long;LL dp[105][105];bool vis[105][105];LL h[105][105];LL R, C;LL gdp(LL i, LL j) { if (!vis[i][j]) { vis[i][j] = tr原创 2021-05-07 00:08:44 · 128 阅读 · 0 评论 -
Luogu P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles 普及-
做的第一个dp状态转移方程dp[i][j] += max(dp[i+1][j], dp[i+1][j+1]);AC代码#include <iostream>#include <algorithm>using namespace std;using LL = long long;LL dp[1005][1005];int main(){ LL n; cin >> n; for (int i = 1; i <= n; +原创 2021-05-06 23:13:58 · 105 阅读 · 0 评论