码迷,mamicode.com
首页 > 其他好文 > 详细

Clash Credenz 2014 Wild Card Round题解

时间:2014-09-02 19:43:45      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   ar   for   2014   div   

A题

简单模拟。

 1 /*************************************************************************
 2     > File Name: A.cpp
 3     > Author: Stomach_ache
 4     > Mail: sudaweitong@gmail.com
 5     > Created Time: 2014年09月01日 星期一 08时08分12秒
 6     > Propose: 
 7  ************************************************************************/
 8 
 9 #include <cmath>
10 #include <string>
11 #include <cstdio>
12 #include <string>
13 #include <fstream>
14 #include <cstring>
15 #include <iostream>
16 #include <algorithm>
17 using namespace std;
18 /*Let‘s fight!!!*/
19 
20 int n;
21 string s;
22 double a, f;
23 
24 int main(void) {
25       while (cin >> n) {
26         cin >> s;
27         cin >> a >> f;
28 
29         double sum = 0.0;
30         int m = (int)s.length();
31         bool flag = true;
32         for (int i = 0; i < m; i++) {
33             if (s[i] == L) sum -= a;
34             else sum += a;
35             if (sum >= f || sum <= -f) {flag = false; break;}
36         }
37         printf("%s\n", flag ? "YES" : "NO");
38     }
39 
40     return 0;
41 }

 

B题

判断最大值和剩下的值的和的关系

 1 /*************************************************************************
 2     > File Name: B.cpp
 3     > Author: Stomach_ache
 4     > Mail: sudaweitong@gmail.com
 5     > Created Time: 2014年09月01日 星期一 14时26分17秒
 6     > Propose: 
 7  ************************************************************************/
 8 
 9 #include <cmath>
10 #include <string>
11 #include <cstdio>
12 #include <fstream>
13 #include <cstring>
14 #include <iostream>
15 #include <algorithm>
16 using namespace std;
17 /*Let‘s fight!!!*/
18 
19 int n, m;
20 
21 int main(void) {
22     ios::sync_with_stdio(false);
23     while (cin >> m >> n) {
24         long long sum = 0, t = -1, a;
25         for (int i = 0; i < m; i++) cin >> a, t = max(t, a), sum += a;
26         sum -= t;
27         if (t > sum + 1) cout << "NO\n";
28         else cout << "YES\n";
29     }
30     return 0;
31 }

 

C题

模拟。

 1 /*************************************************************************
 2     > File Name: C.cpp
 3     > Author: Stomach_ache
 4     > Mail: sudaweitong@gmail.com
 5     > Created Time: 2014年09月01日 星期一 14时32分40秒
 6     > Propose: 
 7  ************************************************************************/
 8 #include <map>
 9 #include <cmath>
10 #include <string>
11 #include <vector>
12 #include <cstdio>
13 #include <fstream>
14 #include <cstring>
15 #include <iostream>
16 #include <algorithm>
17 using namespace std;
18 /*Let‘s fight!!!*/
19 
20 int vis[100050];
21 
22 int main(void) {
23       ios::sync_with_stdio(false);
24       int n;
25       while (cin >> n) {
26         map<string, int> var;
27         vector<string> s(n + 1);
28         for (int i = 1; i <= n; i++) cin >> s[i];
29         memset(vis, 0, sizeof(vis));
30 
31         for (int i = 1; i <= n; i++) {
32             if (var.find(s[i]) == var.end()) var[s[i]] = 1;
33             else var[s[i]]++;
34             if (!vis[var[s[i]]]) vis[var[s[i]]] = i;
35         }
36         for (int i = 1; i <= n && vis[i]; i++) cout << i <<   << s[vis[i]] << endl;
37     }
38 
39     return 0;
40 }

 

D题

从后往前计算,判断当前点在左上或者右上或者左下或者右下,然后分别乘以不同的系数,并且更新点的位置。

 1 /*************************************************************************
 2     > File Name: D.cpp
 3     > Author: Stomach_ache
 4     > Mail: sudaweitong@gmail.com
 5     > Created Time: 2014年09月01日 星期一 14时56分31秒
 6     > Propose: 
 7  ************************************************************************/
 8 
 9 #include <cmath>
