atcoder
#
夕林山寸
这个作者很懒,什么都没留下…
展开
-
AtCoder Beginner Contest 181 A-F 全部题目解析
A:奇数输出Black,偶数输出White即可。。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define rs (o<<1|1)//#define m (l+r)/2#define pb push_backtypedef pair<int,int> pii;const doub原创 2020-11-03 21:30:16 · 327 阅读 · 0 评论 -
HHKB Programming Contest 2020 ABC E
882 xilinshancun 1100 75:59 100 1:51 200 6:12 300 9:40 - 500 75:59 感觉AT 基本都是数学思维题A:签到。。B:枚举每个点做为图形右下角的贡献即可。#include <bits/stdc++.h>using namesp...原创 2020-10-10 21:51:56 · 233 阅读 · 0 评论 -
ACL Beginner Contest
A - Repeat ACL 模拟就行B - Integer Preference判不相交即可C - Connect Cities连通块个数-1就是结果#include <bits/stdc++.h>using namespace std;typedef long long ll;#define re register#define ls (o<<1)#define rs (o<<1|1)#define pb push_back...原创 2020-09-27 09:58:54 · 417 阅读 · 0 评论 -
AtCoder Beginner Contest 173 A-F
A:水题#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= acos(-1.0);const int M = 1e5+7;/*int head[M],cnt=1;void init(){cnt=1,memset(head,0,原创 2020-07-05 22:14:32 · 239 阅读 · 0 评论 -
AtCoder Beginner Contest 172 A-E
A:模拟#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M = 1e5+7;int main(){ ios::sync_with_stdio(false); cin.tie(0); ll n; cin>>n; cout<<(n+n*n+n*n*n)<<endl; return 0;}B:直接比较。#i原创 2020-06-27 22:46:19 · 318 阅读 · 2 评论 -
AtCoder Grand Contest 044 A,B
A - Pay to Win代码看起来长,但大部分都是复制粘贴的。核心思路:逆向思维从0到n有很多种考虑不好想。我们从n到0来考虑:4中操作:除以2,除以3,除以5,+-1.前三种操作必须n是2/3/5的倍数,否则必须通过第四种操作加或减到最近的一个倍数然后执行除法操作。//(为什么只考虑最近的倍数呢?显然,你加减到不是最近的倍数,我们完全可以先到最近的倍数然后执行除法,再加减,到想要的位置。比如 (5+1)/3+1 =3 (5+4)/3=3 前者只需要2次+1后者则需...原创 2020-05-23 23:25:19 · 300 阅读 · 0 评论 -
AtCoder Beginner Contest 167 F:Bracket Sequencing 贪心分析
首先我们知道,判一个字符串是否合法,肯定是判任意前缀 ( 的个数一定大于等于 ) 的个数而多个字符串考虑什么样的字符串放在最左边比较好。对于一个字符串对拼接有影响的括号一定是自己内部匹配后剩的括号,比如 )(()( 内部匹配一对,剩2个左括号,一个右括号。显然字符串内部括号匹配完后,剩的都是“(”,且剩的左括号的最多,这样的字符串放在最左边。比如()()(( 剩2个左括号同理,最右边一定是,剩的右括号最多的字符串。依照最左最右,我们往中间放。首先左括号剩的多的肯定尽量放左边,右...原创 2020-05-11 17:37:13 · 511 阅读 · 0 评论 -
AtCoder Beginner Contest 167 E:Colorful Blocks 组合数/DP分析
我们先DP分析dp[i][j]表示,按从左往右的顺序填到i时,有j对相邻数字不同,的方案数显然:dp[i][j]=dp[i-1][j]*(m-1)+dp[i-1][j-1];我们把DP在纸上推演如下:发现:每个i所在行的d[pi][j]其实就是二次项展开的一项求和dp[n][0]到dp[n][k]即可。第二种思路是用组合数直接进行分析:考虑:n个数,k个相邻位置数相同,我们在n-1个空位中选择k个位置,使得k左右数相同。然后固定最左边的数,有m种选法,依次往.原创 2020-05-11 11:49:14 · 538 阅读 · 0 评论 -
AtCoder Grand Contest 043 A
好难啊。。才A就这么难感觉AT的思维难度真的大。我们假设选好一个路径,现在要最小化操作次数。由于是矩形内取反,所以尽量不选" . ",我们发现,直接选取路径上连续“#”,有几个连续#就操作几次即可。因为只能往下和往右走,选取连续的#不会影响到路径上其他的点。所以问题就转化为了:求一条路径,路径上连续#最少的个数。然后就随便DP,bfs搞搞就行#include <...原创 2020-03-22 11:42:30 · 380 阅读 · 1 评论 -
Atcoder Panasonic Programming Contest 2020 E - Three Substrings 巧妙的思维题
错误的贪心:枚举abc的全排列,去按顺序贪心最优拼接,这样时错误的。因为可能故意错一位,反而另一个字符串能优至少2位。正解:n^2枚举abc的相对位置,判断ab相对位置是否可以对上,bc是否可以对上,ac是否可以对上。这一步判断可以n^2预处理。总时间复杂度O(n^2)#include <bits/stdc++.h>using namespace std...原创 2020-03-16 20:33:13 · 209 阅读 · 0 评论