acm

sicily 1563 GECKO

别说谁变了你拦得住时间么 提交于 2021-01-13 09:49:57
Description During the rainy season, one of the walls in the house is infested with mosquitoes. The wall is covered by h × w square tiles, where there are h rows of tiles from top to bottom, and w columns of tiles from left to right. Each tile has 1 to 1000 mosquitoes resting on it. A gecko wants to eat as many mosquitoes as possible, subject to the following restrictions. It starts by choosing any tile in the top row, and eats the mosquitoes in that tile. Then, it moves to a tile in the next lower row, eats the mosquitoes on the tile, and so on until it reaches the floor. When it moves from

sicily 1083 Networking

六月ゝ 毕业季﹏ 提交于 2020-12-13 11:48:50
Description You are assigned to design network connections between certain points in a wide area. You are given a set of points in the area, and a set of possible routes for the cables that may connect pairs of points. For each possible route between two points, you are given the length of the cable that is needed to connect the points over that route. Note that there may exist many possible routes between two given points. It is assumed that the given possible routes connect (directly or indirectly) each two points in the area. Your task is to design the network for the area, so that there is

Bus

一个人想着一个人 提交于 2020-11-16 05:01:27
Bus Accepted : 54 Submit : 491 Time Limit : 1000 MS Memory Limit : 65536 KB 题目描述 小强刚来到长沙这个大城市,发现这里有很多他老家没有的东西,其中一个就是公交车了。小强的家到学校有很多个公交站,每个公交站都有一个英文名字。小强很喜欢坐公交车,但是他有个奇怪的要求,就是公交车的上车站和下车站的英文名字必须是首字母相同的,且不在同一个站上下车,不然小强宁愿走过这个站去搭下一趟车,甚至直接走到学校。给出小强从家里到学校的之间每一个公交站的英文名字,问如果不往回走,小强最多能搭几次公交车? 输入 多组样例,每组样例第一行为非负整数n(n<=1000),表示小强家里到学校之间有n个公交站。接下来n行,每行有一个英文名字,每行不超过100字符。 输出 对于每组样例,输出最多的乘坐次数。 样例输入 4 shaoshan erzhong shangxia dongmen 5 shaoshan shangxia ertian erzhong dongmen 样例输出 1 2 Source XTUCPC2013 #include<iostream> #include<deque> #include<string> #include<algorithm> using namespace std; deque<string> s

hdu2045 不容易系列三——LELE的RPG难题 (递推方程)

点点圈 提交于 2020-11-10 07:55:33
本文出自: blog.csdn.net/svitter 原题: http://acm.hdu.edu.cn/showproblem.php?pid=2045 题意:中文不用我说了吧。 这个题目的关键就在于递推方程——以及错误的测试数据 首先这个题目就是简单的置换群着色问题—— 去除了反转的问题,难一点的大家可以看P197(离散数学,高等教育出版社) 我在做这个题目的时候首先被f [ 1 ] = 3 困扰了。。拜托,根本不符合题意好吗- =一个格子能说是首尾颜色不同吗? 后来写错了递推方程——f [ n ] = f [ n - 1 ] + 3 * f [ n - 2 ],把 f [ n - 1 ] 的情况多考虑了一遍- = 。 正确的方程应该是 —— f [ n ] = f [ n - 1 ] + 2 * f [ n - 2 ] , n >= 4; (去除了f [ 1 ] = 3 这个坑爹的干扰。) 写成lln是为了防止超范围——写完以后记得DEBUG一下看看有没有超范围—— 代码: #include <iostream> #include <cstdio> #include <cstring> using namespace std; #define lln long long int lln f[51]; void ace() { memset(f, 0x3f, sizeof(f

记一次代码优化

末鹿安然 提交于 2020-11-03 11:34:08
题目选择:不定方程的非负整数解解。 问题描述:问方程 x+2y+5z=n, 对于特定输入的 n ( n<=1000000 ),输出其大于的整数解的个数。其时间限制是为: 1000ms 。 选择原因:选择此题主要是由于自己实际作此题过程中,遇到了很多问题,这篇报告主要是来写我对于这些问题的解决,与对代码的不断优化。 解题过程: 这个问题非常简单,是的,非常简单,只要一个枚举就能解决,而我为啥还要选择这个问题来写报告了,因为当我改了多次代码系统才通过我写的代码,由于我下了狠心,一定要尽自己最大的努力把它写的最好,写的运行速度最快,甚至举一反三的将这个问题扩散到更广。 我拿到这个问题,想都没想就写了如下的代码: #include <stdio.h> void jieshu(int n) { int i,j,k,g; for(i=0;i<=n;i++) for(j=0;j<=n/2;j++) for(k=0;k<=n/5;k++) { if(i+2*j+5*k==n) g++; } printf("%d",g); } int main() { int t,n; while(~scanf("%d",&t)) { while(t--) { scanf("%d",&n) jieshu(n); } } return 0; } 这就是一个暴力枚举法,的确对于很小的 n ,结果完全没有问题

一位ACM过来人的心得

妖精的绣舞 提交于 2020-04-02 19:32:38
刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练? 我想说下我的理解。 很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。 我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。 其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间, 我们训练的目的是什么?我觉得有四点 1、提高编程能力 2、学习算法 ,(读书,读论文,包括做一些题目验证) 3、准备好面临将到来的挑战 (熟悉题型,调整心态) 4、启发思维。 这里四个目的,从训练的角度上,重要性逐次递减;为什么呢? 因为前面的因素是后面的基础。而是后面的目的,想达成越为不易。我觉得前3者能保证你ac掉你能做的题,即使难题始终不会做,也可以ac掉中等偏难的题目。 而需要一定思维难度的题,要以前三者为基础而且属于训练的后期,中期只能作为偶尔调节。当然,我思维也烂得要死,对这点没什么发言权,大家可以鄙视我。 我这里想主要说下第2点。 对于算法,我发现,很多我们这样的弱校ACMer选手没有侧重好算法的学习。 下面要讲的几点,可能都很老套,但我想以035对比我自己的例子给大家做说明。 <1>算法学习是ACM比赛所要推广或者要提倡的一个方面 记得曾经路过某人的blog

