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 ...
随机推荐
- Java基础——基本类型包装类
一.概述: 将基本数据类型封装成对象 优点: 可以在对象中定义更多的功能方法操作该数据 常见用法: 用于基本类型与字符串之间的转换 基本数据类型 包装类 byte Byte short Short i ...
- Java基础——方法重写
什么是方法重写? 子类中出现和父类中完全一样的方法声明 什么时候可以进行方法重写? 在子类需要父类的功能的同时,功能主体子类有自己的特有内容时,可以重写,一面沿袭了父类的功能一面又定义了子类特有的内容 ...
- JavaWeb——Maven使用
5.1.创建一个javaWeb项目 选择使用摸版:勾选Create from archetype选项 选择相应的模板:选择org.apache.maven.archetypes:maven-arche ...
- 说说UI自动化中的PO模式
PO模式,全称PageObject模式,即页面对象模式.将页面定位与业务操作分离. po模式有以下几个优点: 1.易读性好 2.扩展性高 3.复用性强 4.维护性好 5.代码冗余率低 了解了po模式及 ...
- Skye无人机刷Betaflight详细图文教程
前言 首先十分感谢B站TASKBL up主的视频教程以及他的耐心指导,视频链接Skye 原机主板刷BetaFlight 参考教程_哔哩哔哩_bilibili.整个改造过程耗时三天,现把改造过程以及遇 ...
- 数据库篇:mysql锁详解
前言 sql事务的执行,如果需要锁定数据进行更新操作,则必定离不开锁 共享锁和排他锁 表锁 行锁 Record Lock 间隙锁 Gap Lock 行锁+间隙锁 Next-Key Lock 加锁场景( ...
- 什么是springcloud?springcloud断路器的作用是什么?springcloud的核心组件有什么?
一.什么是springcloud 1.springcloud概述 Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案. Sp ...
- css添加全部省略号的方式
https://css-tricks.com/line-clampin/ 框架Clamp:https://github.com/josephschmitt/Clamp.js
- 什么是 spring 的内部 bean?
只有将 bean 用作另一个 bean 的属性时,才能将 bean 声明为内部 bean. 为了定义 bean,Spring 的基于 XML 的配置元数据在 <property> 或 &l ...
- mac-变量
去除每次都要source : 加入: