Edu CF 103 Div. 2 (A. K-divisible Sum, B. Inflation贪心),被黑客攻了,,惨掉rank, 思维除法与取余, 不太擅长的类型
2021-01-29
题目链接: Educational Codeforces Round 103 (Rated for Div. 2)
题目
You are given two integers nn and kk.
You should create an array of nn positive integers a1,a2,…,ana1,a2,…,an such that the sum (a1+a2+⋯+an)(a1+a2+⋯+an) is divisible by kk and maximum element in aa is minimum possible.
What is the minimum possible maximum element in aa?
The first line contains a single integer tt (1≤t≤10001≤t≤1000) — the number of test cases.
The first and only line of each test case contains two integers nn and kk (1≤n≤1091≤n≤109; 1≤k≤1091≤k≤109).
For each test case, print one integer — the minimum possible maximum element in array aa such that the sum (a1+⋯+an)(a1+⋯+an) is divisible by kk.
4
1 5
4 3
8 8
8 17
5
2
1
3
In the first test case n=1n=1, so the array consists of one element a1a1 and if we make a1=5a1=5 it will be divisible by k=5k=5 and the minimum possible.
In the second test case, we can create array a=[1,2,1,2]a=[1,2,1,2]. The sum is divisible by k=3k=3 and the maximum is equal to 22.
In the third test case, we can create array a=[1,1,1,1,1,1,1,1]a=[1,1,1,1,1,1,1,1]. The sum is divisible by k=8k=8 and the maximum is equal to 11.
思路:
大致看来,分三个情况: (带==>就是说的结果)
1. n=k, ==>1
2. n<k,数大被分的少 , 结果就是, (k-1) / 2 + 1
比如9~16被分为8份==>2; 17~24被分8份==>3
3. n>k, 数小被分的多, 这里还分两种情况
1). n是k的整倍数 ==> 1, 可以与第一种情况合并.
2). else ==>2 比如 n = 3时, k=4 ->1, 1, 2, 2;
k=5 ->1, 1, 2, 2, 3 把最后的3补到前面->1, 2, 2, 2, 2 化简-> 1, 1, 1, 1, 2
k=6, ==> n是k的倍数 ==>1
总而言之, 1和2就能搞定, 所以结果==>2
AC代码
#include <iostream> using namespace std;int main()
{
int t;
cin >> t;
while(t --)
{
int n, num;
cin >> n >> num; if(n % num == 0)
cout << 1 << endl;
else
{
int ans;
if(n > num)
ans = 2;
else
ans = (num + n - 1) / n;
cout << ans << endl;
}
cout << endl;
}
return 0;
}
You have a statistic of price changes for one product represented as an array of nn positive integers p0,p1,…,pn−1p0,p1,…,pn−1, where p0p0 is the initial price of the product and pipi is how the price was increased during the ii-th month.
Using these price changes you are asked to calculate the inflation coefficients for each month as the ratio of current price increase pipi to the price at the start of this month (p0+p1+⋯+pi−1)(p0+p1+⋯+pi−1).
Your boss said you clearly that the inflation coefficients must not exceed kk %, so you decided to increase some values pipi in such a way, that all pipi remain integers and the inflation coefficients for each month don't exceed kk %.
You know, that the bigger changes — the more obvious cheating. That's why you need to minimize the total sum of changes.
What's the minimum total sum of changes you need to make all inflation coefficients not more than kk %?
The first line contains a single integer tt (1≤t≤10001≤t≤1000) — the number of test cases.
The first line of each test case contains two integers nn and kk (2≤n≤1002≤n≤100; 1≤k≤1001≤k≤100) — the length of array pp and coefficient kk.
The second line of each test case contains nn integers p0,p1,…,pn−1p0,p1,…,pn−1 (1≤pi≤1091≤pi≤109) — the array pp.
For each test case, print the minimum total sum of changes you need to make all inflation coefficients not more than kk %.
2
4 1
20100 1 202 202
3 100
1 1 1
99
0
In the first test case, you can, for example, increase p0p0 by 5050 and p1p1 by 4949 and get array [20150,50,202,202][20150,50,202,202]. Then you get the next inflation coefficients:
- 5020150≤11005020150≤1100;
- 20220150+50≤110020220150+50≤1100;
- 20220200+202≤110020220200+202≤1100;
In the second test case, you don't need to modify array pp, since the inflation coefficients are already good:
- 11≤10010011≤100100;
- 11+1≤10010011+1≤100100;
题意:
从a2开始,每个值的计算方式为:pi=ai/(a0+a1+a2+...+ai-1)
使得每个pi都<=k/100的最少增加值之和
可惜啊, 做了一半困得没再做, 当时代码出了点bug, 点写在代码里了
AC代码
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll p[110], bottom, top, res; int main()
{
int t;
cin >> t;
while(t --)
{
int n, k;
res = 0;
cin >> n >> k;
for(int i = 0 ; i< n; i ++)
cin >> p[i]; bottom = 0;
for(int i = 0; i < n - 1; i ++)
{
bottom += p[i];
top = p[i + 1];
if(bottom * k < 100 * top)
{
ll d = 100 * top / k - bottom;//这里切记用long long
if(100 * top % k != 0)//有余数+1
d ++;
res += d;
bottom += d;
}
}
cout << res << endl;
}
return 0;
}
Edu CF 103 Div. 2 (A. K-divisible Sum, B. Inflation贪心),被黑客攻了,,惨掉rank, 思维除法与取余, 不太擅长的类型的更多相关文章
- Codeforces Round #667 (Div. 3) D. Decrease the Sum of Digits (贪心)
题意:给你一个正整数\(n\),每次可以对\(n\)加一,问最少操作多少次是的\(n\)的所有位数之和不大于\(s\). 题解:\(n\)的某个位置上的数进位,意味这后面的位置都可以被更新为\(0\) ...
- CF #376 (Div. 2) C. dfs
1.CF #376 (Div. 2) C. Socks dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
- CF #374 (Div. 2) D. 贪心,优先队列或set
1.CF #374 (Div. 2) D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- CF #371 (Div. 2) C、map标记
1.CF #371 (Div. 2) C. Sonya and Queries map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...
- CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组
题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有 ...
- CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组(转)
转载自:http://www.cnblogs.com/icode-girl/p/5744409.html 题目链接:CF #365 (Div. 2) D - Mishka and Interestin ...
- 最短路 Codeforces Round #103 (Div. 2) D. Missile Silos
题目传送门 /* 最短路: 不仅扫描边,还要扫描点:点有两种情况,一种刚好在中点,即从u,v都一样,那么最后/2 还有一种是从u,v不一样,两种的距离都是l 模板错了,逗了好久:( */ #inclu ...
随机推荐
- RESTful API设计规范总结
RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计. 它的大原则容易把握,但是细节不容易做对.本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API. ...
- Arcgis 离线部署api 4.x的两种本地部署方法!
引言:本文用的是api4.6版本 方法一 拷贝api进去tomcat服务器用绝对地址引用 首先将下载好的api放入Tomcat服务中的Webapp下: 1 可以打开下载好的的 api46/arcg ...
- Java进程占用系统内存较高的排查方法
1.通过top 查看具体是哪个进程占用内存较多 Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.0 us ...
- SQL语句优化、mysql不走索引的原因、数据库索引的设计原则
SQL语句优化 1 企业SQL优化思路 1.把一个大的不使用索引的SQL语句按照功能进行拆分 2.长的SQL语句无法使用索引,能不能变成2条短的SQL语句让它分别使用上索引. 3.对SQL语句功能的拆 ...
- 你也可以很硬核「GitHub 热点速览 v.22.13」
本周特推介绍了一个非常易上手,操作难度(主要难度在于机件购买)极低的硬件项目,SmartKnob 让你有个可玩性极高的控制仪.本周特推另外一个项目则是一个安全项目,打破你对 URL 是可靠.安全的认知 ...
- Kerberos基本原理、安装部署及用法
1. 概述 Kerberos是一种认证机制. 目的是,通过密钥系统为客户端/服务器应用程序提供强大的认证系统:保护服务器防止错误的用户使用,同时保护它的用户使用正确的服务器,即支持双向验证:Kerbe ...
- 利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
ps -ef (system v 输出)ps -aux bsd 格式输出ps -ef | grep pid
- Oracle :value too large for column "SCHEMA"."TABLE"."COLUMN" (actual: 519, maximum: 500)的解决方案
原因:我是使用 CREATE TABLE XXX AS subquery 进行创建的数据表,主要是将相关的数据聚合在一起,然后通过导出为SQL脚本文件,进行导入到新库中,导致部分INSERT INTO ...
- kafka中的broker 是干什么的?
broker 是消息的代理,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一 ...
- Java如何声明变量?JS如何声明变量?
Java采用强类型变量检查,像C语言一样.所有变量在编译之前必须声明,而且不能使用没有赋值的变量.例如:int x;x=1234;char y='F';其中X=1234说明是一个整数,Y='F'说明是 ...