(水题)洛谷 - P2089 - 烤鸡】的更多相关文章

题目链接:https://www.luogu.org/problemnew/show/P2089 题目详情: 题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和 现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案 输入输出格式 输入格式: 一行,n<=5000 输出格式: 第一行,方…
[链接]:https://www.luogu.org/problemnew/show/P2089 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和 现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案 输入输出格式 输入格式: 一行,n<=5000 输出格式: 第一行,方案总数 第二行至结束,10个数,表示每种配料所放的…
标签:暴力,枚举 题目背景 猪猪 Hanke 得到了一只鸡. 题目描述 猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 10 种配料(芥末.孜然等),每种配料可以放 1 到 3 克,任意烤鸡的美味程度为所有配料质量之和. 现在, Hanke 想要知道,如果给你一个美味程度 n ,请输出这 10 种配料的所有搭配方案. 输入格式 一个正整数 n,表示美味程度. 输出格式 第一行,方案总数. 第二行至结束,10 个数,表示每种配料所放的质量…
https://www.luogu.org/problemnew/show/P2089 非常暴力的dfs,不知道不剪枝会怎么样,但是其实最多也就 $3^{10}$ ,大不到哪里去.还有一个细节就是大于序并不是字典序的逆序……233这样都没发现我是服了. #include<bits/stdc++.h> using namespace std; #define ll long long int n; set<ll> ans; void dfs(int i,int c,int res,l…
看了前面大佬的代码,发现这道题的解题思路都大同小异. 首先肯定要定义一个变量累加方案数量,因为方案数量要最先输出,所以所有方案要先储存下来.个人不喜欢太多数组,就只定义一个字符串. 然后我们发现只有10种配料,每中在1~3以内,我们便可以模拟一下四进制(4^9==262144,在int范围内). ## 累加函数: ```cpp string tot;int n,m;//预备工作 void leiji(int a){//进行累加的函数 int b=262144;//模拟四进制 while(a){…
import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.Scanner; public class Main { private static Scanner cin; private static LinkedList<String> list; private static int max; private static int[] condiment…
题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和 现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案. 这道题本来应应用递归算法,但是由于本蒟蒻对递归的掌握不熟,加之本题的思维非常水,只需要暴力模拟,就能把题目解出: 下面是对本题的思维方法总结: 1:对于先输出后循环的题目,可以先…
烤鸡[题目链接] 感觉我超废 关于算法:有很多很多算法吧,但自我感觉最重要的是递归的算法: SOLUTION: 首先忍不住要吐槽这个神仙数据: 嗯???定睛一看,它这数据范围莫不是白瞎了,因为每种配料可以放1—3克,共10种配料,所以美味程度最大是30,大于30的显然都无解,于是很愉快呀,我们就可以不用搜索30以上的啦,那么我们暴力就好了啊.对于题解的话,出现了好多直接10个for循环跑的 正解显然不是10个for循环跑过,但是数据太水,for循环也确实跑得过qwq: 据析正解应该是搜索?可是我…
题目:https://www.luogu.org/problemnew/show/P4660 https://www.lydsy.com/JudgeOnline/problem.php?id=1168 自己一开始有这样的想法:枚举一边的手套一定选到 S 集合,设 c = 选到 S 里每个手套的最小需要选的手套个数,则 c = 这边所有手套个数 - (S里个数最小的手套个数-1) . 设 ts = 另一边一定选到 S 集合里的至少一个手套的最小需要选的手套个数,则 ts = 不在 S 集合里的手套…
题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和 现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案 输入输出格式 输入格式: 一行,n<=5000 输出格式: 第一行,方案总数 第二行至结束,10个数,表示每种配料所放的质量 按字典序排列. 如果没有符合要求的方法,就只要在第一行…
原题链接 题目大意: 有来自三个地区的人各a,b,c位,他们排成了一排.请问有多少种不同类型的排法,使得相邻的人都来自不同的地区 \(a,b,c<=200\) 答案取模 题解 弱弱的标程解法 设\(f[i][j][k][l]\)表示三种人各排了\(i\).\(j\).\(k\)个,最后一个人是l类 那么转移就很显然了,枚举下一个非\(l\)人即可 #include<iostream> #include<cstdio> #include<algorithm> usi…
题意:就是x分别是1到3的未知数,求x1+x2+x3.....+x10=n的方案数和输出每种方案.每种方案还必须按字典序输出 思路:就是简单的构建搜索树+约束条件啊,其实数据范围一点都不大,所以,我第一遍是搜索方案数,第二次搜索 每种方案的输出.嘻嘻. #include<iostream> using namespace std; ; ]; int len, k; void DFS1(int n, int sum){ && sum == ){ len++; return; }…
大爷的字符串题 思路: 莫队,需开O2,不开50: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 int bel[maxn],blo; struct QueryType { int l,r,id; bool operator<(const QueryType pos)const { if(bel[l]==bel[pos.l]) return r<pos.r; else return bel…
题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779. 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来M行每行包含三个整数Fi.Gi.Wi,分别表示第i条有向边的出发点.目标点和长度. 输出格式 一行,包含N个用空格分隔的整数,其中第i个整数表示从点S出发到点i的最短路径长度(若S=i则最短路径长度为0,若从点S无法到达点…
题意:某公司发现其研制的一个软件中有 n个错误,随即为该软件发放了一批共 m 个补丁程序.对于每一个补丁 i ,都有 2 个与之相应的错误集合 B1(i)和 B2(i),使得仅当软件包含 B1(i)中的所有错误,而不包含 B2(i)中的任何错误时,才可以使用补丁 i.补丁 i 将修复软件中的某些错误 F1(i),而同时加入另一些错误 F2(i).另外,每个补丁都耗费一定的时间. 试设计一个算法,利用公司提供的 m 个补丁程序将原软件修复成一个没有错误的软件,并使修复后的软件耗时最少. 虽然是网络…
题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 输出格式: 输出只有一行,代表A+B的值 输入输出样例 输入样例#1: 1 1 输出样例#1: 2 附上代码: #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #in…
题目 题目来源 P1149 火柴棒等式,https://www.luogu.org/problem/P1149 题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是00).用火柴棍拼数字0-90−9的拼法如图所示: 注意: 加号与等号各自需要两根火柴棍 如果A≠B,则A+B=C与B+A=C视为不同的等式(A,B,C>=0) n根火柴棍必须全部用上 输入格式 一个整数n(n<=24). 输出格式…
题解: 错误的: #include<stdio.h>int n,ret=0,a[10000][10];int p(int c,int s){ int i; for(i=1;i<=3;i++){   s+=i;   if(c==9){     if(s==n){       a[ret][c]=i;       ret++;       return 1;     }else{      s-=i;       continue;     }   }else{     if(p(c+1,s…
题目链接:https://www.luogu.com.cn/problem/P1339 朴素dijkstra算法的复杂度是O(n^2),用堆优化的dijkstra复杂度是O(nlogn)的.在本题中前向星存边的时间消耗大约是113ms,空间消耗大约是8M,而在矩阵存边中时间消耗大约是125ms,空间消耗大约是30M,可见前向星是非常节省空间的.但点多边少的时候还是用前向星比较好. 代码如下: #include<bits/stdc++.h> using namespace std; typede…
题目链接 嗯..水题 洛谷这网络流二十四题的难度评价真神奇.. #include <queue> #include <cstdio> #include <cctype> #include <cstring> #include <algorithm> #define gc() getchar() const int N=206,M=15000,INF=0x3f3f3f3f; int n,m,src,des,A[N],B[N],C[N][N],dis…
洛谷 P5596 [XR-4]题 洛谷传送门 题目描述 小 X 遇到了一道题: 给定自然数 a,ba,b,求满足下列条件的自然数对 (x,y)(x,y) 的个数: y^2 - x^2 = ax + by2−x2=*a**x+b* 他不会,只好求助于精通数学的你. 如果有无限多个自然数对满足条件,那么你只需要输出 inf 即可. 输入格式 一行两个整数 a,ba,b. 输出格式 如果个数有限,一行一个整数,表示个数. 如果个数无限,一行一个字符串 inf. 输入输出样例 输入 #1复制 输出 #1…
洛谷 P1167 刷题 洛谷传送门 题目描述 noip临近了,小A却发现他已经不会写题了.好在现在离竞赛还有一段时间,小A决定从现在开始夜以继日地刷题.也就是说小A废寝忘食,一天二十四小时地刷题. 今天的日期(时间)是yyyyyyyy年mmmm月dddd日hhhh时minmin分,考试的时间是yyyyyyyy'年mmmm'月dddd'日hhhh'时minmin'分.这之间的所有时间小A都用来刷题了,那么考试之前他最多能刷多少题呢?注意哦,考虑闰年. 时间紧张小A只管数量不管质量.当然有的题目容易…
题外废话: 真的超级喜欢这道题 摆花[题目链接] yy一提醒,我发现这道题和[洛谷p2089] 烤鸡有异曲同工之妙(数据更大了更容易TLE呢qwq) SOLUTION1:(暴搜) 搜索:关于搜索就不用多介绍了吧,这里是用了dfs:dfs函数中有两个变量,rest和i分别表示还需要摆放多少盆花以及现在摆放到第几种花了,因为我们是从0开始枚举,因此如果某种花我们不选择,那就可以看做这种花选择了0盆: 几个返回条件: 1.rest==0时,记录ans++(ans是全局变量)return,不需要满足re…
BZOJ原题链接 洛谷原题链接 线段树合并裸题. 因为交换子树只会对子树内部的逆序对产生影响,所以我们计算交换前的逆序对个数和交换后的个数,取\(\min\)即可. 对每个叶子节点建一棵动态开点线段树,然后向上合并并更新答案. 而逆序对可以在线段树合并的过程中算出来,因为是权值线段树,根据\(mid\)计算贡献即可. 这题洛谷和\(BZOJ\)不卡常,而\(LOJ\)丧心病狂地把每个点开到\(160ms\),我这份代码需要改成超级快读才能卡过.. #include<cstdio> using…
推荐YCB的总结 推荐你谷ysn等巨佬的详细题解 大致流程-- dfs求出当前树的重心 对当前树内经过重心的路径统计答案(一条路径由两条由重心到其它点的子路径合并而成) 容斥减去不合法情况(两条子路径在重心的子树内就已经相交) 删除重心(打上永久标记),对子树继续处理,转1 求重心是板子,算答案的方法要依题而定,一般都要容斥. 模板题洛谷传送门 calc函数中,头尾两个指针扫的计数方法也是一种套路 因为要sort,所以复杂度\(O(n\log^2n)\),不过蒟蒻实测你谷数据\(k\)不超过\(…
传送门 BZOJ 然而是权限题 洛谷 Solution 发现题目给出的一些规律,emm,如果我们新凑出来的一个数,那么后面一个数一定是\(sum+1\). 于是就可以主席树随便维护了! 代码实现 #include<bits/stdc++.h> using namespace std; inline int gi(){int x;scanf("%d",&x);return x;} const int N=100010; int rt[N],tot; int n,a[N…
Portal Description 进行\(T(T\leq10^5)\)次询问,每次给出\(x_1,x_2,y_1,y_2\)和\(d\)(均不超过\(10^5\)),求\(\sum_{i=x_1}^{x_2} \sum_{j=y_1}^{y_2} [gcd(i,j)=d]\). Solution 莫比乌斯反演入门题. 设\(calc(n,m)\)表示\(i\in[1,n],j\in[1,m]\)且\(gcd(i,j)=d\)的数对\((i,j)\)的个数.那么简单地进行容斥,可知\(ans=…
写的让人看不懂,仅留作笔记 静态主席树,相当于前缀和套(可持久化方法构建的)值域线段树. 建树方法:记录前缀和的各位置的线段树的root.先建一个"第0棵线段树",是完整的(不需要用可持久化的方法),所有数据为0.后面每一个位置的前缀和放的线段树都先设root与前一位置的线段树一样,然后再按照原序列在指定位置进行(可持久化的)单点加法.(类比放数值的前缀和,每一位置的前缀和是前一位置前缀和加上当前位置数值) 带修改主席树,相当于区间树状数组套(可持久化方法构建的)值域线段树. 建树方法…
题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别地,可以为0.G 的最小路径覆盖是G 的所含路径条数最少的路径覆盖.设计一个有效算法求一个有向无环图G 的最小路径覆盖.提示:设V={1,2,.... ,n},构造网络G1=(V1,E1)如下: 每条边的容量均为1.求网络G1的( 0 x , 0 y )最大流. «编程任务:…
洛谷p3803 FFT入门 ps:花了我一天的时间弄懂fft的原理,感觉fft的折半很神奇! 大致谈一谈FFT的基本原理: 对于两个多项式的卷积,可以O(n^2)求出来(妥妥的暴力) 显然一个多项式可以用a0+a1X+a2X^2+a3X^3+a4X^4--表示. 也可以用(x1,y1),(x2,y2),(x3,y3),(x4,y4)的点集来表示. 用点值表示有一个好处:两个多项式的卷积可以直接取相同的x值,y值相乘得到. 那么,怎么转化为点值表示呢? 直接代进去?显然也是O(n^2),没用--…