SiriYuri
SiriYuri
全部文章
分类
题解(7)
归档
标签
去牛客网
登录
/
注册
SiriYuri的博客
全部文章
(共11篇)
c-e
c 处理出每个点的后有多少子弹比当前子弹打,然后从前往后遍历即可 ll n,m; void solve(){ cin>>n; vector<int> a(n+1); rep(i,1,n)cin>>a[i]; vector<int> s...
2025-04-25
2
18
题解 | USACO 2015 Jan B
a.打标记判断即可 ll n,m,a,b,ans=inf; bool f; void solve(){ cin>>a>>b>>n; rep(i,1,n){ ll k;cin>>k>>m;f=0; rep(j,1,m...
2025-04-22
0
10
USACO Jan 2020 Bronze
Word Processor 简单模拟 void solve(){ string s; cin>>n>>m;ll cnt = 0; rep(i,1,n){ cin>>s; if(cnt+len(s)>m){ cout&...
2025-04-14
0
16
题解 | #小红的排列构造#
a[n]=0时一定无解,因为1-n的排列无论如何变换都是1-n的排列 a[n]!=0时,遇到0就交换a[i],a[i+1],这样可以满足只对i位置产生影响而不影响其余位置 #include <bits/stdc++.h> #define ls p<<1 #define pri...
2025-04-07
0
19
题解 | #小数字#
注意到开平方相较于除2和减1在n>2时一定更优,除2在n<=2时一定更优,所以先尽可能开方直到m=0或n=2,然后剩余的m进行-1操作即可 #include <bits/stdc++.h> #define ls p<<1 #define print pt #def...
2025-04-07
1
23
题解 | #最长上升子序列(一)#
一种nlogn求解lis/lds问题的做法 维护一个tail数组,tail[i]表示tail[i]作为长度为i+1的最长上升子序列的最后一个元素,这样对于一个新的待处理a[i],可以在tail中二分寻找可插入位置。如果it==tail.end(),说明a[i]是最大的,让它成为最后一个元素,否则一定...
2025-04-07
0
18
题解 | #宝石手串#
断环成链,只有全部宝石都不相同时候无法断裂,否则记录当前宝石出现位置,再次遇到相同宝石时候更新位置比记录答案即可,注意两个宝石之间的宝石数量是(j-i-1) #include <bits/stdc++.h> #define ls p<<1 #define print pt #...
2025-04-07
0
22
题解 | #连续子数组最大和#
跑的还挺快的 先考虑朴素算法。处理出前缀和pre数组,双重循环枚举l,r,ans=max(ans,pre[r]-pre[l-1]) 显然O(n^2)无法通过此题 我们调整一下循环逻辑 for(int j = 1;j<=n;j++){ for(int i = 1;i<=j;i++)...
2025-04-04
0
18
题解 | #小A的最短路#
q次询问最短距离 有一条权为0的边,假设端点a,b,要求u,v最短距离 于是求min(dis(u,v),dis(u,a)+dis(v,b),dis(u,b)+dis(v,a))即可 过程用lca实现 #include <bits/stdc++.h> #define ls p<<...
C++
深度优先搜索
2025-03-25
0
25
题解 | #[NOIP2012]借教室#
二分检验 #include<bits/stdc++.h> using namespace std; #define int long long struct student{ int num; int be; int en; }; student a[1001000]; int r...
线段树
2025-03-20
0
28
首页
上一页
1
2
下一页
末页