Problem A Lucky Year

题目传送门[here]

  题目大意是说,只有一个数字非零的数是幸运的,给出一个数,求下一个幸运的数是多少。

  这个幸运的数不是最高位的数字都是零,于是只跟最高位有关,只保留最高位,然后加一求差就是答案。

Code

 /**
* Codeforces
* Problem#808A
* Accepted
* Time:15ms
* Memory:0k
*/
#include<iostream>
#include<cstdio>
#include<ctime>
#include<cctype>
#include<cstring>
#include<cstdlib>
#include<fstream>
#include<sstream>
#include<algorithm>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<vector>
#include<stack>
using namespace std;
typedef bool boolean;
#define inf 0xfffffff
#define smin(a, b) a = min(a, b)
#define smax(a, b) a = max(a, b)
#define max3(a, b, c) max(a, max(b, c))
#define min3(a, b, c) min(a, min(b, c))
template<typename T>
inline boolean readInteger(T& u){
char x;
int aFlag = ;
while(!isdigit((x = getchar())) && x != '-' && x != -);
if(x == -) {
ungetc(x, stdin);
return false;
}
if(x == '-'){
x = getchar();
aFlag = -;
}
for(u = x - ''; isdigit((x = getchar())); u = (u << ) + (u << ) + x - '');
ungetc(x, stdin);
u *= aFlag;
return true;
} int power[]; int n;
int bits = ; inline void init() {
power[] = ;
for(int i = ; i <= ; i++)
power[i] = power[i - ] * ;
} inline void solve() {
readInteger(n);
while(power[bits] <= n) bits++;
int high = n - n % power[bits - ];
int next = high + power[bits - ];
printf("%d\n", next - n);
} int main() {
init();
solve();
return ;
}

Problem A


Problem B Average Sleep Time

题目传送门[here]

  题目大意是说,给出n个数ai和k,再得到n - k + 1个新数,第i个新数为,再求这几个新数的平均数。

  有两种方法,第一种是前缀和暴力乱搞。第二种是特殊处理两段的数被求和的次数,中间的都是k,然后就可以求和了,然后就可以求平均数。

  我呢,用的第一种方法,因为懒。

Code

 /**
* Codeforces
* Problem#808B
* Accepted
* Time:30ms
* Memory:2400k
*/
#include<iostream>
#include<cstdio>
#include<ctime>
#include<cctype>
#include<cstring>
#include<cstdlib>
#include<fstream>
#include<sstream>
#include<algorithm>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<vector>
#include<stack>
using namespace std;
typedef bool boolean;
#define inf 0xfffffff
#define smin(a, b) a = min(a, b)
#define smax(a, b) a = max(a, b)
#define max3(a, b, c) max(a, max(b, c))
#define min3(a, b, c) min(a, min(b, c))
template<typename T>
inline boolean readInteger(T& u){
char x;
int aFlag = ;
while(!isdigit((x = getchar())) && x != '-' && x != -);
if(x == -) {
ungetc(x, stdin);
return false;
}
if(x == '-'){
x = getchar();
aFlag = -;
}
for(u = x - ''; isdigit((x = getchar())); u = (u << ) + (u << ) + x - '');
ungetc(x, stdin);
u *= aFlag;
return true;
} #define LL long long int n, k;
LL *sum;
int* a;
double w; inline void init() {
readInteger(n);
readInteger(k);
w = n - k + ;
sum = new LL[(const int)(n + )];
a = new int[(const int)(n + )];
sum[] = ;
for(int i = ; i <= n; i++) {
readInteger(a[i]);
sum[i] = sum[i - ] + a[i];
}
} LL s = ;
double avg = 0.0; inline void solve() {
for(int i = k; i <= n; i++) {
s += sum[i] - sum[i - k];
}
avg = s / w;
printf("%.9lf", avg);
} int main() {
init();
solve();
return ;
}

Problem B


Problem C Tea Party

题目传送门[here]

  语文不好,题目大意就不给了(显然是太懒了),去看原题吧,看不懂扔给谷歌机翻。

  首先呢给每人达到最低要求的茶叶量,这时判一下是否合法。(然后跳过一个if吧)。

  接着很容易想到一个符合题意的贪心,给茶杯最大的人加尽可能多的茶叶(能加满就加满),如果还有剩的,就给茶杯第二大的人加....

  这个显然是合法,不会出现让顾客不满意的情况。

