摘要:
1006 倒着维护区间之间的约束关系,再正向维护一边,剩下的区间就是答案的可行域,我们只需要把每个区间的可行域的输出即可。 #include <bits/stdc++.h> using namespace std; #define ll long long ll input(){ ll x=0 阅读全文
摘要:
1003 其实是签到题。现当于模拟这张纸展开的过程,现当于每次把前一半逆时针旋转180度,随便模拟一下就过了。 #include <bits/stdc++.h> using namespace std; #define ll long long ll input(){ ll x=0,f=0;c 阅读全文
摘要:
I 转化为图论模型来解决问题。把给定二元组当作一条边,那么显然,如果对于一个连通块如果其是一棵树,那么就会给答案增加这个连通块大小-1的贡献、如果是一个仙人掌,那么就会给答案增加连通块大小的贡献。拿并查集即可维护我们所需的信息。由于给定二元组的值域比较大,所以需要离散化处理。 #include <b 阅读全文
摘要:
D 温暖的签到题。 #include <bits/stdc++.h> using namespace std; #define ll long long ll input(){ ll x=0,f=0;char ch=getchar(); while(ch<'0'||ch>'9') f|=ch=='- 阅读全文
摘要:
C 温暖的签到题。找到答案最大的一列即可,因为如果有多列的话,一定可以分为两个行数不变的矩阵,其中一个答案一定不会变坏。我一开始还以为是0/1分数规划 #include <bits/stdc++.h> using namespace std; #define ll long long ll inpu 阅读全文
摘要:
1004 计算取模后的前缀和,并且存到map里,然后每次在map里查找是否有相同的数,有则答案加一,清空前缀和和map,没有则继续往后找。不过要提前把是k的倍数加到答案里,上面遇到0直接结束,清空map,查找下一段。 #include <bits/stdc++.h> using namespace 阅读全文
摘要:
F 温柔的签到题。 注意这里使用c++的ceil函数会有误差,需要自己手动ceil。注意手动ceil的时候可能会爆long long。 #include <bits/stdc++.h> using namespace std; #define ll long long ll input(){ ll 阅读全文
摘要:
1001 并查集。考虑按点权大到小把点插入图中,每次插入点到图中,我们不妨设集合(其中为第个集合的权值)为与当前点相连的连通块组成的集合,为当前节点的权值。易得插入一个点得到的新连通块的公式为: 那么维护集合我们很自然的想到用 阅读全文
摘要:
L 温暖的签到题。 #include <bits/stdc++.h> using namespace std; #define ll long long ll input(){ ll x=0,f=0;char ch=getchar(); while(ch<'0'||ch>'9') f|=ch=='- 阅读全文
摘要:
D 温暖的签到题。 #include <bits/stdc++.h> using namespace std; #define ll long long ll input(){ ll x=0,f=0;char ch=getchar(); while(ch<'0'||ch>'9') f|=ch=='- 阅读全文