Codeforces Round #401 (Div. 2)解题报告

A - Shell Game

 1 #include <iostream>
 2 #include<bits/stdc++.h>
 3 #include <stack>
 4 #include <queue>
 5 #include <map>
 6 #include <set>
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <algorithm>
10 #include <math.h>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned long long ull;
14 int n,x;
15 int main()
16 {
17     scanf("%d %d",&n,&x);
18     n%=6;
19     if(x==0)
20     {
21         if(n==0||n==5)
22         {
23             printf("0\n");
24             return 0;
25         }
26         else if(n==1||n==2)
27         {
28             printf("1\n");return 0;
29         }
30         else
31         {printf("2\n");return 0;}
32
33     }
34     else if(x==1)
35     {
36         if(n==0||n==3)
37         {
38             printf("1\n");return 0;
39         }
40         else if(n==1||n==4)
41         {
42             printf("0\n");return 0;
43         }
44         else if(n==2||n==5)
45         {
46             printf("2\n");
47             return 0;
48         }
49     }
50     else if(x==2)
51     {
52         if(n==0||n==1)
53         {
54             printf("2\n");return 0;
55         }
56         else if(n==2||n==3)
57         {
58             printf("0\n");return 0;
59         }
60         else
61         {
62             printf("1\n");return 0;
63         }
64     }
65 }

B - Game of Credit Cards

 1 #include <iostream>
 2 #include<bits/stdc++.h>
 3 #include <stack>
 4 #include <queue>
 5 #include <map>
 6 #include <set>
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <algorithm>
10 #include <math.h>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned long long ull;
14 char x[1005],y[1005];
15 int  a[15],b[15];
16 int n;
17 int main()
18 {
19     scanf("%d",&n);
20     scanf("%s",x);
21     scanf("%s",y);
22     int i;
23     for(i=0;i<n;i++)
24     {
25         a[x[i]-‘0‘]++;
26         b[y[i]-‘0‘]++;
27     }
28     int cnt1=0,cnt2=0;
29     int he=0;
30     for(i=9;i>=0;i--)
31     {
32         he+=b[i];
33         he-=a[i];
34         if(he<0)
35         {
36             cnt1+=abs(he);
37             he=0;
38         }
39     }
40     he=0;
41     for(i=0;i<=8;i++)
42     {
43         he+=a[i];
44 //        if(i>0)
45 //        {
46             cnt2+=min(he,b[i+1]);
47             he-=min(he,b[i+1]);
48 //        }
49     }
50     printf("%d\n%d\n",cnt1,cnt2);
51 }

C - Alyona and Spreadsheet

 1 #include <iostream>
 2 #include<bits/stdc++.h>
 3 #include <stack>
 4 #include <queue>
 5 #include <map>
 6 #include <set>
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <algorithm>
10 #include <math.h>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned long long ull;
14 const int MAX=1e5+5;
15 vector <int> a[MAX],dp[MAX];
16 int n,m;
17 int len[MAX];
18 int main()
19 {
20     scanf("%d %d",&n,&m);
21     int i,j;
22     for(i=1;i<=n;i++)
23     {
24         a[i].resize(m+1);
25         for(j=1;j<=m;j++)
26         scanf("%d",&a[i][j]);
27     }
28     for(i=1;i<=n;i++)
29     {
30         dp[i].resize(m+1,1);
31         if(i-1)
32         for(j=1;j<=m;j++)
33             dp[i][j]+=((a[i][j]>=a[i-1][j])?dp[i-1][j]:0);
34         for(j=1;j<=m;j++)
35             len[i]=max(len[i],dp[i][j]);
36     }
37     int k;
38     scanf("%d",&k);
39     int l,r;
40     while(k--)
41     {
42         scanf("%d %d",&l,&r);
43         if(len[r]>=r-l+1)
44             printf("Yes\n");
45         else
46             printf("No\n");
47     }
48
49 }

D - Cloud of Hashtags

 1 #include <iostream>
 2 #include<bits/stdc++.h>
 3 #include <stack>
 4 #include <queue>
 5 #include <map>
 6 #include <set>
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <algorithm>
10 #include <math.h>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned long long ull;
14 const int MAXN=500005;
15 string str[MAXN];
16 void solve(int l,int r,int d)
17 {
18     for(int i=l;i<=r;i++)
19     {
20         if(i==l)
21         {
22             if((int)str[i].size()==d)l++;
23             continue;
24         }
25         if((int)str[i].size()==d || str[i][d]<str[i-1][d])
26         {
27             for(int j=l;j<i;j++)
28                 while((int)str[j].size()>d)str[j].pop_back();
29             l=i--;
30         }
31     }
32     for(int i=l,j=l;i<=r;i=j)
33     {
34         while(j<=r && str[j][d]==str[i][d])j++;
35         solve(i,j-1,d+1);
36     }
37 }
38 int main()
39 {
40     ios::sync_with_stdio(false);
41     cin.tie(NULL);
42     int n;
43     cin>>n;
44     for(int i=1;i<=n;i++)
45         cin>>str[i];
46     solve(1,n,0);
47     for(int i=1;i<=n;i++)
48         cout<<str[i]<<"\n";
49     return 0;
50 }

