普转提Day1】的更多相关文章

T1 给定一个长度为N的序列,去掉其中连续的一部分使得剩下的部分没有重复元素. 很显然可以发现去掉的一部分只有三种情况:开头.中间.最后. 那么我们只需要枚举Hash就可以了.复杂度O(N^2). 不过这题也可以用O(N)的做法,类似一个双指针的做法就可以了. T2 给出两个数N,M,求小于等于N的自然数内,M的倍数的个位数字之和. 数学题,求出循环节进行计算即可. T3 将N个物品放进最大承重量为S的背包内,每个物品有一个规定的放入时间和拿出时间,且有它的重量.价值和该物品的承重量.在同一个时…
ZROI #364. [2018普转提day18专题]嘤嘤嘤 直接贴代码 具体见注释 #include<stdio.h> #include<cstring> #include<cstdlib> #include<algorithm> #include<vector> #include<map> #include<set> #include<cmath> #include<iostream> #inc…
ZROI #365. [2018普转提day18专题]嘤嘤嘤嘤 直接放代码 具体做法见注释 #include<stdio.h> #include<cstring> #include<cstdlib> #include<algorithm> #include<vector> #include<map> #include<set> #include<cmath> #include<iostream> #…
ZR普转提2 A 谢谢刁神教我A题 刚开始读错题了,以为是一个不可做的数位DP,然后就暴力滚粗 直到问了问刁神,发现自己题意是错的 然后成了比较简单的题目 直接暴力枚举每一位填什么,剩下的位数的数字都要相同 枚举完之后暴力check,除以去掉点缀0的不合法情况,以及 1e16有17位数字 代码就不放了 B 果然听别人的思路再考一遍还是不会 有点类似于AB班的那一道括号匹配的题目 我们想\(A,B,C\)出现的次数相同 也就是把相同的一段扣去 A,B,C出现次数的差是不变的 这就启示我们去维护\(…
ZR9.8普转提 A,B 打过的CF原题,不管了 C 确认过眼神,是我不会写的DP, 发现这个题目要求的过程类似与一个所有括号都不一样的括号匹配的过程 但是限制条件非常多,有点无从下手的感觉 我们设\(f_{i,j}\)表示当\(i\)出栈前,\(i\)在栈底,\(i\)和他上面的所有物品重量不超过\(j\)时的最大价值 但是这样很难统计贡献,因为最终状态的栈是空的 我们考虑在栈的底部放一个永远不会被弹出的东西 他的参数是\(in:0,out:2\times n+1,w:0.s:w,v:0\)…
传送门 分析 记录区间最大值,线段树上二分找比这个点大的最靠前位置即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #inc…
传送门 分析 居然卡哈希数,万恶的出题人...... 感觉我这个方法似乎比较呆,我的代码成功成为了全网最慢的代码qwq 应该是可以直接哈希的 但由于我哈希学的不好又想练练线段树维护哈希,于是就写了个线段树维护了一下哈希值 详见代码 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cct…
传送门 分析 一道有意思的小题... 我们发现如果$(1,1)$为白色,则将其变为白色需要偶数次操作,而如果为黑色则需要奇数次操作 我们知道要让A赢需要奇数次操作,所以我们只需要判断$(1,1)$的颜色即可qwq 代码 #include<bits/stdc++.h> using namespace std; int t,n,m; int main(){ int i,j,k; scanf("%d",&t); while(t--){ scanf("%d%d&q…
传送门 分析 首先我们不难想到我们一定可以将每一个点分开算,然后看这个点被几个矩形包含 于是对于位置为$(i,j)$的点它被包含的次数为$i * (n-i+1) * j * (m-j+1)$ 这个式子的意义为,对于在第$i$行的点,它上面可以选$0$~$(i-1)$行,它下面可以选$0$~$(n-i)$行 列的情况与行相同 代码 #include<bits/stdc++.h> using namespace std; #define ui unsigned int int main(){ ui…
传送门 分析 就是飞飞侠这道题...... 我们可以将这张图建成好几层,每一层可以向下一层的上下左右无代价移动,而对于每个点如果付b[i][j]的代价就可以走到比它高a[i][j]的层上.我们用这种方式优化了建边,然后跑个最短路就行了. 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<…