Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)
题目列表:
2146 Problem A | 【手速】阔绰的Dim |
2147 Problem B | 【手速】颓废的Dim |
2148 Problem C | 【手速】我的滑板鞋 |
2149 Problem D | 【手速】潦倒的Dim |
2150 Problem E | 【手速】被NTR的Dim |
2146 Problem A:
简单的最长回文串统计算法,这里没有过高要求,n^2算法可以AC。其中包括dp动规以及中心法(以上两种都是O(n^2)算法,可以参考白书)。推广,可以尝试扩展KMP(O(nlogn))或者Manacher算法(O(n))。可以查阅相关资料自行选择学习。这里给出中心法。
1 /****************************************/ 2 /***** Desgard_Duan *****/ 3 /****************************************/ 4 //#pragma comment(linker, "/STACK:102400000,102400000") 5 #define _CRT_SECURE_NO_WARNINGS 6 #include <iostream> 7 #include <cstdio> 8 #include <cstdlib> 9 #include <cstring> 10 #include <string> 11 #include <algorithm> 12 #include <stack> 13 #include <map> 14 #include <queue> 15 #include <vector> 16 #include <set> 17 #include <functional> 18 #include <cmath> 19 #include <numeric> 20 21 using namespace std; 22 23 char s[500]; int len; 24 25 inline void get_val(int &a) { 26 int value = 0, s = 1; 27 char c; 28 while ((c = getchar()) == ' ' || c == '\n'); 29 if (c == '-') s = -s; else value = c - 48; 30 while ((c = getchar()) >= '0' && c <= '9') 31 value = value * 10 + c - 48; 32 a = s * value; 33 } 34 35 int tofind(int h, int t) { 36 int re = t - h + 1; 37 while (h < t) { 38 if (s[h++] != s[t--]) return 0; 39 } 40 return re; 41 } 42 43 int main() { 44 //freopen("huiwen.in", "r", stdin); 45 //freopen("huiwen.out","w",stdout); 46 int T; 47 cin >> T; 48 while (T--) { 49 scanf("%s", s); 50 len = strlen(s); 51 int ans = 1; 52 for (int i = 0; i < len - 1; i++) 53 for (int j = i + 1; j < len; j++) { 54 ans = max(ans, tofind(i, j)); 55 } 56 cout << ans << endl; 57 } 58 return 0; 59 }
2147 Problem B:
一道字符串水题,只要按位置遍历一遍即可。C语言基础题。
1 /****************************************/ 2 /***** Desgard_Duan *****/ 3 /****************************************/ 4 //#pragma comment(linker, "/STACK:102400000,102400000") 5 #define _CRT_SECURE_NO_WARNINGS 6 #include <iostream> 7 #include <cstdio> 8 #include <cstdlib> 9 #include <cstring> 10 #include <string> 11 #include <algorithm> 12 #include <stack> 13 #include <map> 14 #include <queue> 15 #include <vector> 16 #include <set> 17 #include <functional> 18 #include <cmath> 19 #include <numeric> 20 21 using namespace std; 22 23 inline void get_val(int &a) { 24 int value = 0, s = 1; 25 char c; 26 while ((c = getchar()) == ' ' || c == '\n'); 27 if (c == '-') s = -s; 28 else value = c - 48; 29 while ((c = getchar()) >= '0' && c <= '9') 30 value = value * 10 + c - 48; 31 a = s * value; 32 } 33 34 string str1, str2; 35 int main () { 36 int T; 37 //cin >> T; 38 while (cin >> str1 >> str2) { 39 40 int ans = 0; 41 for (int i = 0 ; i < str1.size(); ++ i) { 42 if (str1[i] == str2[i]) { 43 ans ++; 44 } 45 } 46 cout << ans << endl; 47 } 48 return 0; 49 }
2148 Problem C:
一道贪心的白书例题,类型归类为查找不相交区间的最大个数。具体思路:对于相交的任意两个区间分为两种情况(图A、图B)。若出现情况A,直接将大区间删除即可。若出现情况B,我们先将集合按照x进行升序排列,然后优先选取x最小的情况B中的区间,这样可以得到最佳的方案。
1 /****************************************/ 2 /***** Desgard_Duan *****/ 3 /****************************************/ 4 //#pragma comment(linker, "/STACK:102400000,102400000") 5 #define _CRT_SECURE_NO_WARNINGS 6 #include <iostream> 7 #include <cstdio> 8 #include <cstdlib> 9 #include <cstring> 10 #include <string> 11 #include <algorithm> 12 #include <stack> 13 #include <map> 14 #include <queue> 15 #include <vector> 16 #include <set> 17 #include <functional> 18 #include <cmath> 19 #include <numeric> 20 21 using namespace std; 22 23 inline void get_val(int &a) { 24 int value = 0, s = 1; 25 char c; 26 while ((c = getchar()) == ' ' || c == '\n'); 27 if (c == '-') s = -s; 28 else value = c - 48; 29 while ((c = getchar()) >= '0' && c <= '9') 30 value = value * 10 + c - 48; 31 a = s * value; 32 } 33 34 vector<pair<int, int> > shoes; 35 bool flag[1005]; 36 37 int main () { 38 int n, x, y; 39 //freopen("out.txt", "w", stdout); 40 while (~scanf ("%d", &n)) { 41 shoes.clear(); 42 for (int i = 0; i < n; ++ i) { 43 cin >> x >> y; 44 shoes.push_back (make_pair(x, y)); 45 } 46 sort (shoes.begin(), shoes.end()); 47 48 memset (flag, 0, sizeof (flag)); 49 for (int i = 0; i < n; ++ i) { 50 if (flag[i]) { 51 continue; 52 } 53 for (int j = 0; j < n; ++ j) { 54 if (i == j) continue; 55 else { 56 if (shoes[i].first <= shoes[j].first && shoes[i].second >= shoes[j].second) { 57 flag[i] = 1; 58 } 59 } 60 } 61 } 62 int cur = 0, ans = 1; 63 for (; cur < shoes.size() && flag[cur]; cur ++); 64 int last_end = shoes[cur].second, this_begin; 65 for (int i = cur + 1; i < shoes.size(); ++ i) { 66 if (flag[i]) continue; 67 this_begin = shoes[i].first; 68 if (last_end <= this_begin) { 69 ans ++; 70 last_end = shoes[i].second; 71 } 72 } 73 cout << ans << endl; 74 75 } 76 return 0; 77 }
2149 Problem D:
一道大数题目。在n个大数中寻找最小的数。大数推荐使用Java大数类,相对来说代码比较清晰。也可以直接开一个数组进行模拟。
1 import java.math.*; 2 import java.io.*; 3 import java.util.*; 4 5 public class Main { 6 public static void main(String args[]) { 7 Scanner in = new Scanner(System.in); 8 while (in.hasNext()) { 9 int n = in.nextInt(); 10 BigInteger ans = BigInteger.ZERO; 11 for (int i = 0; i < n; ++i) { 12 BigInteger a = in.nextBigInteger(); 13 if (i == 0) { 14 ans = a; 15 } else { 16 ans = ans.min(a); 17 } 18 } 19 System.out.println (ans); 20 } 21 } 22 }
2150 Problem E:
一道简单的数学题目。稍微推导一下就会发现这个函数最多只有六项。分别是a, b, b - a, -a, -b, a - b六个数,只要我们去一下重复的数即可。去重方法可以用一个字符串数组来做,这里用了set容器的性质进行了去重操作。
1 /****************************************/ 2 /***** Desgard_Duan *****/ 3 /****************************************/ 4 //#pragma comment(linker, "/STACK:102400000,102400000") 5 #define _CRT_SECURE_NO_WARNINGS 6 #include <iostream> 7 #include <cstdio> 8 #include <cstdlib> 9 #include <cstring> 10 #include <string> 11 #include <algorithm> 12 #include <stack> 13 #include <map> 14 #include <queue> 15 #include <vector> 16 #include <set> 17 #include <functional> 18 #include <cmath> 19 #include <numeric> 20 21 using namespace std; 22 23 inline void get_val(int &a) { 24 int value = 0, s = 1; 25 char c; 26 while ((c = getchar()) == ' ' || c == '\n'); 27 if (c == '-') s = -s; 28 else value = c - 48; 29 while ((c = getchar()) >= '0' && c <= '9') 30 value = value * 10 + c - 48; 31 a = s * value; 32 } 33 34 35 int a, b, n; 36 set<int> S; 37 int main () { 38 while (cin >> a >> b >> n) { 39 S.clear(); 40 if (n >= 6) { 41 S.insert (a); 42 S.insert (b); 43 S.insert (b - a); 44 S.insert (-a); 45 S.insert (-b); 46 S.insert (a - b); 47 cout << S.size() << endl; 48 continue; 49 } else { 50 int last = a, now = b, t; 51 S.insert (a); 52 S.insert (b); 53 for (int i = 3; i <= n; ++ i) { 54 S.insert (now - last); 55 t = now; 56 now = now - last; 57 last = t; 58 } 59 cout << S.size() << endl; 60 } 61 } 62 return 0; 63 }
最后,感谢这次的命题者:王浩宇(stdiohero),叶鹏(yeahpeng),王驰(wid),谢文亮(Dim),朱吴帅(JM)同学为我们出的这套热身题目。祝大家在参赛后有所提高。谢谢大家。
——Desgard_Duan
2014.10.31
转载于:https://www.cnblogs.com/Destiny-Gem/p/4065932.html
Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)相关推荐
- jquery制作html小游戏,JQuery手速测试小游戏实现思路详解
(-1)写在前面 我用的chrome49,jquery3.0,我得到过399分,信不信由你. (1)设计思路 两个p元素放在div里,每个p元素的高度和宽度都和div一样,当鼠标放在div上时,第一个 ...
- 有没有可以测试手速的软件,我的第一个Mac小程序 — 手速测试器
没有什么能阻挡,我对自由的向往. 缘由 之所以做这个小程序是因为我想测一下自己的手速(从a打到z需要的时间),在网上没有找到测试的网页和软件,于是我就自己尝试做了一个,结果成功从iOS码农转型到mac ...
- c语言测试代码怎么写,初学C语言,写了一个测试手速的工具,代码发上来,存着。。...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 RT 有幸看到的可以去试一试.... #include "stdio.h" #include "time.h" # ...
- 手机测试android程序下载,测手速下载_测手速手机版下载「安卓版」-太平洋下载中心...
这是一款用来做测试的综合测试类应用,可以测试你的各种能力. 在首页,你可以测试你的手速,首页的测手速共有5秒,10秒,20秒,30秒,60秒共五种模式可选.测试完成后你可以把测试结果分享到qq空间,q ...
- 2018.12.7 浪在ACM 集训队第八次测试赛
2018.12.7 浪在ACM 集训队第八次测试赛 https://blog.csdn.net/QLU_minoz/article/details/84886717 感谢苗学林同学C题和D题题解 ht ...
- ACM练级日志:微软编程之美比赛测试赛-3(高精度相关)
微软的这个测试赛也不是那么水,看第一题那个不友好的A+B也就能猜出一二,第三题那个套着高精度的DP是无数NOIP小白的噩梦,包括我在内.不过学习了面向对象程序设计之后似乎对以前处理高精度的方法重新地认 ...
- 2018年 ACM/ICPC亚洲区域赛 青岛赛区现场赛 比赛总结
首先祝贺自己收获了ACM生涯中的第二枚铜牌. 首先吐槽一下中石油: 周六早上来到中国石油大学,连个志愿者小姐姐都没看到.(但是看到了女装大佬).报完到之后发现教练少了一张午餐券(要不要这么粗心).为了 ...
- 牛客网 OI 赛制测试赛
比赛链接:这里写链接内容 A 斐波那契 链接:https://www.nowcoder.com/acm/contest/181/A 来源:牛客网 设f[i]表示斐波那契数论的第i项 f[1]=1,f[ ...
- razer鼠标测试软件,那伽梵蛇2014版鼠标驱动及测试_雷蛇鼠标_键鼠评测-中关村在线...
Synapse2.0云驱动 只为提升用户感受 作为雷蛇最新款产品,那伽梵蛇2014版游戏鼠标使用Synapse2.0软件作为驱动调节程序.用户可从雷蛇官网上下载Synapse2.0软件(点击下载),并 ...
最新文章
- 华为2011上机笔试题2+参考程序
- 为表增加字段与拷贝数据到另一个表
- 【机器学习】LR的分布式(并行化)实现
- 【iOS-Cocos2d游戏开发之二十】精灵的基础知识点总汇(位图操作/贴图更换/重排z轴等)以及利用CCSprite与CCLayerColor制作简单遮盖层!...
- RabbitMQ实现RPC
- AI杂谈(2)请教支持向量机用于图像分类
- haproxy Starting proxy XXX: cannot bind socket
- 小程序多端框架全面测评 | 程序员硬核评测
- Java并发J.U.C 之 AQS
- 怎么检测mysql查询是否慢_MySQL慢查询查找和调优测试
- SET FOREIGN_KEY_CHECKS = 0
- 玩转华为数据中心交换机系列 | 配置基于VLAN的MAC地址学习限制示例
- 电影《功夫熊猫3》中的管理知识
- 计算机字节换算在线,计算机字节换算(计算机字节换算器)
- android 火车购票功能,12306 火车票订票
- Apache POI Excel固定(冻结)单元格
- 李峋同款爱心代码(附源码)
- 对《ToonSynth: Example-Based Synthesis of Hand-Colored Cartoon Animations》一文的理解(上)
- 【个人向】《春物》 小说原文关键段落摘录
- 将云顶之奕或者金铲铲S8导入数据库。