随笔分类 - ACM日常刷题
摘要:简单动态规划:dp[i]是以位置i结束的最大和,动态转移方程dp[i] = max(dp[i-1]+array[i], array[i]),dp中的最大值即是结果。 class Solution { public: int FindGreatestSumOfSubArray(vector<int> 
        阅读全文
            
摘要:#include<iostream> #include<string.h> using namespace std; int main() { string s; cin>>s; if(s.length() >1 && s[0] == '"' && s[s.length()-1] == '"' &&
        阅读全文
            
摘要:1024: 走路还是坐公交 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 236 Solved: 60[Submit] [Status] [Web Board] [Creator:Imported] Description 你收到通知被中南大学录取了,高
        阅读全文
            
摘要:问题描述 w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。 这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。 如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗? 输入格
        阅读全文
            
摘要:并查集,以人为节点,用set来存每个人的兴趣,输入第i个人的兴趣时,如果在前i个人的兴趣里找得到,就将两个人合并。 1 #include<iostream> 2 #include<string> 3 #include<stdio.h> 4 #include<string.h> 5 #include<
        阅读全文
            
摘要:描述 You are given a list of integers a0, a1, …, a2^k-1. You need to support two types of queries: 1. Output Minx,y∈[l,r] {ax∙ay}. 2. Let ax=y. 输入 The f
        阅读全文
            
摘要:题意:有n个人排队应聘,每个人有一个能力值,然后老板要把这些人分成m段,如果不能整除多出来就后面的人就不要了,然后从这m段里面选择每段的最大能力值加起来看是否能够大于老板需要的目标k,因为薪资问题,尽可能少录取人,所以找出满足条件的最小的m。 输入时找出所有能力值的最大值max,则分组最少为k/ma
        阅读全文
            
摘要:1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<string> 5 #include<algorithm> 6 #include<iostream> 7 #include<queue> 8 #include<
        阅读全文
            
摘要:将b数组排序,取出最小的两项作为 a1,a2 删除 a1,a2,a1+a2 再取出最小项作为 a3 再删除 a3,a1+a3,a2+a3 再取出最小项作为 a4 依次列推 思路很清楚,就是实现方式,下面这种是别人博客园里我觉得比较简洁清晰的一种,学习了。 1 #
        阅读全文
            
摘要:题意:给你一些英文单词,判断所有单词能不能连成一串,前一个单词的最后一个字母和后一个单词的首字母相同则可以相连。 判断是否构成欧拉回路或者欧拉通路(以下是别人博客里的一段) 1.并查集判断连通 2.将每个单词取出首字母和尾字母,转换为一条边,然后加入对应的连通分量中。如果这个字母出现过,visit数
        阅读全文
            
摘要:欧拉回路: 通过图中每条边且只通过一次,并且经过每一顶点的回路。 无向图欧拉回路的判定:图连通;图中所有节点度均为偶数 有向图欧拉回路的判定:图连通;所有节点入度等于出度 这道题属于无向图,首先用并查集判断图的联通性,各点的度数用一个数组保存下来。 如果一个点的根结点和其他点的根结点不同,则图不联通
        阅读全文
            
摘要:题意:给一个字符串,从第二个字符开始,判断前面的是不是循环串,是的话就输出当前位置和循环次数。 考的是对于next数组的理解和灵活运用,字符编号从0开始,那么if(i%(i-next[i])==0),则i前面的串为一个循环串,其中循环子串出现i/(i-next[i])次。 1 #include<io
        阅读全文
            
摘要:Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9671 Accepted Submission(s): 4131
        阅读全文
            
摘要:很久没写线段树了,这段时间打算刷个线段树专题。这道题应该算是线段树的模版题了。 1 #include<iostream> 2 #define MAX_N 50005 3 4 using namespace std; 5 6 struct node 7 { 8 int peo; 9 int l,r; 
        阅读全文
            
摘要:(A/B)%9973=K A/B=K+9973*X A=BK+9973*X*B A%9973=n; BK%9973=n; BK=n+9973*Y (K/n)*B+(-Y/n)*9973=GCD(B,9973)=1; 求出k/n,求出k 1 /* 2 扩展欧几里得 3 扩展欧几里德算法是用来在已知a,
        阅读全文
            
摘要:1 #include<iostream> 2 #define ll long long 3 4 using namespace std; 5 6 ll quickmod(ll m,ll n) //m的n次方 7 { 8 ll temp = m; 9 ll ans=1; 10 while(n>0) 1
        阅读全文
            
摘要:前缀后缀gcd,其实自己比赛中用的是种奇怪的方法A掉的,不过先把这个学上,自己的方法有时间再填。 题意 告诉你N个数,求删除一个数可以求得最大GCD。 N可能是100000。 思路 这道题其实很简单,但是想不到这点就很难。 简单的说就是先预处理,得到每个数字左边的GCD和右边的GCD. befor(
        阅读全文
            
摘要:先引入必胜点和必败点两个概念:必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。必胜点(N点) :下一个选手(Next player)将取胜的位置称为必胜点。对于这两个概念的描述,我开始的时候也搞不懂。其实可以从字面理解,简单说来,就是当你走到某一点的时候,如果你
        阅读全文
            
摘要:最长上升子序列 一个数的序列 a i ,当 a 1 < a 2 < # < a N 时,称这个序列是上升的。对于给定的一个序列 ( a 1 , a 2 ,# , a N ),可以得到一些上升子序列( a i1 , a i 2 ,# , a iK ),这里 1 ≤ i1 < i 2 < # < iK 
        阅读全文
            
摘要:1 #include<iostream> 2 #include<string> 3 #include<sstream> 4 #include<set> 5 6 using namespace std; 7 8 int main() 9 { 10 double sum=0.345666; 11 cou
        阅读全文
            
 
                    
                 浙公网安备 33010602011771号
浙公网安备 33010602011771号