![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Atcoder
文章平均质量分 52
johsnows
正在静下心来学算法的acmer
展开
-
atcoder abc 164 Multiple of 2019(dp)
dp题,状态dp[i][j],表示以第i字符结尾的数字中对2019取模为j的数字有多少个#include <bits/stdc++.h>using namespace std;const int maxn=2e5+5;int dp[3][3000];char str[maxn];int main(){ scanf("%s", str); int i,...原创 2020-04-26 22:35:48 · 493 阅读 · 0 评论 -
Atcoder Beginner Contest 55 D Menagerie (枚举+验证)
题意:有两种动物,羊会说事实,狼会故意说谎,一群动物站成一圈(只包含狼和羊),他们没人分别说自己旁边的两种动物是否相同.题目里是给出一串字符串,字符串里'X'代表站在这个位置的动物说它两边的动物种类不同,'O'代表站在这个位置的动物说它两边的动物种类相同,求符合这个字符串的动物排列方式,如果没有输出"-1".结题思路:数据范围是1e5,没有办法去枚举所有答案.但是根据题目给原创 2017-02-19 15:20:23 · 422 阅读 · 0 评论 -
atcoder Moderate Differences(数学)
题意:给你一序列最左边b和最右边的数a,这个序列要求相邻的数的差距的绝对值得在c和d之间,序列的个数为n,问能不能构造出这样的合法序列。思路:这个题是真的巧。总共有n个数,就有n-1个相邻的数的差,记每个差为f[i],那么所有的f[i]的和就是b-a,这个容易想。f[i]的取值范围为【-d,-c】U【c,d】之间。假设有m个数是在【-d,-c】之间,那么如果f[i]原创 2017-07-10 10:22:32 · 488 阅读 · 1 评论 -
Atcoder agc018 coins
题意:x+y+z个人,每人有a,b,c三种硬币若干个,只能从每个人手上拿一种硬币,其中能拿a种硬币最多x个人,b种y人, c种z人,问最多能拿几个硬币。解题思路:先对每个人按a-b的大小排序,这样的话,选择a的x人一定都在选择b的y人右边,假设存在选择a的人在选择b的人左边,那么原先拿a的拿b,原先拿b的拿a,获得的金币数量要比原先多。现在可以枚举下,y人是在前k人中选取,原创 2017-07-24 20:17:32 · 614 阅读 · 0 评论 -
atcoder Yet Another Palindrome Partitioning(dp)
题意:给出一个字符串,最少需要多少次拆分得到的子串都是合法的,合法的定义是改变字符串顺序能得到一个回文串。解题思路:容易想到的是一个合法的字符串的26个字母最多只能一个字母出现次数为奇数,用26位二进制数(mask)表示,1表示奇数的话,只有能整除2的和0是合法的。dp想法是每个状态减去一个合法串然后转移过来,但是显然不能for一下,这时候就利用下上面的mask。用ma原创 2017-10-23 19:21:10 · 413 阅读 · 0 评论