- 博客(6)
- 收藏
- 关注
原创 Codeforces Dolce Vita
原题链接 看的别人的写出来的qwq 原题解 思路 由于天数范围太大,遍历天数不现实,所以可以从店数入手,遍历店的话就是看每个店最多可以供我们买多少天的糖,这里就是看前i个店可以买多少天的糖,设总钱数为m,前i个店可以买tit_iti天的糖,第i个店为aia_iai,则有a1a_1a1+(tit_iti-1)+a2a_2a2+(tit_iti-1)+…aia_iai+(tit_iti-1)=m,所以有i*tit_iti=(sum-pip_ipi)+i,tit_iti=(sum-pi
2022-05-08 09:32:17
84
原创 Codeforces Round #Pi (Div. 2) Geometric Progression
题目链接 思路 对于成等比的三个数取中间的那个数,看看他左边有几个a[i]/k在看看右边有几个a[i]×k将数量相乘即可 代码 #include<iostream> #include<unordered_map> using namespace std; const int N=2e5+10; typedef long long LL; LL a[N]; int s[N]; int s2[N]; int n,k; int idx; unordered_map<LL,LL
2022-04-02 16:40:26
238
原创 Codeforce #764 Palindromes Coloring
题目链接 思路 首先统计每个字母出现的个数,然后遍历每个字母统计出现的对数,然后用对数除以k就是平均的长度,如果有单个字母出现并且数量大于k的话可以单个字母放到中间 平均长度加1 由于染色后可以互换位置所以不用担心构不成回文串的情况 代码 #include<cstdio> #include<cstring> using namespace std; const int N=2e5+10; char str[N]; int cnt[30]; int main() { int
2022-03-27 09:29:56
121
原创 codeforces #776 DIV + MOD
题目链接 思路 这个可以大大题分为两种情况,一种是l到r没有a的倍数另一种是l到r存在a的倍数,对于第一种分析一下就知道去r就是最大的,对于第二种找一个余数最大(余数最大为a-1)的即为(r/a-1)×a+a-1和位于r上的比较大小,前提是 l 必须小于(r/a-1)×a+a-1不然取不到 代码 #include<cstdio> using namespace std; int max(int x,int y) { return x>y?x:y; } int main() {
2022-03-24 20:43:23
159
原创 codeforce #776 Weight of the System of Nested Segments
原题链接 思路 给定m个点要选2n个点使得所有点的权值和最小 可将所有点按照权值大小排序,从前往后选2n个点即可* 代码 #include<bits/stdc++.h> using namespace std; struct Node { int position,weight,id; }; void solve() { int n,m; cin>>n>>m; vector<Node> p(m); for(int
2022-03-24 20:28:29
337
原创 codeforce #776 div3 1650D - Twist the Permutation
题目链接 思路 由于每次都是每次都是将第i个位置放到第一个位置上其余的元素向后移动i+1到n元素位置不变 操作次数按照1~n所以可倒叙还原 从i=n开始计算到i=1 每次从第一个个位置开始向前找到值为i的元素记录这个元素距离第一个位置的距离(这个距离就代表第i个元素操作了几次) 所以需要将 1到i 上的元素整体连接到到 i+1到n 后面去,顺便把第i个元素的操作次数用数组记录一下 #include<iostream> #include<cstdio> #include<cstr
2022-03-24 20:12:57
455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人