A /*#include<cstring>#include<algorithm>#include<queue>#include<vector>#include<cstdio>#include<cmath>#include<iostream>*/ #include<bits/stdc++.h> using namespace std; typedef long long ll; ; int main() { in…
游戏摘自微信传的手机网页版小游戏,我拿来做成了JAVA的界面版,但是没有去做素材,,直接拿方块代替小青蛙.游戏原址就不分享了,只能在手机上打开. 下面是源码: /* * Main.java * */ import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter;…
Preface: 这是生平第一道现场 AC 的 arc E,也生平第一次经历了 performance \(\ge 2800\)​,甚至还生平第一次被 hb 拉到会议里讲题,讲的就是这个题,然鹅比较尬的一点是我不知道腾讯会议开了白板之后不能看到电脑,导致我的 typora 没人能看到--所以就暂且把我 typora 的内容整了整改成了一篇题解(​ 题意: 有 \(n\) 种零食,第 \(i\) 种零食有 \(a_i\)​ 个. 有 \(m\) 个人领这些零食,第 \(i\) 个人最多领 \(b_…
[LeetCode] Candy (分糖果),时间复杂度O(n),空间复杂度为O(1),且只需遍历一次的实现 原题: There are N children standing in a line. Each child is assigned a rating value. You are giving candies to these children subjected to the following requirements: Each child must have at least…
Codeforces 965 D. Single-use Stones 题目大意: 有一条河宽度为w,河上有一些石头,给出一组数(编号1~w-1),其中a[i]代表与河一岸距离为i的石头数量.每只青蛙的跳跃距离为l(l<w),故要踩着石头到河的彼岸,且被踩过的石头将消失,问这条河最多可以让多少只青蛙过. 思路: 乍看之下感觉很复杂,思考是不是需要用DP来做.赛后看题解,其实这是一道思维题,问题的转化比较巧妙. 可以这样思考:任选一个i,计算其之前的源点[i-l+1 ~ i]的石头数总和,即为可以…
昨天晚上 在csdn上做了一道分糖果的题目,我自个测的是没有问题,但是提交答案后,老失败,提示 你的程序正常运行并输出了结果,但是答案错误你的程序输出结果与测试数据中的输出结果不符 我先把自个思路说一下,再把我的代码贴出来,你们帮忙看看,哪里出了问题,或者有更好的思路分享下. 题目是这样的:地址:http://student.csdn.net/mcs/programming_challenges 第二道题目 有n个小朋友站成一排(编号从0到n-1),每个小朋友有一个rating值,存放在rati…
codeforces 704B - Ant Man 贪心 题意:n个点,每个点有5个值,每次从一个点跳到另一个点,向左跳:abs(b.x-a.x)+a.ll+b.rr 向右跳:abs(b.x-a.x)+a.lr+b.rl,遍历完所有的点,问你最后的花费是多少 思路:每次选一个点的时候,在当前确定的每个点比较一下,选最短的距离. 为什么可以贪心?应为答案唯一,那么路径必定是唯一的,每个点所在的位置也一定是最短的. #include <bits/stdc++.h> using namespace…
Problem description   小明在班里一直是个非常公正的孩子.这点同学和老师都非常清楚,这不,老师每周都会从家里带来一些糖果.然后叫小明把糖果分给其它小朋友,但这个班里的同学都有一个非常特别的性格,就是他们仅仅喜欢偶数.对于糖果也一样,所以小明在分糖果时也必需要保证这一点,即使每一个同学分的糖果数量不一样.都是奇怪的是,小明有时候并不可以合格的分糖果,这让他大为苦恼.害怕别的同学会不再信任他(虽然其它同学不会这么想).所以他想请你帮帮他.在每次老师把糖果给他时,就帮他推断出糖果能…
历届试题 分糖果   时间限制:1.0s   内存限制:256.0MB      问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 输入格式 程序首先读入一个整数N(2<N<100),表示小朋友的人数. 接着是一行用空格分…
CodeForces - 50A Domino piling (贪心+递归) 题意分析 奇数*偶数=偶数,如果两个都为奇数,最小的奇数-1递归求解,知道两个数都为1,返回0. 代码 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <sstream> #include <set> #include <map…
历届试题 分糖果   时间限制:1.0s   内存限制:256.0MB 问题描述 有n个小朋友围坐成一圈.老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子. 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数. 反复进行这个游戏,直到所有小朋友的糖果数都相同为止. 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果. 输入格式 程序首先读入一个整数N(2<N<100),表示小朋友的人数. 接着是一行用空格分开的N个偶…
分糖果 链接:https://www.nowcoder.com/acm/contest/173/B 来源:牛客网 题目描述 \(N\) 个小朋友围成一圈,你有无穷个糖果,想把其中一些分给他们. 从某个小朋友开始,我们顺时针给他们标号为\(1\) ~ \(N\).第 \(i\) 个小朋友可以得到至多 \(a[i]\),至少 \(1\) 个糖果. 问,有多少种分配方案使得每一对相邻的小朋友拿到的糖果数不同.答案对 \(10^9 + 7\) 取模. 输入描述: 第一行一个整数 \(N\). 接下来一行…
1402最大值:正向从1到n,如果没有限制,就依次递增1,如果有限制,就取那个限制和递增到这的最小值.这样保证1和每个限制点后面都是符合题意的递增,但是限制点前面这个位置可能会有落差(之前递增多了).不过我们再反向来一遍,再使每一个限制点前面都是符合题意的递增,每个位置取反向这个过程和正向扫过的最小值.再对全局取max. 2479小b分糖果:正向从1到n,如果相邻且评分更高,就递增1,反向从n到1如果相邻且评分更高,就取后面位置递增1和正向扫过的最大值(前面的糖果已经是最少的了,不能减了).再对…
1. 数组去重 题目描述 /** * 有序数组去重 * 输出最终的数字个数 * 输入:1,2,2 * 输出:2 * @author Turing * */ 代码 import java.util.*; public class E { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] str = sc.nextLine().split(","); int len…
1639: 分糖果 时间限制: 1 Sec  内存限制: 128 MB提交: 261  解决: 118[提交][状态][讨论版] 题目描述 为了实验室的发展,吴大大采购了一箱零食O(∩_∩)O~~ 在吴大大取快递的时候,实验室已经已经默默地聚集了一堆吃货,准备抢劫他,为了避免发生由一袋零食引发的血案,同时也是为了体现我们实验室的和谐,在实验室的N个人达成了一个协议:等吴大大一回来,大家就包围他!但是每个人必须保证距离吴大大1m,并且相邻两人间的距离相等. 但是实验室的N个人都不知道怎么站更加合适…
题目标签:Math 题目让我们分发糖果,分的糖果从1 开始依次增加,直到分完. for loop可以计数糖果的数量,直到糖果发完.但是还是要遍历array 给people 发糖,这里要用到 index = (本轮分糖果的量 % people 的人数)糖果的数量从0 开始计数,这样的话,index 就会一直重复遍历 array,具体看code. Java Solution: Runtime:  1ms, faster than 90.53% Memory Usage: 33.8 MB, less…
575. 分糖果 给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果.你需要把这些糖果平均分给一个弟弟和一个妹妹.返回妹妹可以获得的最大糖果的种类数. 示例 1: 输入: candies = [1,1,2,2,3,3] 输出: 3 解析: 一共有三种种类的糖果,每一种都有两个. 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3].这样使妹妹获得糖果的种类数最多. 示例 2 : 输入: candies = [1,1,2,3] 输出: 2 解析: 妹妹获得…
Allowed Letters 最直观的想法是贪心取, 然后网络流取check可不可行, 然后T了. 想到最大流可以等于最小割, 那么我们状压枚举字符代表的6个点连向汇点是否断掉, 然后再枚举64个本质不同的位置, 是否需要切段原点联想它的边, 单次check复杂度64 * 64 用sosdp能优化到64 * 6 #include<bits/stdc++.h> #define LL long long #define LD long double #define ull unsigned lo…
codeforces 549F Yura and Developers 题意 给定一个数组,问有多少区间满足:去掉最大值之后,和是k的倍数. 题解 分治,对于一个区间,找出最大值之后,分成两个区间. 至于统计答案,可以枚举小的那一端. 也可以结合熟练剖分的思想,由于dfs解决答案的过程是一棵二叉树,所以用全局变量保存当前信息,先做重儿子即可. 代码 \(O(nlog_2n)\) PS:由于搜索树是二叉树,所以可以直接用全局变量维护当前处理区间的信息. #include<bits/stdc++.h…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路 暴力枚举(自顶向下递归): 若台阶数小于等于0,返回0: 若台阶数为1,返回1:(1) 若台阶数为2,返回2:(1,1),(2) 否则,返回F(n-1)+F(n-2);(因为下一步只能是跳1级或者跳2级) 备忘录算法(自顶向下递归): 上面的方法包含大量重复计算,这里利用Map来记录计算过的结果,以减少计算次数. 迭代法(自底向上迭代,也许也算动态规划吧): 拿…
Codeforces 题面传送门 & 洛谷题面传送门 首先这个 if 与 end 配对的结构显然形成一个树形结构,考虑把这棵树建出来,于是这个程序的结构就变为,对树进行一遍 DFS,到达某个节点时,按照顺序遍历其所有儿子,如果儿子是叶子节点则执行赋值操作,否则进入到对应子树中执行相应操作,如果一个节点所有儿子对应的操作都被执行了就回溯,不难发现该过程与原程序等价. 考虑树形 dp.可以发现对于一棵非叶节点,在首次进入这棵子树时,程序中 \(x\) 的值已经确定了--就是 if v 中 \(v\)…
问题 一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法. 思路 当n=1时,只有一种跳法,及f(1)=1,当n=2时,有两种跳法,及f(2)=2,当n=3时,可以从n=1直接跳到n=3,也可以从n=2直接跳到n=3,及f(3)=f(1)+f(2)=3...,所以可以使用递归,自顶向下,一步一步求解,但是仔细分析一下,如果n=10,需要求得f(9)和f(8),而f(9)=f(8)+f(7),f(8)=f(7)+f(6),可以很明显看到,求了重复的f(…
递归与循环 递归:在一个函数的内部调用这个函数. 本质:把一个问题分解为两个,或者多个小问题(多个小问题相互重叠的部分,会存在重复的计算) 优点:简洁,易于实现. 缺点:时间和空间消耗严重,如果递归调用的层级太多,就会超出栈容量. 循环:通过设置计算的初始值及终止条件,在一个范围内重复运算. 斐波拉契数列 题目一:写一个函数,输入n,求斐波拉契(Fibonacci)数列的第n项,定义如下: 第一种解法:用递归的算法: long long Fabonacci(unsigned int n) { i…
E. Lomsat gelral Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/600/problem/E Description You are given a rooted tree with root in vertex 1. Each vertex is coloured in some colour. Let's call colour c dominating in the sub…
题意: 就在一个给定的无向图中至少应该去掉几个顶点才干使得s和t不联通. 算法: 假设s和t直接相连输出no answer. 把每一个点拆成两个点v和v'',这两个点之间连一条权值为1的边(残余容量) v和v''各自是一个流进的点.一个流出的点. 依据求最小割的性质.权值小的边是可能被选择的(断开的). 加入源点st=0和汇点en=2*n+1,源点与s连权值为inf的边.t''与汇点连权值为inf的边. s与s'',t与t''连权值为inf的边,这样保证自己和自己是不会失去联系的. 假设i和j有…
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,求该青蛙跳上一个n级台阶总共有多少中跳法. http://www.nowcoder.com/books/coding-interviews?page=1 思路:问题本质上是fibonacci问题. class Solution {public: int jumpFloor(int number) { int jumpNumber=0;//青蛙跳台阶跳法 if(0>=number){jumpNumber=0;} else if(1==numb…
(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级.求该青蛙跳上一个n 级的台阶总共有多少种跳法. //递归方式  public static int f(int n) { //参数合法性验证 if (n < 1) { System.out.println("参数必须大于1!"); System.exit(-1); } if (n == 1 || n == 2) return 1; else return f(n - 1) + f(n - 2); } //非递归方式  pu…
考虑链的做法,显然将两部分各自从大到小排序后逐位取max即可,最后将根计入.猜想树上做法相同,即按上述方式逐个合并子树,最后加入根.用multiset启发式合并即可维护.因为每次合并后较小集合会消失,总复杂度O(nlogn).场上并没有被启发得到这个优美的贪心. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #incl…
原文链接http://www.cnblogs.com/zhouzhendong/p/8835443.html 题目传送门 - CodeForces 958F3 题意 有$n$个球,球有$m$种颜色,分别编号为$1\cdots m$,现在让你从中拿$k$个球,问拿到的球的颜色所构成的可重集合有多少种不同的可能. 注意同种颜色球是等价的,但是两个颜色为$x$的球不等价于一个. $1\leq n\leq 2\times 10^5,\ \ \ \ \ 1\leq m,k\leq n$. 题解 来自Hel…
问题描述 X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色. X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去. 如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙. *WWWBBB 其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子. X星的青蛙很有些癖好,它们只做3个动作之一: . 跳到相邻的空杯子里. . 隔着1只其它的青蛙(随便什么颜色)跳到空杯子里. . 隔着2只其它的青蛙(随便什么颜色)跳到空杯子里. 对于上图的局面,只要1步,就可跳成下图局面…