[codeforces][Educational Codeforces Round 53 (Rated for Div. 2)D. Berland Fair]
http://codeforces.com/problemset/problem/1073/D
题目大意:有n个物品(n<2e5)围成一个圈,你有t(t<1e18)元,每次经过物品i,如果身上的钱可以购买该物品就直接购买,直到一件物品都不能购买,求一共可以购买多少件物品.
题目分析:由于t的数量级达到了1e18,所以不可能直接进行暴力模拟,这个时候就要想到周期性地模拟.
题解:每次遍历一下1~n这n个物品,然后计算出可以取的物品数以及价值,然后用剩下的钱除以这个价值,得到可以进行的轮数,累加到结果中,然后继续遍历..继续累加...这个方法看起来还是很暴力,但是可以证明最多进行logTl轮,也就是总时间复杂度为O(N*logT).下面是轮数为logT的证明..
复杂度的证明:遍历之前的钱数记为Tcur,可以取走的物品价值记为C,遍历并且累加之后的钱数记为Tnex,则有Tnex=Tcur%C,则可以得到Tnex<C&&Tnex<=Tcur-C,所以Tnex<Tcur/2,所以可以得到能进行的轮数也就是logT,总的复杂度也就是O(N*logT)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,t,qwq[];
ll minn=1e12;
int main(){
//freopen("in.txt","r",stdin);
cin>>n>>t;
for(int i=;i<n;i++){
scanf("%lld",&qwq[i]);
minn=min(minn,qwq[i]);
}
ll ans=;
while(t>=minn){
ll k=;
ll kk=;
for(int i=;i<n;i++){
if(t>=qwq[i]){
t-=qwq[i];
k++;
kk+=qwq[i];
}
}
ans+=k+(t/kk)*k;
t%=kk;
}
cout << ans << endl;
return ;
}
[codeforces][Educational Codeforces Round 53 (Rated for Div. 2)D. Berland Fair]的更多相关文章
- Educational Codeforces Round 53 (Rated for Div. 2) D. Berland Fair
题意:一个人 有T块钱 有一圈商店 分别出售 不同价格的东西 每次经过商店只能买一个 并且如果钱够就必须买 这个人一定是从1号店开始的!(比赛的时候读错了题,以为随意起点...)问可以买多少个 ...
- Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)
这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...
- Educational Codeforces Round 53 (Rated for Div. 2)
http://codeforces.com/contest/1073 A. Diverse Substring #include <bits/stdc++.h> using namespa ...
- Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum (数位dp求和)
题目链接:https://codeforces.com/contest/1073/problem/E 题目大意:给定一个区间[l,r],需要求出区间[l,r]内符合数位上的不同数字个数不超过k个的数的 ...
- Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum
https://codeforces.com/contest/1073/problem/E 题意 求出l到r之间的符合要求的数之和,结果取模998244353 要求:组成数的数位所用的数字种类不超过k ...
- Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot 【二分 + 尺取】
任意门:http://codeforces.com/contest/1073/problem/C C. Vasya and Robot time limit per test 1 second mem ...
- Educational Codeforces Round 53 (Rated for Div. 2)G. Yet Another LCP Problem
题意:给串s,每次询问k个数a,l个数b,问a和b作为后缀的lcp的综合 题解:和bzoj3879类似,反向sam日神仙...lcp就是fail树上的lca.把点抠出来建虚树,然后在上面dp即可.(感 ...
- Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot
题意:给出一段操作序列 和目的地 问修改(只可以更改 不可以删除或添加)该序列使得最后到达终点时 所进行的修改代价最小是多少 其中代价的定义是 终点序号-起点序号-1 思路:因为代价是终点序号减去 ...
- Educational Codeforces Round 53 (Rated for Div. 2) A Diverse Substring
传送门 https://www.cnblogs.com/violet-acmer/p/10163375.html 题意: 给出串是多态的定义“长度为 n 的串 s ,当串 s 中所有字母出现的次数严格 ...
随机推荐
- react router @4 和 vue路由 详解(五)react怎么通过路由传参
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 7.react怎么通过路由传参? a.通配符传参(刷新页面数据不丢失) //在定义路由的 ...
- 记录一次面试中的HTTP请求相关问题
1.HTTP中的状态码分别代表什么 比较基础,自行百度. 2.HTTP请求,响应头部content-length用来做什么的 答:Content-Length首部告诉浏览器报文中实体主体的大小.这 ...
- Ie11 的改变
摘录地址: http://www.4fang.net/content.jsp?id=30537 微软在上周刚刚发布了用于Windows 8.1上的首个Internet Explorer 11的 ...
- day03 is 与== 常量
is身份运算:比较的是id是否相等 ==判断值是否相等 ... 值相等id不一定相等 >>>x=1111111111111111111111111111111111111111111 ...
- UVa 11039 - Building designing 贪心,水题 难度: 0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- day31-python阶段性复习五
打印目录下所有文件 os 模块 os.listdir(‘/home’) 列出目录下所有文件 os.path.isdir(‘/home’) 判断一个文件是不是一个目录 os.path.isfile(‘/ ...
- System.properties
win: len:54java.runtime.name=Java(TM) SE Runtime Environment sun.boot.library.path=D:\Java\jdk1.8. ...
- HTML编辑笔记4
1.CSS(层叠样式表) 2.CSS语法 选择器{ 属性名1:属性值1: 属性名2:属性值2: } 3.引用CSS的三种方式 第一种:行内样式 例:<a style="color:re ...
- 【阅读笔记】《C程序员 从校园到职场》第二章 学校到职场
一.代码规范: 1.变量命名(让人一眼看它是什么意思,要做什么操作),定义并初始化 2.函数命名规范(函数的功能)在主函数之前进行声明. 在实际项目中,一般不在函数调用者的内部来对被调函数进行声明,而 ...
- vue-2-计算属性和观察者
<div id="example"> <p>Original message: "{{ message }}"</p> &l ...