C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。 Q l r,表示询问数列中第 l∼r 个数的和。 对于每个询问,输出一个整数表示答案。
递归实现指数型枚举 原题链接:https://www.acwing.com/problem/content/94/ 思路 首先是写递归的结束条件。 (u + 1, state | 1 << u); } int main() { cin >> n; dfs(0, 0); } 递归实现排列型枚举 原题链接:https://www.acwing.com path[u] = 0; } } } int main() { cin >> n; dfs(1); } 递归实现组合型枚举 原题链接:https://www.acwing.com } } } int main() { scanf("%d%d", &n, &m); dfs(1, 1); } 费解的开关 原题链接:https://www.acwing.com
1、4个while循环,分别对应向右,向下,向左,向上走,走一趟为一个周期 2、若在当前方向的下一个位置可以踩,则踩过去
公路上总共有 n 个车站,每站都有若干升汽油(有的站可能油量为零),每升油可以让汽车行驶一千米。
main(){ ios::sync_with_stdio(false); cin.tie(nullptr); solve(); return 0; } ---- AcWing
连号区间数 原题链接:https://www.acwing.com/problem/content/1212/ 初始最小值和最大值的依据是题目给出的数据范围。只要在数据范围之外就可以。 maxx - minn == j - i)res++; } } cout << res; return 0; } 递增三元组 原题链接:https://www.acwing.com n; i++) res += (LL) as[i] * cs[i]; cout << res << endl; return 0; } 特别数的和 原题链接:https://www.acwing.com break; } } } cout << res << endl; return 0; } 错误票据 原题链接:https://www.acwing.com else if(a[i]==2)res2=i; } printf("%d %d",res1,res2); return 0; } 归并排序 原题链接:https://www.acwing.com
请计算 ⌊\frac{a+b+c}{2}⌋,即 a,b,c 相加的和除以 2 再下取整的结果。
4615. 相遇问题 ---- 原题链接 题目大意: 求一维数轴上 x 和 y 分别以速度 a,b 相向而行时,相遇所需时间是否为整数。 ---- 思想: 签到题。 输出判断 a + b 是否可以整除 y - x 即可。 ---- 代码: #include <bits/stdc++.h> using namespace std; typedef long long LL; void sovle(){ LL x, y, a, b; cin >> x >> y >> a >> b; if
城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。
但是约翰非常调皮,每次都非常随意的将玩具扔进盒子中,使得所有玩具都随意混在一起,这让约翰难以找到他喜欢的玩具。
二、AcWing 842. 这个位置的数填好 递归到右面一个位置 sta[i]=false; // 恢复现场 该数字后续可用 } } } } 三、AcWing
摘花生 原题链接:https://www.acwing.com/problem/content/1017/ 最后一步,有两种可能: 从上面走 从下面走 也就是max(dp[i-1][j],dp[i][ } } cout << dp[R][C] << endl; } return 0; } 最长上升子序列 原题链接:https://www.acwing.com int i = 1; i <= n; i++)res = max(res, f[i]); cout << res; return 0; } 地宫取宝 原题链接:https://www.acwing.com 参考 https://www.acwing.com/solution/content/7116/ 波动数列 原题链接:https://www.acwing.com/problem/content/1216
幼儿园里有 N 个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果。
请计算 ⌊\frac{a+b+c}{2}⌋,即 a,b,c 相加的和除以 2 再下取整的结果。
回文日期 原文链接:https://www.acwing.com/problem/content/468/ 由于只有八位数,而且回文串左右对称,因此可以只枚举左半边。 & date <= date2 && check(date))res++; } cout << res << endl; return 0; } 参考 https://www.acwing.com /solution/content/3897/ 日期问题 原题链接:https://www.acwing.com/problem/content/1231/ 真就是在枚举。 02d-%02d\n", year, month, day); } } } return 0; } 航班时间 原题链接:https://www.acwing.com 逆序对的数量 原题链接:https://www.acwing.com/problem/content/790/ 归并排序: [L,R]=>[L,mid],[mid+1,R] 递归排序[L,mid]
设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:
手动模拟一下,可以发现每一次操作后的最小非零值为 w[i] - w[i - 1](每一次的最小非零值是这个数减去前面所有操作删掉的值,即 w−∑i=1k−1,k 是操作次数);
思路:洪水填充 这道题目的墙一看就知道是二进制拆分,注意洪水填充一进队就要标记~ #include<bits/stdc++.h> using namespace std; typedef pair<int,int> pii; #define x first #define y second const int N=55; int m,n,g[N][N],area,cnt,st[N][N]; int dx[]={0,-1,0,1},dy[]={-1,0,1,0}; int bfs(int sx,int sy)
思路:按拓扑序分配钱,儿子比父亲多一元钱 #include<bits/stdc++.h> using namespace std; const int N=10010,M=20010; int n,idx,e[M],ne[M],h[N],d[N],m,ans[N]; queue<int>q; void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++; } void tp(){ for(int i=1;i<=n;i++){