明天一早坐飞机,具体分析明天补上。

时间: 2024-10-29 19:06:48

Codeforces Round #401 (Div. 2)解题报告的相关文章

Codeforces Round #259 (Div. 2) 解题报告

终于重上DIV1了.... A:在正方形中输出一个菱形 解题代码: 1 // File Name: a.cpp 2 // Author: darkdream 3 // Created Time: 2014年08月01日 星期五 23时27分55秒 4 5 #include<vector> 6 #include<set> 7 #include<deque> 8 #include<stack> 9 #include<bitset> 10 #inclu

Codeforces Round #262 (Div. 2)解题报告

详见:http://robotcator.logdown.com/posts/221514-codeforces-round-262-div-2 1:A. Vasya and Socks   http://codeforces.com/contest/460/problem/A 有n双袜子,每天穿一双然后扔掉,每隔m天买一双新袜子,问最多少天后没有袜子穿.. 简单思维题:以前不注重这方面的训练,结果做了比较久,这种题自己边模拟边想.不过要多考虑trick ```c++ int main(){ i

Codeforces Round #616 (Div. 2)解题报告

Codeforces Round #616 (Div. 2)解题报告 A. Even But Not Even 找两个奇数就行了. #include<bits/stdc++.h> using namespace std; void solve() { int n; string s; cin >> n >> s; string ans = ""; for(int i = 0; i < n; i++) { if(int(s[i] - '0')%2

Codeforces Round #479 (Div. 3)解题报告

题目链接: http://codeforces.com/contest/977 A. Wrong Subtraction 题意 给定一个数x,求n次操作输出.操作规则:10的倍数则除10,否则减1 直接写,手速题,没啥好说的 B. Two-gram 题意 求出现次数最多的连续两个字符 还是签到题,我居然很麻烦地用了map,= =算了,思路畅通都无所谓了 #include <iostream> #include<stdio.h> #include<algorithm> #

Codeforces Round #515 (Div. 3) 解题报告(A~E)

题目链接:http://codeforces.com/contest/1066 A题: 题意:Vova想坐火车从1点到L点,在路上v的整数倍的点上分布着灯笼,而在路上从l到r处停着别的火车,它挡着Vova的视线使他看不到灯笼.给定L,v,l,r求Vova能看到的灯笼数. 分析:从1到x上所有的灯笼数量为x/v个.则路上所有的灯笼数为L/v个,被挡住的则为 r/v - (l-1)/v 个,相减即为答案. #include<iostream> #include<cstdio> #inc

Codeforces Round #390 (Div. 2) 解题报告

时隔一个月重返coding…… 期末复习了一个月也不亏 倒是都过了…… 就是计组61有点亏 复变68也太低了 其他都还好…… 假期做的第一场cf 三道题 还可以…… 最后room第三 standing383简直人生巅峰…… 看楼上楼下都是两道题的 如果A题不错那么多估计能进前300了吧…… 这场倒是把之前两场的分加回来了 开头不错 这个假期争取紫名~ A.Lesha and array splitting 把给定的数组分割成几个区间 要求各个区间和不能为0 一开始没注意到分割之后的区间重新合成之

Codeforces Round #394 (Div. 2) 解题报告

开始补题,今天下午virtual参赛,过了ABC,D题因为一点小错误而没能在比赛时间中AC,时间到了之后几分钟就发现了问题所在,略有遗憾.之后一直冥思苦想E题,在提示下终于明白,真的是给这样组合题画风的题目跪了,只能说继续加油,扩展思路吧. A题 题目地址 只有奇偶数个数相差小于等于1时可以,需要特判不能使二者均为0的情况. 参考代码 1 #include<stdio.h> 2 #include<bits/stdc++.h> 3 #include <iostream>

Codeforces Round #279 (Div. 2) 解题报告

A - Team Olympiad 贪心水题..都从第一个开始取即可. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h> #include <queue> #include <map

Codeforces Round #395 (Div. 2) 解题报告

年后恢复训练参加的第一场,表现的不是很好,必须要赶紧振作起来了啊. A.B题不再赘述. C题 不要被树的形式吓到,实际上不需要换根DFS,只需要看两顶点颜色不同的线段即可. 1 #include<stdio.h> 2 #include<bits/stdc++.h> 3 #include <iostream> 4 using namespace std; 5 typedef long long ll; 6 typedef unsigned long long ull; 7