Atcoder record
本人新手菜鸡🫑,分享atcoder刷题题解,欢迎交流qwq
Honestbutter-
这个作者很懒,什么都没留下…
展开
-
【无标题】
(数学/找规律)D - Polynomial division链接最好用的方法是写一个具体的例子#include<iostream>#include<algorithm>#include<cstring>#include<vector>#define io ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);using namespace std;typedef long long LL原创 2022-03-28 20:35:24 · 297 阅读 · 0 评论 -
(图上DP)E - King Bombee
E - King Bombee链接#include<iostream>#include<vector>using namespace std;#define pb push_backtypedef long long LL;const int N=2100,p=998244353;vector<int>e[N];LL f[N][N][3];int n,m,k,s,t,x;int main(){ cin>>n>>m>原创 2022-03-21 11:30:03 · 524 阅读 · 0 评论 -
奇/偶排列问题
D - Swap Hats添加链接描述题意:给定R G B三个字母的排序,问通过恰好1e181e181e18次交换操作,能否将其变成给定的顺序?分析:1.令R=1,G=2,B=3,我们可以将其转化为(1,2,3)排列问题2.A组的三种排列可以通过一次操作变成B组中的排列,同理,B组中的三种排列也可以通过一次操作变成A组中的排列。如果A组中的一种排列要变成他相同组中的另一种排列,需要两次操作(先变成B排列,再变回A)。综上我们可以知道:通过偶数1e18次操作,如果两种排列在同一组中,就可以得到。原创 2022-03-21 10:35:42 · 2832 阅读 · 0 评论 -
Atcoder 238
B-模拟#include<iostream>using namespace std;typedef long long LL;bool f[400];int main(){ int n; cin>>n; int p=0; f[0]=true; for(int i=0;i<n;i++) { int a; cin>>a; p+=a; p%=360; f[p]=true; //记录分割点 } int res=0,ans=原创 2022-02-06 17:05:08 · 143 阅读 · 0 评论 -
二分答案,01分数规划(平均数/中位数转化),dp
题目链接大佬题解链接补充:关于平均值的01规划理解:∑ain≥mid\frac{\sum{a_i}}{n}≥midn∑ai≥mid∑ai∑i=1n1≥mid\frac{\sum{a_i}}{\sum_{i=1}^n1}≥mid∑i=1n1∑ai≥mid∑(ai−mid)≥0\sum{(a_i-mid)}≥0∑(ai−mid)≥0另外注意中位数是整数,平均值是浮点数我们知道对于某一个位置iii,既可以选这个数,也可以选他的下一个数,下意识的想用DFS,但是数据太大原创 2022-01-27 21:08:49 · 294 阅读 · 0 评论 -
二维dfs
链接#include<iostream>#include<algorithm>#include<cstring>using namespace std;typedef long long LL;const int N=20;int g[N][N],n;bool st[N];LL ans;void dfs(int u,LL x) //x记录答案{ if(u==n) { ans=max(ans,x); return; } int l=原创 2022-01-26 12:12:49 · 579 阅读 · 0 评论 -
2021-10-29 atcoder ABC157——B - Bingo
B - Bingo先标记,然后暴力判断,这样最清晰最好想。#include<iostream>#include<algorithm>#include<cstring>using namespace std;typedef long long LL;int a[110][110],b[110];int main(){ for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) cin>>a[i]原创 2021-10-29 13:58:09 · 165 阅读 · 0 评论 -
D - Face Produces Unhappiness
D - Face Produces Unhappinessatcoder-ABC140题意:如果字符串中有s[i-1]=s[i],happy的人数+1我们能进行的操作是,选定一个区间将字符整体反转(L变R)最多进行k次操作(注意不是一定进行K次操作)思路:我们先记录原始字符串中happy的人数(只要s[i-1]==s[i],即LL类型或者RR类型,因为我们每次只讨论相邻两个的性质)那么剩余在字符串中,只剩LR类型和RL类型eg:LRLRL或者RLRL(至少是三个字符及以上是这种LRL原创 2021-10-29 11:55:40 · 116 阅读 · 0 评论 -
Atcoder 177
Atcoder 177链接B Substring双重循环#include <cmath>#include<iostream>#include <algorithm>using namespace std;const int INF=0x3f3f3f3f;int main(){ string s,t; cin>>s>>t; int ans=INF; for(int i=0;i<s.size(原创 2021-09-03 19:19:00 · 110 阅读 · 0 评论 -
Atcoder 187
Atcoder 187链接B涉及精度转化,判断条件斜率涉及除法,我们需要将判断条件转化成乘法才不会出错-1<=k<=1即|y2-y1|<=|x2-x1|#include<iostream>#include <algorithm>#include <cmath>#include <vector>using namespace std;typedef pair<int,int> PII;const int N=1原创 2021-09-02 16:21:59 · 65 阅读 · 0 评论 -
Atcoder 214 C
C Distribution题意求每个点第一次拿到水晶球的时间有两个时刻:t[i]时刻第一个拿到水晶球的时间为t,从它向后传,他后面的人拿到水晶球的时间为s[i]+t思路先找到t[i]最小的点x,它是第一个拿到的人,从它向后循环一遍整个数组对于每个点ans[i]=min(t[i],s[i-1]+ans[i-1)考虑到循环问题:数组元素从0开始放置(0~n-1)。更新ans[]的循环从1~n-1。(x+i)%n表示从最小点x开始更新他后面第i个数,正好对应下标(x+i)%n。ex原创 2021-08-15 14:05:48 · 117 阅读 · 0 评论