一场ACM一场梦——我的一年

做~自己de王妃 提交于 2020-04-02 15:09:35
  听着裁判倒计时比赛结束,看着全场鲜艳的气球,今天的结果是the last result i can image。   过几天给校赛出题,去年此时的我,还从来没有过竞赛的经验,只因为在大学开学前看了一点点c语言,会输出hello world就想去竞赛了,通过不方便的方式总算接触到了科协,然后能听学长讲课了,无知的我就感觉高大上啊,现在想想还真是年轻,可能每过一个阶段回头看看都会有这种感觉。当时啊,坤队讲课真是好,虽然讲的我都知道,只是缺乏题目的训练,但是可以算是引导我了,几次课之后人就少了很多,我也不觉得我有多大能力,而且还要经过校赛才能进入acm队,感觉也并不是很有信心。然后的校赛啊,就要组队了,班级群里吼啊,连个回应都没有啊,科协群里吼啊,然后刚好sk说也缺个人,马上当天晚上sk和hn就来我宿舍门口见了一下。当时我连指针都不知道是什么啊l,虽然在竞赛中我也没显示的用到过。然后呢在校赛之前就做了点简单的题目,在校赛里做出了一个水题,真是高兴啊,三个人差不多每个人一题,但是我做的应该是最简单吧。hn好像还用了结构体,不知道是什么高端的东西啊,本来以为都能拿最佳新生啦,还有额外奖金,结果刚好挤进一等奖,也是很满足啦。毕竟宝箱是oi选手,oi是个什么鬼啊。然后就进了呗,好像也没什么事情啊,就是偶尔放题,然后讲讲,然后就是寒假了呗,自己做题,然后慢慢的知道了原来排个序就可以叫贪心

ACM模板(持续更新)

十年热恋 提交于 2020-03-30 15:55:48
数据的离散化存储+去重 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e5+7; 4 int a[maxn]; 5 vector<int> g; 6 int getid(int x) 7 { 8 return lower_bound(g.begin(),g.end(),x)-g.begin()+1; 9 } 10 int main() 11 { 12 int n; 13 cin>>n; 14 for(int i=0;i<n;++i){ 15 cin>>a[i]; 16 g.push_back(a[i]); 17 } 18 sort(g.begin(),g.end()); 19 g.erase(unique(g.begin(),g.end()),g.end()); 20 return 0; 21 } View Code KMP 1 #include<iostream> 2 #include<cstdlib> 3 #include<cstring> 4 using namespace std; 5 void get_next(char *str,int *next,int len) 6 { 7 int i=0,j=-1; 8 next[0]=-1; 9 while(i<len) 10 { 11 if

谈一下ACM的入门书籍及方法

纵然是瞬间 提交于 2020-03-21 16:57:32
首先说一下,ACM的入门方法多种多样,大部分人还是跟着学校一起参加集训,所以我这里主要是想对那些准备ACM入门的业余的朋友谈的。 入门书籍 : 首先推荐一些ACM的书籍: (以下我都会给出在当当网的页面,方便大家直接购买,以下排名不分先后) 1.《程序设计导引及在线实践》 http://product.dangdang.com/product.aspx?product_id=20051430&ref=search-1-pub 这是我的第一本入门书,这本书是配套北大的百炼习题,注意不是POJ,貌似是北大内部测试用的,不过也是对外开放的,去年好像百炼变化过,所以[u]不知道这本书还适不适合那个新的百炼系统[/u]。 2.《算法竞赛入门经典》 http://product.dangdang.com/product.aspx?product_id=20724029&ref=search-1-pub 这本书没话说,刘汝佳的白书,经典的算法入门书籍。[b]强烈推荐[/b]! 3.《算法艺术与信息学竞赛》 http://product.dangdang.com/product.aspx?product_id=8811386&ref=search-1-pub 刘汝佳的黑书,难度较深,题目基本来至Uva,我是看了前面以部分,后面就没咋看了。。。 4.《算法导论》 http://product

ACM进阶计划

人盡茶涼 提交于 2020-03-14 11:33:48
ACM进阶计划 ACM队不是为了一场比赛而存在的,为的是队员的整体提高。 大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言 l 高等数学 l 线性代数 l 数据结构 l 离散数学 l 数据库原理 l 操作系统原理 l 计算机组成原理 l 人工智能 l 编译原理 l 算法设计与分析 除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。 以下学习计划每学期中的内容不分先后顺序,虽说是为立志于学习ACM的同学列的知识清单,但内容不限于ACM的知识。英语之类与专业相距较远的课程请自行分配时间,这里不再列举。 大一上学期: 必学: 1. C语言基础语法必须全部学会 a) 推荐“语言入门”分类20道题以上 b) 提前完成C语言课程设计 2. 简单数学题(推荐“数学”分类20道以上) 需要掌握以下基本算法: a) 欧几里德算法求最大公约数 b) 筛法求素数 c) 康托展开 d) 逆康托展开 e) 同余定理 f) 次方求模 3. 计算几何初步 a) 三角形面积 b) 三点顺序 4. 学会简单计算程序的时间复杂度与空间复杂度 5. 二分查找法 6. 简单的排序算法 a) 冒泡排序法 b) 插入排序法 7. 贪心算法经典题目 8. 高等数学 以下为选修: 9. 学会使用简单的DOS命令(较重要) a) color/dir/copy/shutdown/mkdir