codeforces Round#377
codeforces Round#377
表示还是只会水题:虽然这次做出了三题,但是前三题都是思维题吧,到了D题就不会了,还好吧,昨晚涨了100多分;
A. Buy a Shovel
题意:有若干个单位是10 的和一个单位是m的硬币,然后为刚好买多少个n才能使得不用找零;
思路:枚举,当n * i 是10的倍数或者 % 10 == m 的时候跳出;
#include
using namespace std;
typedef long long ll;
const int maxn = 100000 + 10;
int main()
{
ll n,m;
while( ~ scanf("%I64d%I64d",&n,&m) )
{
for(ll i = 1;
i
B. Cormen — The Best Friend Of a Man
题意:输入一个n,m; 然后要使得大小为n的数组所有相邻的两个数之和大于等于m;求使得原来的数组实现这个功能要至少增加多少个单位,并输出;
思路:直接暴力,看两个相邻的两个数之和是否大于等于m,不是的就对后面的进行变化
#include
using namespace std;
typedef long long ll;
const int maxn = 100000 + 10;
int a[maxn];
int main()
{
ll n,m;
while( ~ scanf("%I64d%I64d",&n,&m) )
{
for(int i = 1;
i <= n ;
i ++)
{
scanf("%d",&a[i]);
}
ll ans = 0;
for(int i = 2;
i <= n ;
i ++)
{
if(a[i] + a[i - 1] < m)
{
ans += m - a[i] - a[i - 1];
a[i] = m - a[i - 1];
}
}
cout << ans << endl;
for(int i = 1;
i <= n ;
i ++)
{
if(i < n)
cout << a[i] <<" ";
else cout << a[i] << endl;
}
}
return 0;
}
C. Sanatorium
题意:输入的是早餐,中餐,晚餐的数量,可以在任意时间来或者离开,然后求出它他最少误了多少餐?
思路:列举所有正常的情况:1,0,0;0,1,0 ;0,0,1;1,1,0;1,0,1; 0,1,1; 1,1,1;
所以对于所有的早餐,中餐,晚餐,所有的情况都是一样的,所以先对他们进行一个从小到大的排序,再对两个小的补数进行了;
#include
using namespace std;
typedef long long ll;
const int maxn = 100000 + 10;
int a[maxn];
int main()
{
ll n,m,k;
while( ~ scanf("%I64d%I64d%I64d",&n,&m,&k) )
{
if(m == n && m == k)
cout << 0 << endl;
else
{
ll c = max(n,max(m,k)),a = min(n,min(m,k)), b = n + m + k - a - c;
if(a == b || b == c)
{
if(a == b)
cout << 2*c - a - b - 2 << endl;
else cout << b - a - 1 << endl;
}
else cout << 2 * c - a - b- 2<< endl;
}
}
return 0;
}
【codeforces Round#377】
推荐阅读
- codeforces B. Young Explorers
- codeforces C. Mere Array
- codeforces D. Omkar and Bed Wars
- codeforces C. Omkar and Waterslide
- codeforces B. Omkar and Infinity Clock
- codeforces B. Ternary Sequence
- Codeforces580|Codeforces580 D. Kefa and Dishes(状压dp)
- Codeforces22|Codeforces22 D. Segments(贪心)
- codeforces|codeforces 667C C. Reberland Linguistics(dp)
- Codeforces|Codeforces Round #263 Div.1 B Appleman and Tree --树形DP【转】