![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Codeforces
文章平均质量分 75
kuzi_kz
这个人很懒,还没有添加简介
展开
-
Codeforces Round #731 (Div. 3)(ABCDEFG)
A. Shortest Path with Obstacle当两个点的x坐标或者y坐标相同的时候,需要多花2费绕开#include<bits/stdc++.h>using namespace std;const int N=1e5+10;void solve(){ int x1,y1,x2,y2,x3,y3; cin>>x1>>y1>>x2>>y2>>x3>>y3; int ans; if(x1==x2&原创 2021-07-11 20:54:18 · 143 阅读 · 0 评论 -
Codeforces Round #722 (Div. 2)(ABCD)
A.Eshag Loves Big Arrays(贪心)统计最小的数出现次数为cnt 则答案为n-cnt因为每次都可以一个最小的数加一个大的数来消掉大的数#include<bits/stdc++.h>using namespace std;typedef long long ll;#define pii pair<int,int>const int N=1e5+10;void solve(){ map<int,int>m; int n; cin原创 2021-05-25 10:29:25 · 121 阅读 · 0 评论 -
Codeforces Round #719 (Div. 3)(EFG)
E. Arranging The Sheep最终答案就是移动到中间那只羊,羊是偶数的话就靠近中间任取一只就行。∗.∗...∗.∗∗*.*...*.**∗.∗...∗.∗∗羊都往第三只那里移动,即下标为7的那只羊,可以发现3会移动3步,1会移动4步,9移动1,10移动1.一共移动9步。且每只羊移动的步数就是与中间羊之间的.的数量#include<bits/stdc++.h>using namespace std;const int N=1e6+10;string s;int mai原创 2021-05-07 21:43:49 · 153 阅读 · 0 评论 -
Codeforces Round 108 (Div. 2) ABCD
A.Red and Blue Beans肯定是少的球带多的球,一个带多个。比如2 7 3 肯定是1 3 和1 4这样所以用大的/小的上取整,判断这个数是否小于等于d即可#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int main(){ int t; cin>>t; while(t--) { int a,b,c; cin>>a>>b>>c;原创 2021-05-02 11:00:26 · 96 阅读 · 0 评论 -
Codeforces Round #717 (Div. 2)(ABCD)
A. Tit for Tat从前往后枚举,把前面的数减到0,然后给最后一个数加上去。操作次数没了就停止#include<bits/stdc++.h>using namespace std;const int N=1e5+10;long long sum=1;bool vis[N];int a[N];int main(){ int t; cin>>t; while(t--) { int n,k,g=0; cin>>n>>k;原创 2021-04-21 23:57:05 · 250 阅读 · 2 评论 -
CF#683(Div.2) D. Catching Cheaters(dp)
原题链接题意:给你一个长度为n,m的字符串a,b。求a中任取一个子串C,和b中任取一个子串D。最大的 LCS(C,D)−len(C)−len(D)LCS(C,D)-len(C)-len(D)LCS(C,D)−len(C)−len(D)题解:设f[i][j]f[i][j]f[i][j]表示以a中以 i,b中以 j 结尾的子串的最大值f[i][j]=max(f[i−1][j−1]),0)+2 if原创 2020-11-16 22:30:23 · 116 阅读 · 0 评论 -
CF#677 (Div. 3) F. Zero Remainder Sum (dp)
原题链接题意:给你n*m的矩阵,k。求从每一行取不超过m/2(下取整)个数。最终和modk为0的最大和题解:首先对每一列进行dp,设f[j][cnt][t]f[j][cnt][t]f[j][cnt][t] 前 j 列,取cnt个数,modk为t的最大和。再对每一行进行dp,设dp[i][j]dp[i][j]dp[i][j] 前 i 行,modk为 j 最大和然后枚举前一行的模k后ja,和当前行的模k后jb。前i-1行最大和为dp[i−1][ja]dp[i-1][ja]dp[i−1][ja]原创 2020-10-21 19:41:57 · 198 阅读 · 0 评论 -
CF(Div. 1 + Div. 2) E. Carrots for Rabbits(优先队列+贪心)
原题链接题意:给你n个数,要你把n个数切成k个。求切后最小平方和。题解一开始就想着把每个数放进优先队列里,然后把最大的平分,再放回去。但这样是错的。如1 3 100 :33 33 34会更好。用优先队列维护结构体{a,b,c}。b存的是读入的数。a表示给这个数切(c刀-c+1刀)这个数的平方差值,c代表现在切的刀数。并对a进行大到小排序。反正就是一刀一刀的切,取差值最大的那个。#include<bits/stdc++.h>using namespace std;typedef原创 2020-10-20 10:51:01 · 141 阅读 · 0 评论 -
CF#672(Div.2) D. Rescue Nibel!(差分,离散化,组合数)
原题链接题意:有 n 栈灯 ,每栈灯在 [ l , r] 时间段内是开着的 ,现在需要选择 k 栈灯 ,使他们能在同一时间内打开 ,问有多少种选择方法 。题解:先离散化,差分,算出每个点覆盖的区间数量s[i] ,(s[左端点]++,s[右端点+1]–)然后对s求前缀和)并记录这个点含的左端点数量bb[i]。对于每一个点,求组合数的时候,每个方案必须包含至少一个左端点,这样就不会重复。即C(sum[i],k)−C(sum[i]−bb[i],k)C(sum[i],k)-C(sum[i]-bb[i],原创 2020-09-26 12:59:43 · 171 阅读 · 2 评论