Code

 /**
* Codeforces
* Problem#808C
* Accepted
* Time:15ms
* Memory:0k
*/
#include<iostream>
#include<cstdio>
#include<ctime>
#include<cctype>
#include<cstring>
#include<cstdlib>
#include<fstream>
#include<sstream>
#include<algorithm>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<vector>
#include<stack>
using namespace std;
typedef bool boolean;
#define inf 0xfffffff
#define smin(a, b) a = min(a, b)
#define smax(a, b) a = max(a, b)
#define max3(a, b, c) max(a, max(b, c))
#define min3(a, b, c) min(a, min(b, c))
template<typename T>
inline boolean readInteger(T& u){
char x;
int aFlag = ;
while(!isdigit((x = getchar())) && x != '-' && x != -);
if(x == -) {
ungetc(x, stdin);
return false;
}
if(x == '-'){
x = getchar();
aFlag = -;
}
for(u = x - ''; isdigit((x = getchar())); u = (u << ) + (u << ) + x - '');
ungetc(x, stdin);
u *= aFlag;
return true;
} typedef class Teacup {
public:
int val;
int pos; Teacup(int val = , int pos = ):val(val), pos(pos) { } boolean operator < (Teacup b) const {
if(val != b.val) return val > b.val;
return pos < b.pos;
}
}Teacup; int n;
int w;
int *a;
int s = ;
int *b;
Teacup* tc; inline void init() {
readInteger(n);
readInteger(w);
a = new int[(const int)(n + )];
b = new int[(const int)(n + )];
for(int i = ; i <= n; i++) {
readInteger(a[i]);
b[i] = (a[i] + ) / ;
s += b[i];
}
} inline void solve() {
if(s > w) {
puts("-1");
return;
}
w -= s;
tc = new Teacup[(const int)(n + )];
for(int i = ; i <= n; i++)
tc[i] = Teacup(a[i], i);
sort(tc + , tc + n + );
int i = ;
while(w) {
i++;
int delta = min(w, tc[i].val - b[tc[i].pos]);
b[tc[i].pos] += delta;
w -= delta;
}
for(int i = ; i <= n; i++) {
printf("%d ", b[i]);
}
} int main() {
init();
solve();
return ;
}

Problem C

Educational Codeforces Round 21 Problem A - C的更多相关文章

  1. Educational Codeforces Round 21 Problem E(Codeforces 808E) - 动态规划 - 贪心

    After several latest reforms many tourists are planning to visit Berland, and Berland people underst ...

  2. Educational Codeforces Round 21 Problem D(Codeforces 808D)

    Vasya has an array a consisting of positive integer numbers. Vasya wants to divide this array into t ...

  3. Educational Codeforces Round 21 Problem F (Codeforces 808F) - 最小割 - 二分答案

    Digital collectible card games have become very popular recently. So Vova decided to try one of thes ...

  4. Educational Codeforces Round 21

    Educational Codeforces Round 21  A. Lucky Year 个位数直接输出\(1\) 否则,假设\(n\)十进制最高位的值为\(s\),答案就是\(s-(n\mod ...

  5. Educational Codeforces Round 21 D.Array Division(二分)

    D. Array Division time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...

  6. Educational Codeforces Round 21(A.暴力,B.前缀和,C.贪心)

    A. Lucky Year time limit per test:1 second memory limit per test:256 megabytes input:standard input ...

  7. Educational Codeforces Round 32 Problem 888C - K-Dominant Character

    1) Link to the problem: http://codeforces.com/contest/888/problem/C 2) Description: You are given a ...

  8. CF Educational Codeforces Round 21

    A. Lucky Year time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  9. Educational Codeforces Round 21 A-E题题解

    A题      ............太水就不说了,贴下代码 #include<string> #include<iostream> #include<cstring& ...

随机推荐

  1. HDU - 5969 最大的位或 想法题

    http://acm.hdu.edu.cn/showproblem.php?pid=5969 (合肥)区域赛签到题...orz 题意:给你l,r,求x|y的max,x,y满足l<=x<=y ...

  2. Hive和Sqoop测试数据

    测试数据以Oracle数据库自带scott用户emp和dept表为准: 一.MySQL数据库创建的emp和dept表语法及数据: drop table if exists dept;create ta ...

  3. python2.7+pyqt4实现记事本基本功能

    记事本程序: # coding:utf-8 import sys from PyQt4.QtGui import QMainWindow from PyQt4.QtGui import QApplic ...

  4. 建立一个更高级别的查询 API:正确使用Django ORM 的方式(转)

    add by zhj: 本文作者是DabApps公司的技术主管,作者认为在view中直接使用Django提供的ORM查询方法是不好的,我对此并不赞同,可能作者 写这篇文章是给Django的初学者看,所 ...

  5. 帝国cms调用最新文章 利用文字调用标签phomenews

    最近建站时,朋友要求在头部用帝国cms调用最新文章,当时想了用灵动标签调用,但需要设置一个具体的栏目id,这样就不是调用全站的最新文章了,后面查看了一下标签说明,想到了文字调用标签phomenews. ...

  6. dedecms如何快速删除跳转的文章(记得清空内容回收站)

    网站内容更新多了,有些页面修改了,这时其他相关页面也要做相应的调整,不然可能会出现404错误,那么dedecms如何快速删除跳转的文章呢?下面就随ytkah一起操作一下吧 如上图所示,在“核心”(标示 ...

  7. adb server version (31) doesn't match this client (36)

    运行adb 命令的时候报错: C:\Users\Administrator>adb devices List of devices attachedadb server version (31) ...

  8. 如何正确的把 Java 数组 Array 转为列表 List

    最近想把 java 数组转成 List,网上普遍的答案都是 Arrays.asList: String[] a = new String[] {"hello", "wor ...

  9. 置换检验(Permutation Test)学习[转载]

    转自:https://www.cnblogs.com/bnuvincent/p/6813785.html http://www.bioinfo-scrounger.com/archives/564 1 ...

  10. 两个list对应元素相加

    a=[1,2,3] b=[4,5,6] 现将list a与 list b按位相加,其结果为[5,7,9] 方法一: c=[a[i]+b[i] for i in range(min(len(a),len ...