川农菜狗一只
追踪最近的用户名外显变动记录。
最近的文章、讨论、云剪贴板与社区记录
set标记和add标记两种标记重叠其实是可以有两种下传方式的 1. 先下传的add,再下传set:这种情况下传add标记时需要判断前面是否已经有了set标记,如果有则可以把当前add操作视为set操作 2. 先下传的set,再下传add:这种情况下传set标记时需要先把前面的add标记清空 我先是用的第二种方法,但是一…
在讨论《求调一下,hack过了,样例过了,但是0分》回复:
可能是懒标记优先级或者懒标记重叠上的问题没有处理好?
注意,在push_up的时候,前缀区间满足条件的最长长度不能这样转移:if(left.prelen==left.suflen)root.ans=left.ans+right.ans 也就是说当 前缀长度==后缀长度的时候不一定中间是连续的,应该改成if(left.prelen==left.r-left.l+1) 后缀转…
感觉题解说的不是很清楚这一点 最初是p个点,即p个连通块,最终是要使得变成一个连通块 已知s个卫星电话可以使s个连通块变为1个连通块 先是无向完成图建边,然后对边排序 在Kruskal算法贪心加边到最小生成树的过程中,每加一条边连通块数会减1,在加第p-s条边后就只有s个连通块,这s个连通块刚好用s个卫星变为一个连通块…
```cpp #include using namespace std; char c; int n,m,tree1[2050][2050],tree2[2050][2050],tree3[2050][2050],tree4[2050][2050]; int lowbit(int x) { return x&-x; }…
``` #include using namespace std; int n,m,idx,a[100005],lg[100005]; int f[100005][20],num[100005],l[100005],r[100005]; void init() { lg[0]=-1; for(int i=1;i >n>…
``` #include using namespace std; int n,m,idx,a[100005],lg[100005]; int f[100005][20],num[100005],l[100005],r[100005]; void init() { lg[0]=-1; for(int i=1;i >n>…
``` #include #define int long long using namespace std; int n,m,C,v[10005],w[10005],d[10005],a[10],b[10],c[10],f[10005]; signed main() { ios::sync_with_stdio(fa…
1. 题面意思应该是**至少**n*m人进入决赛(背包问题尤其注意:**至多,至少,恰好**) 2. 此题跟[Buying Hay S](https://www.luogu.com.cn/problem/P2918)一样的完全背包至少问题,用完完全背包后,答案res是f[j]中的最小值(j的范围:V到V+n)(V=n*…
``` #include #define inf 0x3f3f3f3f using namespace std; int N,S,V,v[55],f[55][1005]; int main() { cin>>N>>S>>V; for(int i=1;i >v[i]; //f[i][j]:前i首歌中选择,音量不超过j的最…
下面是我的写法 ``` #include #define inf 0x3f3f3f3f using namespace std; int N,S,V,v[55],f[55][1005]; int main() { cin>>N>>S>>V; for(int i=1;i >v[i]; //f[i][j]:前i首歌中选择,…
##求调 ``` #include using namespace std; typedef pair PII; PII k[100005]; int ans[100005]; bool cmp(PII a,PII b) { return a.first>b.first; } int main() { int n; c…
``` #include using namespace std; struct st{ int val,num; }a[100005]; int na[100005]; bool cmp(struct st a,struct st b) { return a.val >t; while(t--) { cin>>n;…
``` #include #include #include #include using namespace std; const int N=1e5+10; int n,d,ans; int h[N],e[N],ne[N],idx; void add(int a,int b) { e[idx]=b,ne[idx]=…
在讨论《为什么我这代码爆零了!》回复:
因为输入数据需要排序 ------------ ~~如果有很多篇文章可以参阅,请先看编号较小的那篇(因此你可能需要先排序)。~~
在讨论《友情提示SPFA》回复:
想的了要清空,但第一次没清完o(╥﹏╥)o
在讨论《警示后人》回复:
谢
在讨论《悬关,求调》回复:
没注意,刚学了这个算法~呜呜 都关注了
### 只能过最后两个点,不知道哪里有问题 ``` #include #include #include #include #include #include using namespace std; typedef pair PII; const int N=1e5+10,M=2e5+10; int h[N],e[M…
在讨论《邻接表遍历,样例过全WA》回复:
题目要求**如果有很多篇文章可以参阅,请先看编号较小的那篇(因此你可能需要先排序)** 你这个是y总的邻接表板子头插法改成的尾插法吧,这里面存的边都是无序的,存边前需要排序, 样例刚好是有序,所以你这个尾插法能过样例,但是测试点输入的边都是无序的,需要先用一个数组存下来再排序先
在讨论《看不懂》回复:
``` #include #include #include #include #include #include #define int long long using namespace std; int c[2010][2010],flag[2010][2010]; signed main() { int t,k…
在讨论《看不懂》回复:
一般二维前缀和的递推公式为 ``` flag[i][j]=flag[i-1][j]+flag[i][j-1]-flag[i-1][j-1]+a[i][j]; ``` 但是这个题遍历是三角形求前缀和,不是矩形。 而前缀和公式中 当前位置的数 需要正上方一个数来参加计算推导,但是三角形的最外围的数也就是flag[i][i]…