第一次能和div1的大神们一起比赛,甚是紧张。只做出来三题,先贴一下吧。
Problem A New Year Candles
题意:有若干新蜡烛,用完两个旧蜡烛就能造一个新蜡烛,每个蜡烛能燃烧1小时。问最多能燃烧多少个小时?
思路:这道题直接爆,虽然有点傻但是比赛的时候保险。
代码如下:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <algorithm> 6 #include <utility> 7 #include <queue> 8 #include <stack> 9 #include <vector> 10 #define ll long long 11 #define INF 0x7fffffff 12 #define eps 1E-6 13 14 using namespace std; 15 16 int main() 17 { 18 // freopen("in.txt", "r", stdin); 19 int a, b; 20 while(scanf("%d%d", &a, &b)!=EOF){ 21 int cnt = 0, old = 0; 22 while(a){ 23 cnt++; 24 a--; 25 old++; 26 if(old == b){ 27 a++; 28 old = 0; 29 } 30 } 31 printf("%d ", cnt); 32 } 33 return 0; 34 }
Problem B New Year Present
题意:有若一个序列,然后地板上有一排空钱包。你需要的是操控一个机器人,最终是钱包中的值符合这个序列,机器人能执行三个操作L向左一格,R向右一格,P放一枚硬币。P操作不能连续执行两次。
思路:标准的模拟题。让机器人来回走若是还有钱包没投满就继续走,每走到一个没满的钱包就投一个硬币,一边走一边输出序列。
代码如下:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <algorithm> 6 #include <utility> 7 #include <queue> 8 #include <stack> 9 #include <vector> 10 #define ll long long 11 #define INF 0x7fffffff 12 #define eps 1E-6 13 #define LEN 1000100 14 15 using namespace std; 16 17 int n, a[LEN]; 18 19 int main() 20 { 21 // freopen("in.txt", "r", stdin); 22 23 while(scanf("%d", &n)!=EOF){ 24 ll sum = 0; 25 for(int i=0; i<n; i++){ 26 scanf("%d", &a[i]); 27 sum += a[i]; 28 } 29 for(int cc = 0; sum; cc++){ 30 for(int i=0; i<n; i++){ 31 if(cc!=0 && i==0)continue; 32 if(a[i]){ 33 printf("P"); 34 a[i]--; 35 sum--; 36 if(sum==0)goto A; 37 } 38 if(i!=n-1)printf("R"); 39 else printf("L"); 40 } 41 for(int i=n-2; i>=0; i--){ 42 if(a[i]){ 43 printf("P"); 44 a[i]--; 45 sum--; 46 if(sum==0)goto A; 47 } 48 if(i!=0)printf("L"); 49 else printf("R"); 50 } 51 } 52 A:printf(" "); 53 } 54 return 0; 55 }
Problem C New Year Ratings Change
题意:有若干个人每个人有不同的需求,然后你分配满足这些人的需求,但是没有两个人的分配的会是相同。最后输出每一个分配的实际值。
思路:读进来每个人标记(序号,需求,实际分配)首先按照需求排序,在设计一个loc表示当前分配到的最低值。每次判断若是需求小于loc则直接分配。否则loc赋值为需求。最后按照序号排序输出。
代码如下:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <algorithm> 6 #include <utility> 7 #include <queue> 8 #include <stack> 9 #include <vector> 10 #define ll long long 11 #define INF 0x7fffffff 12 #define eps 1E-6 13 #define LEN 1000100 14 15 using namespace std; 16 17 typedef struct { 18 int x, rat, get; 19 }P; 20 P s[LEN]; 21 int n; 22 23 bool cmp1(P a, P b){return a.rat<b.rat;} 24 bool cmp2(P a, P b){return a.x<b.x;} 25 26 int main() 27 { 28 // freopen("in.txt", "r", stdin); 29 30 while(scanf("%d", &n)!=EOF){ 31 for(int i=0; i<n; i++){ 32 s[i].x = i; 33 scanf("%d", &s[i].rat); 34 } 35 sort(s, s+n, cmp1); 36 int loc = s[0].rat; 37 s[0].get = loc; 38 for(int i=1; i<n; i++){ 39 if(s[i].rat <= loc){ 40 loc++; 41 }else{ 42 loc = s[i].rat; 43 } 44 s[i].get = loc; 45 } 46 sort(s, s+n, cmp2); 47 for(int i=0; i<n; i++){ 48 printf("%d", s[i].get); 49 if(i!=n-1)printf(" "); 50 } 51 printf(" "); 52 } 53 return 0; 54 }