acm专题

ACM实训冲刺第八天

【碎碎念】由于昨天做的题都有思路,加上今天有点疲惫,故今天先不复习了,直接开始今天的算法学习 Tokitsukaze and All Zero Sequence 问题   思路    读入测试用例数:首先读取一个整数t,表示接下来会有t组数据需要处理。遍历每个测试用例:对于每组数据,先读取序列的长度n,然后读取这n个整数到数组中,并使用另一个数组a来统计每个数字出现的次数。

ACM学习历程30——回溯算法

一、回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为: 1、定义一个解空间,它包含问题的解。 2、利用适于搜索的方法组织解空间。 3、利用深度优先法搜索解空间。 4、利用限界函数避免移动到不可能产生解的子空间。 二、回溯举例 2.1皇后问题 问题描述:在n×n 格的棋

ACM学习历程29——搜索算法

搜索算法是利用计算机的高性能来有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。搜索过程实际上是根据初始条件和扩展规则构造一棵解答树并寻找符合目标状态的节点的过程。涉及到的概念包括:状态、状态转移、搜索树、状态空间、可行解、最优解。 一、相关概念 状态:对问题以及事物状态在某一发展阶段的数学描述。 状态转移:问题从一种状态转移到另一种状态的操作。 搜索树:以阶段中每一

ACM学习历程28——利用数组下标

数组是在ACM程序设计大赛中经常用到的一类复合数据类型,对于一个数组类型的变量,我们可在变量声明的时候声明变量的类型,例如:整型数组、字符数组等。对于普通字符数组,其实是数组每个单元中存储了一个字符;对于字符串,实际上除了在每个存储位置存储了一个一个字符外,在字符串结束的位置还额外存储了一个’\0’作为字符串借书的标志。在这篇博文中,并不介绍数组在存储上的一些特性,只是想说明在解答题目的过程中,若

ACM:动态规划,物品无限的背包问题(完全背包问题)

题目:有n种物品,每种物品都有无限件可用。第i种物品的体积是vi,重量是wi。选一些物品装到一个容量为C的背包中,使得背包内物品在总体积不超过C的前提下重量尽量大。 分析,完全背包问题,相对于上上篇文章的硬币问题,只是由DAG上的无权图变成了这里的DAG上的带权图! 输出最后满足体积不超过背包容量的条件下,背包中的最大重量。 代码: #include <iostream>#include

ACM:贪心法:乘船问题。

题目:有n个人,第i个人的重量为wi,每艘船的最大载重量均为C,且最多只能乘两个人。用最少的船装载所有人。 分析:贪心法!            考虑最轻的人i,他应该和谁一起坐呢?如果每个人都无法和他一起坐船,那么唯一的方案就是每个人坐一艘船!            否则,他应该选择能和他一起坐船的人中最重的一个j。            这样的方法是贪心的!因为:它只是让“眼前”的浪费

acm反思1

搞acm也一年了,我也不知道这一年到底收获了很多,真的可以说,这一年,没有白过吧,也许,可以说,是很充实,说实话,我这样的人,搞ACM也就是为了拿一个奖,为了一个不可达到的奖,想要冲进word final ,然而,现实中,往往,一切都不是那么容易,一切都是那么难,但是反过来想,如果是,那么容易,那又有什么用呢?这一年,做的题目类型太多了,反正,我知道的算法,我听过的名字,我都想全都去学,但是,在真

ACM实训冲刺第五天

第一道题 注意:tmp<='z' #include<stdio.h>int main(){int flag[26];for(int i=0;i<=26;i++){flag[i]=0;}char tmp;while(tmp!='}'){scanf("%c",&tmp);if(tmp=='}') break;if(tmp<='z'&&tmp>='a'){flag[tmp-'a']++;}}int

杭电ACM题1006

杭电题1006 Tick and Tick Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16425    Accepted Submission(s): 3970 Problem Description Th

杭电ACM题1004

杭电题1004 Problem Description Contest time again! How excited it is to see balloons floating around. But to tell you a secret, the judges' favorite time is guessing the most popular problem. When

杭电ACM题1003

杭电题1003 Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 +

ACM实训冲刺第四天

【碎碎念】最近的任务有点繁重,所以考虑到实际情况,视频学习决定放置一段时间,重点是学校的实训练习题,对于我而言,目标不是优秀/良好,综合考虑我的实际情况,保佑我及格、顺利通过就可!加油! 今日学习任务 1.复习代码 2.习题(Cleaning Shifts、Vanya and Lanterns) 复习代码 Anton and Letters(搞定) #include<stdio

ACM博弈----三大博弈大体总结

寻找平衡状态(也称必败态, 奇异局势),(满足:任意非平衡态经过一次操作可以变为平衡态) (一)巴什博奕(Bash Game): 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. n = (m+1)r+s , (r为任意自然数,s≤m), 即n%(m+1) != 0, 则先取者肯定获胜 (二)威佐夫博奕(Wythoff Game): 有两堆

程序设计竞赛ACM训练手册 从入门到精通

程序设计竞赛ACM训练手册 从入门到精通   相信每一位玩ACM程序设计竞赛的同学来说,都有一个从入门到精通的过程,而且分享他们经验的时候,见到最多的就是一种合作和拼搏精神,乐在其中的那种激情。   Wilbert即将毕业,作为一个菜鸟级的入门玩家,一直很想知道如何能在程序设计竞赛中成为一个高手。即将无缘类似竞赛的我,终于整理出了一些程序设计竞赛ACM训练之道,愿与大家分享。   首先是编程

HDU ACM 1213.How Many Tables(简单的 并查集)

