15年寒假集训
a1s4z5
这个作者很懒,什么都没留下…
展开
-
UVa 1586 Molar mass
大意是给你一个分子式,让你求分子量 分子式的话只有四种元素 思路还是挺清晰的 每次碰到一个字母的时候找出对应原子量 然后如果是字母就直接加到总的上面去 如果是数字就一个一个读取并计算数字实际的值#include using namespace std; int main(){ int n; char a[105]; scanf("%d",&n); whi原创 2014-12-19 17:33:22 · 298 阅读 · 0 评论 -
609E - Minimum spanning tree for each edge
给出一个带权图,对每个边求经过这条边的MST先求一遍MST自然是极好的,然后对于在MST上的边,自然就是全局MST了对于不在MST上的边,找到这个边两个端点在MST上的路径上最大权的边并去掉,然后加上询问的这条边的权就好了#include<bits/stdc++.h> using namespace std; #define LL long long const int maxn = 212345,原创 2016-08-04 20:36:38 · 385 阅读 · 0 评论 -
UVa 1368 DNA Consensus String
这题刚开始居然没理解题意 给了一个DNA距离的定义 就是相同位置但不同的元素的个数 然后给你m个长n的DNA串 一开始理解为求到最后一个距离最短的序列 然后样例过不了。。 再然后仔细看了一遍题目 是求到所有的DNA串距离和最短的DNA串 思路嘛,统计每一个位置出现的字符的数目 找到最多的那个,如果有两个一样。。字典序走你 至于怎么想出来的~~ 草稿纸大法好 get了原创 2014-12-19 20:29:03 · 445 阅读 · 0 评论 -
UVa 1588 Kickdown
给你两个锯齿状物质(我也不知道叫啥 求一个最短的容器使这两个能同时装下 刚开始看不懂。。。 看懂了还是挺水的 让一个在上面,一个在下面 刚开始左端对齐 每次往左移动一下并判断需要的长度 往左移动的时候我油把自己绕进去了(为什么要说又 草稿纸大法好 attention,最短不能短于两个中最长的那根(想一想,为什么 翻过来再来一次,输出最短的那次 写完才发现我的max原创 2014-12-19 21:25:57 · 735 阅读 · 1 评论 -
UVa 1587 Box
略水的一题 给你六个面,判断能不能组成长方体 定义一个mian的结构体{ int 长; int 宽; }; 输入的时候严格按照长大于宽输入 然后sort 长相等的时候按宽排序 这样三对面就排在一起了 然后判断 第一次写这么长的判断 Orz 一次过。~( ̄▽ ̄~)(~ ̄▽ ̄)~ ps:刚开始敲的时候以为条件判断没法处理所有的情况 不过敲着敲着发现只有两种情况原创 2014-12-19 21:15:20 · 412 阅读 · 0 评论 -
UVa 10340 All in All
判断s1是不是s2的字串 //这个字串不是连续字串 本来想迭代,不过循环不好处理 也没想到什么高效的算法 干脆递归了 每次从母串中的第n个位置查找字串中的下一个字符 查找到了递归处理下一个,直到母串or字串结束 母串结束时字串未结束return false 母串未结束字串结束了return true 要是没查到呢? return false 这时上一级不会直接retur原创 2014-12-19 21:11:43 · 334 阅读 · 0 评论 -
UVa 202 Repeating Decimals
循环小数算循环节什么的 手动算了一个1/7之后思路很清晰 循环节最大长度不会超过分母#include using namespace std; int main(){ int up,down=0; while(~scanf("%d %d",&up,&down)){ int arr[2][3005]={0}; int len=0,st=0;原创 2014-12-19 20:53:04 · 422 阅读 · 0 评论 -
UVa 232 Crossword Answers
纵横字谜 你懂得 想用个队列,发现数组就够了 然后开始敲 还有就是紫书上说的,做之前检查而不是做了之后后悔, 大多数情况下亡羊补牢总是麻烦一点的 从今天开始爱上短路操作,再也不用担心数组越界了 #include #include using namespace std; int main(){ int n,m=0; int t=1; while(~原创 2014-12-19 18:14:05 · 470 阅读 · 0 评论 -
UVa 1225 Digit Counting
计算从1~n中各个数字出现的次数 发现n的范围是10000,果断暴力算 然后过了 Orz 暴力的效率应该是o(nlogn) 吧 #include using namespace std; int a[15]; void f(int t){ while(t){ a[t%10]++; t=t/10; } }原创 2014-12-19 17:47:54 · 494 阅读 · 0 评论 -
Uva 1585 Score
第一题,除了水还是水 X不计分,O连续出现则累加计分 比如连着三个O就是1+2+3=6分,遇到X就重新计算 好像也没什么要注意的,上代码好了#include using namespace std; int main(){ int n; scanf("%d",&n); char a[85]; while(n-- && ~scanf("%s",&a)){原创 2014-12-19 17:30:37 · 335 阅读 · 0 评论 -
UVa 227 Puzzle
这题和实验里的8 number很像,不过是字符而不是数字 %c吃回车。。。。然后加了一个getchar(); 回忆了一下当时的思路 不过这个是移动一但越界就输出 "哈,这个没有最终结果” 这个逻辑是不是很眼熟 没错,果断上break 然后就是无尽的调试 最后意识到break之后的字母也会作为下一组的输入 知道真相的我眼泪掉下来 改了一下,样例过了继续WA 仔细看题仔细看题 恩原创 2014-12-19 18:08:24 · 408 阅读 · 0 评论 -
UVa 11809 Floating Point Numbers
浮点数 都是眼泪有木有 刚开始题就没看懂 百度补了一下浮点数的储存 想起紫书里一个例子 for(double i=0.0;i!=10;i+=0.1) printf("%llf\n",i);不要目测答案,一定要编译测试一下 (扯远了 -------------------回归分割线(回归线)---------------- 这题思路还是挺清晰的 浮点数分两个部分 那就分别计算两个原创 2014-12-19 22:34:32 · 1353 阅读 · 0 评论 -
UVa 455 Periodic Strings
给你一个字符串,求它的最小循环节 第一个思路是每次给出循环节的长度,然后一节一节的检查 接着把我自己绕进去了,果断换个思路 不是一节一节的检查而是检查每一节的同一个位置 其实两个方法应该是等价的 不过前一个..... 不说了,贴代码 #include using namespace std; int main(){ int n; scanf("%d",&n)原创 2014-12-19 17:51:00 · 346 阅读 · 0 评论 -
SDUT 3099 递归回溯?
题目描述 若X压着Y,Y压着Z,那么Y,Z都是位于在X的下面的巧克力。若Y在X下面,Z在Y下面,那么Z也是位于在X的下面的巧克力 多组输入。 首先输入一个n(1 ),代表有n块巧克力。 对于每组输入,输出个整数代表答案,两个数之间用空格隔开。 示例输入 5 1 1 2 2 0 3 2 4 5 4 0 5 0 示例输出 1 0 2 0 0原创 2015-01-01 16:33:35 · 342 阅读 · 0 评论