随笔分类 -  A-基础=====================

摘要:Link: 传送门 代码量很少的一套思维题 A: 试一试发现最后状态一定是所有$min,max$间$gcd$的倍数 直接判断数量的奇偶性即可 #include <bits/stdc++.h> using namespace std; #define X first #define Y second 阅读全文
posted @ 2018-10-11 17:35 NewErA 阅读(226) 评论(0) 推荐(0)
摘要:Link: P1084 传送门 Solution: 感觉NOIP T3也是有点东西的…… 将该题转化为最大值最小问题后想到二分答案 接下来考虑$check$时如何贪心: 由于除了在根节点所有军队都只往上跳明显采取倍增的方式 记录所有能到达根节点的军队和根节点下所有未被封死的子树 将两个序列从小到大排 阅读全文
posted @ 2018-09-28 10:46 NewErA 阅读(246) 评论(0) 推荐(0)
摘要:Link: Codeforces 1053B 传送门 Solution: 其实就是暴力 观察需要满足的条件: 1、个数和为偶数 2、最大个数不大于其它所有个数的和 如果只有第一个条件记录前缀和的奇偶性即可,接下来考虑去除不符合第二个条件的区间 由于一个数最大有60个1且每个数至少有1个1,因此只要暴 阅读全文
posted @ 2018-09-26 10:24 NewErA 阅读(443) 评论(0) 推荐(0)
摘要:Link: 传送门 A: 套路题结果想了好久…… 排序二叉树的性质就是中序遍历单调递增 于是只考虑当前树的中序遍历的序列即可,与树的形态无关 将序列改成严格单调增想到最大化不变的数,但直接LIS求的是改为非严格单调增的数 一个将严格单调增问题改为非严格的套路是将数$a_i$替换成$a_i-i$,对转 阅读全文
posted @ 2018-09-18 15:39 NewErA 阅读(261) 评论(0) 推荐(0)
摘要:Link: 传送门 A: 对于每一条分割线,设本不应在其左侧的个数为$x$ 重点要发现每次一来一回的操作恰好会将一对分别应在左/右侧的一个数从右/左移过去 这样就转直接用树状数组求出最大的$x$即可 #include <bits/stdc++.h> using namespace std; #def 阅读全文
posted @ 2018-09-09 20:40 NewErA 阅读(249) 评论(0) 推荐(0)
摘要:Link: ARC 066 传送门 C: 如果存在可行方案则答案为$2^{n/2}$ #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typede 阅读全文
posted @ 2018-08-28 14:31 NewErA 阅读(200) 评论(0) 推荐(0)
摘要:Link: Codeforces #196 传送门 A: 枚举 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typedef pair<int, 阅读全文
posted @ 2018-08-23 11:52 NewErA 阅读(191) 评论(0) 推荐(0)
摘要:Link: Codeforces #190 传送门 A: 明显答案为$n+m-1$且能构造出来 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; t 阅读全文
posted @ 2018-08-20 18:43 NewErA 阅读(200) 评论(0) 推荐(0)
摘要:Link: AGC004 传送门 A: …… #include <bits/stdc++.h> using namespace std; long long a,b,c; int main() { scanf("%lld%lld%lld",&a,&b,&c); if(a%2==0||b%2==0|| 阅读全文
posted @ 2018-07-13 11:31 NewErA 阅读(161) 评论(0) 推荐(0)
摘要:Link: ARC065 传送门 C: 最好采取逆序贪心,否则要多考虑好几种情况 (从前往后贪心的话不能无脑选“dreamer”,"er"可能为"erase"/"eraser"的前缀) #include <bits/stdc++.h> using namespace std; string s; i 阅读全文
posted @ 2018-07-13 09:33 NewErA 阅读(286) 评论(0) 推荐(0)
摘要:Link: ARC064 传送门 C: 贪心+对边界的特殊处理 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=1e5+10; ll res=0; int n,x,dat[MAXN] 阅读全文
posted @ 2018-07-12 09:12 NewErA 阅读(154) 评论(0) 推荐(0)
摘要:Link: ARC063 传送门 C: 将每种颜色的连续出现称为一段,寻找总段数即可 #include <bits/stdc++.h> using namespace std; int cnt=0,len; char s[100005]; int main() { scanf("%s",s+1);l 阅读全文
posted @ 2018-07-10 21:12 NewErA 阅读(229) 评论(0) 推荐(0)
摘要:Link: P2397 传送门 Solution: (1)在这里记录一个小小的黑科技:摩尔投票法 (线性时间复杂度,$O(1)$的空间复杂度求众数) 从数组的第一个元素开始,假定它代表的群体的人数是最多的 设置一个计数器,在遍历时遇到不同于这个群体的人时就将计数器-1,遇到同个群体的人时就+1 只要 阅读全文
posted @ 2018-07-09 19:45 NewErA 阅读(182) 评论(0) 推荐(0)
摘要:Link: AGC003 传送门 A: 判断如果一个方向有,其相反方向有没有即可 #include <bits/stdc++.h> using namespace std; char s[1005]; map<char,bool> mp; int main() { scanf("%s",s); fo 阅读全文
posted @ 2018-07-09 18:57 NewErA 阅读(218) 评论(0) 推荐(0)
摘要:Link: AGC002 传送门 A: …… #include <bits/stdc++.h> using namespace std; int a,b; int main() { scanf("%d%d",&a,&b); if(a>0) puts("Positive"); else if(a<=0 阅读全文
posted @ 2018-07-03 18:56 NewErA 阅读(185) 评论(0) 推荐(0)
摘要:Link: BZOJ 1801 传送门 Solution: 一眼看过去又像是状压$dp$的经典模型…… 但此题$n,m\le 100$ ,直接跑状压只有50分 此时要发现这道题的特点:每行/列不能放置超过2个 既然每一列只可能有 不选/选1个/选2个 这三种状态,直接记录这三种状态的个数即可 于是设 阅读全文
posted @ 2018-07-03 08:49 NewErA 阅读(162) 评论(0) 推荐(0)
摘要:Link: BZOJ 3668 传送门 Solution: 怎么回事啊,难道好好学贪心就能在NOI上切题了? 位运算相关题型的思路: 由于位运算以位为单位,因此每一位一般都是独立的,分别统计即可 因此对于此题我们对每一位都进行贪心策略: 1、如果该位在$m$之内,只要能最终变为1就计算贡献 2、如果 阅读全文
posted @ 2018-07-01 16:53 NewErA 阅读(196) 评论(0) 推荐(0)
摘要:Link: BZOJ 2547 传送门 Solution: 很容易通过解可行性的单调性想到二分答案,接下来考虑如何验证解 发现一个很奇妙的条件:步兵和骑兵的个数相同 因此交换位置时不用考虑可行性,保证能完成交换(口胡证明一下就行了) 于是可以将每一次交换位置想成转变职业(不用考虑能否交换) 每一个士 阅读全文
posted @ 2018-06-05 21:54 NewErA 阅读(248) 评论(0) 推荐(0)
摘要:Link: BZOJ 3152 传送门 Solution: 喜闻乐见,gyz出的语文题,题意要看半小时 题意:使用最少的括号将序列分割,对于每个括号中的序列,设最左边的数为$num$,序列中元素个数为$cnt$, 要保证:$num>=cnt$(括号括起来后算作一个元素)。一开始一个括号包含$[1,n 阅读全文
posted @ 2018-06-03 22:40 NewErA 阅读(279) 评论(0) 推荐(0)
摘要:Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2282 Solution: 看到球最大值最小 > 想到二分答案 首先要推导出一些性质: 1、这条路径一定在树的直径上 感性证明:直径上的每个点通向直径末端的路径都是这个方向从该点出发的最长距 阅读全文
posted @ 2018-05-30 08:50 NewErA 阅读(205) 评论(0) 推荐(0)