/**********************************题目大意:把是朋友的人放到一组,n个人可以分成几组,并输出组数;题目解析:运用并查集把有关系的人合并到一组,最后遍历数组father[i],查看i根结点是否为他自己;错误分析:1. 最主要的是题目已经知道总人数,应该把总人数运用参数传递给初始化的函数init()2.定义 n,i,x,y;不能定义为全局变量,否则不能输出结果

HDU ACM 1856. More is better(并查集)

/********************************** 题目大意:把是朋友的人放到一组,求出人数最多的一组,并输出人数; 题目解析:运用并查集把有关系的人合并到一组,并且计算出此集合的结点数rank[i];          把rank[i]与rank1比较大小,把值大的赋值给rank1,最后输出题目要求的结果rank1; 错误分析:1. 下面的1,比较大小放在Union中 ,可以

cf240-B-Mashmokh and ACM DP

https://codeforces.com/contest/414/problem/B 题意: 在[1,n]范围内 构造出一个长度为k的数组 使得a[i+1]%a[i]=0 求出数组的个数%1e9+7 思考: 在一开始,会去想这是一道数学题,似乎得出某个式子便可以得出结果,因此就开始一个一个的去构造尝试,当构造了几个样例后,也许会发现某些结论,比如可以全部是一个数字,然后改变一个数字..

ACM比赛经验分享代码资源网站分享

一、ACM比赛经验分享 建立坚实的基础: 确保你对基本的数据结构和算法有很好的理解,比如数组、链表、栈、队列、树、图等等。这些基础知识是解决复杂问题的关键。熟悉常见的算法思想,例如贪心、动态规划、分治、搜索等。 刻意练习: 刷题是提高竞赛水平的有效途径。通过解决大量的问题,你可以熟悉各种算法和数据结构,并学会在不同情境下灵活应用它们。尝试解决不同难度级别的问题,从简单的入门题目到复杂的高级题

揭秘 IEEE/ACM Trans/CCF/SCI,谁才是科研界的王者?

会议之眼 快讯 在学术探索的浩瀚星海中,每一篇论文都像是一颗璀璨的星辰,而那些被顶级期刊或会议收录的论文,则无疑是最耀眼的几颗。 在众多评价标准中,IEEE/ACM Transactions、CCF推荐期刊和会议、SCI分区期刊,它们各自扮演着怎样的角色,又如何影响着科研工作者的职业发展呢?今天,我们就来深入探讨这些学术界的“王者”们。 IEEE/ACM Transactions:技术前

ACM中无穷大的设置

如果问题中各数据的范围明确,那么无穷大的设定不是问题,在不明确的情况下,很多程序员都取0x7fffffff作为无穷大,因为这是32-bit int的最大值。如果这个无穷大只用于一般的比较(比如求最小值时min变量的初值),那么0x7fffffff确实是一个完美的选择,但是在更多的情况下,0x7fffffff并不是一个好的选择。 很多时候我们并不只是单纯拿无穷大来作比较,而是会运算后再做比较,

acm只是个游戏

玩过acm的人都知道acm其实只是个游戏,有赢必有输,没有永远的赢家,也没永远的输家,像我这种的,呵呵,不是小牛,更不是大牛,我只是个菜鸟,嘿嘿,以前都不知道有acm这玩意,后来听说了,有点兴趣,然后就加入acm队,其实我自己都不知道自己能呆多久。有时候,被比赛折腾累了,结果不堪入目,我是不是该放弃,,好委屈啊,可是我自己又不甘心就这样了结这件事。       记得科比。布莱恩特说

http://acm.hdu.edu.cn/showproblem.php?pid=3336

题目大意: 所有前缀在母串中出现的次数之和。 #include<stdio.h>#define N 200009int next[N];int get_next(int len ,char *p){int i=0,j=-1,sum=0;next[i]=j;while(i<len){if(j==-1||p[i]==p[j]){i++;j++;next[i]=j;}else{j=nex

暨南大学2023年ACM程序设计新生赛解析

文章目录 K 天外来物 本解析为使用python3 题目的地址 邀请码请关注点赞之后评论区私发 K 天外来物 暴力思想:外层使用一个for 循环,一个个寻找之前是否有重复的数字,如果有,一直加一直至找到一个空位(超时) 正确的解题思想:使用单链表并查集,通过fn[i]来记录i 位置开始第一个为空的地方,当fn[i] == i 时,说明为空,然后fn[i]

18.12.15 Nuist_acm集训队个人赛

VJ上的原题地址:https://cn.vjudge.net/problem/CodeForces-789A 题目大意: 给定一组石头,每个数字都是种类各不相同的石头的个数,现在有两个容量为k 的桶,每个桶里不能有不同种类的石头,每一次都只能使用这两个桶,求需要装多少次(桶可以不装满) 思路:先排序,再模拟,模拟不能用减法,会TLE,用模运算 注意注意注意:最后一天的时候,因为只剩下一种石

ACM起步要点总结(转哈工大)

首先,我想说的就是,我是一个很普通的ACMer,高中没有参加过任何计算机和数学竞赛的经历,也没有ben那样过人的天资,努力至今也未能取得什么成绩,我之所以写下这篇文章,只是希望给刚进大学或者刚进ACM队的同学一点小小的帮助,希望你们可以少走一些弯路,更希望你们可以帮助华理取得我没能取得的辉煌。 (1).起步阶段 我是从大二开始接触ACM的,要说基础的话就是大一的C语言课程了,语言方面的

JAVA与ACM的那些事(不断整理更新ing)

大部分不是原创,我只是起到搬运整理的作用。^_^ /*由数字字符串构造BigDecimal的方法 *设置BigDecimal的小数位数的方法 */ import java.math.BigDecimal; //数字字符串 String StrBd="1048576.1024"; //构造以字符串内容为值的BigDecimal类型的变量bd BigDecimal bd