10 #include <string>
11 #include <cstdio>
12 #include <fstream>
13 #include <cstring>
14 #include <iostream>
15 #include <algorithm>
16 using namespace std;
17 /*Let‘s fight!!!*/
18 
19 int t, a, b, c, d, x, y;
20 typedef long long LL;
21 
22 int main(void) {
23       ios::sync_with_stdio(false);
24     cin >> t;
25     while (t--) {
26           int n;
27           cin >> n;
28         cin >> a >> b >> c >> d;
29         cin >> x >> y;
30 
31         int times = 0;
32         while ((1<<times) < max(x, y)) times++;
33         LL ans = 1;
34         while (times--) {
35             if (x <= (1<<times)) {
36                   if (y <= (1<<times)) ans *= a;
37                 else ans *= b, y -= 1<<times;
38             } else {
39                   x -= 1<<times;
40                   if (y <= (1<<times)) ans *= c;
41                 else ans *= d, y -= 1<<times;
42             }
43         }
44         cout << ans << endl;
45     }
46 
47     return 0;
48 }

 

E题

比赛时候没有过。可以先枚举角度(从0到2*pi,每次加1e-7,加多了就会WA),求得系数。

 1 /*************************************************************************
 2     > File Name: E.cpp
 3     > Author: Stomach_ache
 4     > Mail: sudaweitong@gmail.com
 5     > Created Time: 2014年09月01日 星期一 15时34分16秒
 6     > Propose: 
 7  ************************************************************************/
 8 
 9 #include <cmath>
10 #include <string>
11 #include <cstdio>
12 #include <fstream>
13 #include <cstring>
14 #include <iostream>
15 #include <algorithm>
16 using namespace std;
17 /*Let‘s fight!!!*/
18 
19 int main(void) {
20       /*double ans;
21     ans=0.0;
22     double pi = acos(-1.0);
23     for (double i = 0.0; i < 2 * pi; i += 0.0000001)
24     {
25       ans += sqrt(5.0 - 4.0 * cos(i));
26     }
27     ans /= 2 * pi * 10000000;
28     cout << ans << endl; */
29     int r;
30     while (cin >> r) cout << (int)(r * 2.12709) <<endl;
31     return 0;
32 }

 

F题

因为y-x < 1e4,以此作为着手点。先去掉Ai中大于y-x+1的系数,然后去重。

之后就转化为完全背包。

 1 /*************************************************************************
 2     > File Name: F.cpp
 3     > Author: Stomach_ache
 4     > Mail: sudaweitong@gmail.com
 5     > Created Time: 2014年09月01日 星期一 19时14分48秒
 6     > Propose: 
 7  ************************************************************************/
 8 #include <set>
 9 #include <cmath>
10 #include <string>
11 #include <cstdio>
12 #include <fstream>
13 #include <vector>
14 #include <cstring>
15 #include <iostream>
16 #include <algorithm>
17 using namespace std;
18 /*Let‘s fight!!!*/
19 
20 int n, x, y, dp[10005];
21 
22 int main(void) {
23     ios::sync_with_stdio(false);
24     while (cin >> n) {
25         cin >> x >> y;
26         int cnt = 0;
27         vector<int> a;
28         for (int i = 1; i <= n; i++) {
29             int tmp;
30             cin >> tmp;
31             if (tmp <= y - x + 1) a.push_back(tmp - 1);
32         }
33         sort(a.begin(), a.end());
34         a.erase(unique(a.begin(), a.end()), a.end());
35         cnt = a.size();
36         memset(dp, 0x3f, sizeof(dp));
37         int V = y - x;
38         dp[0] = 0;
39         for (int i = 0; i < cnt; i++) {
40             for (int j = a[i]; j <= V; j++) {
41                   if (dp[j - a[i]] != 0x3f3f3f3f) dp[j] = min(dp[j], dp[j - a[i]] + a[i]);
42             }
43         }
44         if (dp[V] == 0x3f3f3f3f) puts("IMPOSSIBLE");
45         else puts("POSSIBLE");
46 
47     }
48 
49     return 0;
50 }

 

Clash Credenz 2014 Wild Card Round题解

标签:style   blog   color   os   io   ar   for   2014   div   

原文地址:http://www.cnblogs.com/Stomach-ache/p/3952089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!