![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++编程
almz654321
这个作者很懒,什么都没留下…
展开
-
10.26 dp练习
采药dp中的01背包 最经典的问题了吧 problem 1048#include <iostream>#include <cmath>#include <cstdio>using namespace std;int f[1100][1100];int w[1100],v[1100];int main(){ int n,m; cin>>m>>n; for(int原创 2017-10-26 17:26:33 · 408 阅读 · 0 评论 -
选数字
好难啊…… 一个矩阵,可以每一行或者每一列减去p,求k次操作后的最高RP值如果不会正解的话,最少是可以得到第三、四个点的分的,第一二个点可以随便的复杂度A掉正解?枚举取的行数 如果取了x行的话,那么一定取了k-x列(废话) 然后再操作的过程中,每一行或每一列都减P的话,对这一行或这一列的最值是没有影响的,所以可以过程中暂时不考虑减P造成的影响(最后要考虑) 因为我们是单独选的,没有考虑 行对原创 2017-10-07 16:34:04 · 347 阅读 · 0 评论 -
大数阶乘取模
水了90分。。。 如果不会正解的话,直接暴力拿分,无脑暴力可以拿到90分 正解分块打表暴力就是直接求阶乘然后取模。。。 加一个比较有用的特判:如果n>=p,那么n的阶乘的因子中一定有p,n的阶乘膜p一定等于0#include <iostream>#include <cstdio>using namespace std;long long n,p;int js(int n){ l原创 2017-10-07 10:22:18 · 7807 阅读 · 0 评论 -
【清北学堂】dwarf
本来写的60分的代码,结果得了75分 就是dfs深搜,SPFA都忘了,也没看出来 深搜看看是买这个物品还是换这个物品,比较一下价格 很简单不说了#include<iostream>#include<cstdio>#include<cstring> using namespace std;int n,m,p;struct H{ int v,a,b;}thing[100007]原创 2017-08-22 11:09:35 · 493 阅读 · 0 评论 -
【清北学堂】number
二分答案,先排一下序,再扫,同时搞一个指针倒着扫,计算比当前数小的数的个数,判断 蜜汁WA#include <iostream>#include <cstdio>#include <algorithm>using namespace std;long long k;int n,m;int num1[200001],num2[200001];int check(long long t)原创 2017-08-22 11:06:27 · 262 阅读 · 0 评论 -
度度熊与邪恶大魔王
dp… 因为防御力的范围很小,最大才是10,所以就可以枚举防御力,从1到10,然后如果防御大于等于造成的伤害的话就直接continue…如果防御小于伤害的话就砍,然后如果用这一个技能就把它砍死了,那么这就是使用晶石最少的技能,否则就通过前面的dp值推出当前的dp值(dp[i][j]=dp[i-mul][j]+con[k];) dp[i][j]表示防御力为j,打出i点伤害所需要的最少的晶石#inc原创 2017-08-18 15:12:33 · 193 阅读 · 0 评论 -
Good News And Bad News
扔链接跑 处理出来i之前的最大的dis,i之后的最大的dis,然后 if((min_aft[i]-dis[i-1]>=0)&&(min_dis[i-1]+dis[n]-dis[i-1]>=0))#include <iostream>#include <cstdio> using namespace std;long long dis[1000010],a[1000010],min_dis[1原创 2017-08-11 11:22:29 · 875 阅读 · 0 评论 -
【百度之星】Chess
太简单不说 组合数 杨辉三角可以过 代码找不到了… 不贴了… 那场比赛就A了这一道题… - -完- -原创 2017-08-18 10:54:56 · 215 阅读 · 0 评论 -
UER #2 手机的生产
挣扎了好久终于A了 大佬说这是一个模拟题,然后果断发现看不懂。。。 大佬给我们讲(fa)了(le)一(ti)下(jie),大概就是把这个表达式用 | 分开,分成每份只有 & ,然后对于只有”&&”的情况,k个fork()的表达式会有k种方案返回0,1种方案返回1(找规律)。最后从左到右计算i到tot的方案数(这应该是dp啊)#include <bits/stdc++.h>#define MOD原创 2017-08-18 10:41:58 · 413 阅读 · 0 评论 -
蛋疼度度熊
百度之星初赛B赛T6 先把这些线段以左端点升序排列,然后把重叠的,重合的,还有一些什么特殊的情况都处理出来,把连续的几段处理成一段(dalao说可以不处理) 然后开一个队列,从前往后压入队列,如果出现了断开的部分,就用m比较,如果小于m,就把m减去这一段的长度,然后压入队列,如果大于m,就弹出队首元素,增加m,直到这一段的长度小于m进行更新,在这期间,要不断的进行更新ans的值, 要注意的是一原创 2017-08-17 16:56:17 · 3151 阅读 · 0 评论 -
chocolate
题意大概就是一根长度为n的巧克力,要分成全部为1的巧克力,问最多可能有多少次分出来的是相等的两段巧克力 不会,部分分 正解 找规律,可以发现ans=n-c(n),(c(n)为n的二进制数中1的个数)#include <cmath>#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>using原创 2017-10-07 17:22:27 · 258 阅读 · 0 评论 -
逆欧拉函数
难 φ(x)=x∏i=1n(1−1pi)φ(x)=x\prod_{i=1}^n(1-\frac{1}{p_i}) 逆推可得出x的关系式 x=φ(x)∗p1p1−1∗p2p2−1∗...∗pnpn−1x=φ(x)*\frac{p_1}{p_1-1}*\frac{p_2}{p_2-1}*...*\frac{p_n}{p_n-1} 然后 dfs//copy#include <cstdio>#i原创 2017-10-08 09:59:24 · 578 阅读 · 0 评论 -
浴谷八连测 Round#1 T1
n!在k进制下0的个数40分不用说了吧。。暴力+10进制的特判#include <iostream>using namespace std;int num[100];int main(){ int n,k; cin>>n>>k; if(k==10) { int ans=0,flag[6]={0,0,0,0,0,0}; for(i原创 2017-10-15 17:08:55 · 293 阅读 · 0 评论 -
题
订餐题意有几道菜可以选择着吃 对于吃的第i道菜 美味程度为a[i]*i 求连续吃k道菜的最大的美味值 处理前缀和 注意爆int#include <iostream>#include <cstdio>using namespace std;long long a[200001],s[200001];int main(){ freopen("dish.in","r",stdin);原创 2017-10-23 14:42:21 · 339 阅读 · 0 评论 -
蜜汁最大完全平方数
以前有过类似的思路,就是奇数次方就减一,偶数次方就不管,然后最后快速幂统计一遍 这个题思路想出来就很简单,想不出来就完蛋 遇见了很多坑,先是long long ,没开long long结果得了5分。。。 然后是有一句应该是k=k>>1,结果写成了k>>1,结果k到了这里一直不变。。懵逼地调了好长时间。#include <iostream>#include <cstdio> using na原创 2017-10-06 16:50:59 · 273 阅读 · 0 评论 -
TB 16 10 29 PM
T180分 最后两个点变态,没有初始序列,然后就不知道怎么输入了。。 前面点不算难,只不过原始序列中有三个同色球在一起的,比较坑,然后就算是模拟了, string里面有一些奇怪的函数,非常有用。。str.erase(pos,n); 删除从pos开始的n个字符str.insert(pos,s); 插入注意在消掉三个球之后看一下是否还可以继续消除#include<iostream>#includ原创 2017-10-06 15:54:44 · 167 阅读 · 0 评论 -
天天和不可描述
不算难吧看到题就打算一步一步往前走,第一个左括号之前的全部输出,然后第二个左括号之前的反着输出,以此类推……但是这种思路很SB,完美的A掉没有括号嵌套的点,但是有嵌套的就会WA。。。重整思路?emmm 数着点左括号,记录每个左括号的位置,可以开一个栈来实现 然后读到右括号就开始把到前面的左括号之间的字符翻转。。。 然后?然后删除这个左括号继续进行上面的操作#include<iostream>原创 2017-10-05 15:36:13 · 284 阅读 · 0 评论 -
组合数
好简单啊…… 就是分解质因数 只需要分解2 和 5 因为只有2*5是等于10的 然后分子分母约掉 看最后对2和5的数量取min#include<iostream>#include<algorithm>#include<cstring>using namespace std;int t,n,m;long long sum[4],ans;long long p;void work原创 2017-10-05 15:22:52 · 207 阅读 · 0 评论 -
回型遍历
令f(n)为斐波那契数列第n项 求斐波那契数列的第f(n)项 【数据规模与约定】 对于70%的数据,1 ≤ n ≤ 10^5 。 对于100%的数据,1 ≤ T ≤ 10^3 ,1 ≤ n ≤ 10^100 样例输入 4 0 1 2 6 样例输出 0 1 1 21#include<cstdio>#include<cmath>#include<cstring>#i原创 2017-10-05 15:15:40 · 358 阅读 · 0 评论 -
大深坑
一些错误有大的 也有小的恩2017年10月25日 一道水题 NOIP T1难度 不幸WA了10个点 原因 在运算时没有进行特判 超出所需要的运算次数2017年10月24日 一道水题 NOIP T1难度 不幸WA了1个点 原因 特殊情况的特判 要多考虑几种情况 避免失误2017年10月22原创 2017-10-25 10:37:44 · 371 阅读 · 0 评论 -
欧拉函数
欧拉函数φ(n)φ(n) 正常做法直接求#include<iostream>#include<cstdio>#define ll long longusing namespace std;ll n,ans;int main(){ cin>>n;ans=n; for(ll i=2;i*i<=n;i++) { { while(原创 2017-10-08 10:31:03 · 234 阅读 · 0 评论 -
【倍增】 luogu 1613 跑路
懒得贴题自己去看 一道倍增模板题,可以练习代码熟练度 开一个数组f[i][j][k]表示从i到j用2k2^k能否到达,然后枚举中间点,如果i到mid可以用2k−12^{k-1}步到达,mid到j可以用2k−12^{k-1}步到达,那么从i到j就可以用2k2^k步到达,代码如下 for(int mid=1;mid<=50;mid++) for(int i=1;i<=50;i+原创 2017-08-16 20:03:26 · 208 阅读 · 0 评论 -
匹配字符串
题意大概是这样的:有两个串吧,子串可以存在 ‘?’, ‘?’可以和任意字符匹配,然后还有一个母串,判断母串是否包含子串,也就是子串是否包含于母串 例如 子串:aa?bbcc 母串:aabbbcc 这就是符合要求的串思路大概是这样的这就是kmp啊,只是匹配的时候多了一个条件(当出现 ‘?’时直接跳过此位) 就是那层if里面加一个s[t2]=='?'代码大概是这样的#include <cstdi原创 2017-07-25 15:11:35 · 185 阅读 · 0 评论 -
【模板】 字符串哈希
哈希(Hash)算法,即散列函数。它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。纯裸的模板题 因为要使字符串的哈希值各不相同,所以要取一些奇奇怪怪的质数进行MOD,比如19260817(逃) 常见的质数 1e9+7原创 2017-08-16 14:41:33 · 3657 阅读 · 0 评论 -
【常用模板】 线段树区间操作
线段树 非常简单的线段树区间操作,比单点操作难那么一点点(一点点?)但是……似乎……并没有这么简单,这么多的子程序,检查比写都难,可我一直把想要求的区间左右端点和当前端点混着用,就一直不过,很尴尬#include#include using namespace std;int a[110000];struct tree{ long long l,r,sum,addi,len;}原创 2016-12-30 21:19:06 · 226 阅读 · 0 评论 -
【常用模板】 线段树单点操作
输入 第一行两个整数n,m,第二行n个整数表示初始时的数组A[ ]; 接下来m行,每行3个整数a,b,c,如果a=1,那么输出A[b]~A[c]中最大的数 若a=2,那么将A[b]改为c 输出 每行输出一个整数,对应每一个操作a=1超级简单的线段树模板题,一遍就过了,子程序太多,变量更多,容易搞混很尴尬,就在几周前的noip中,有一个dalao给我们得瑟说他会线段树,原创 2016-12-23 16:29:57 · 308 阅读 · 0 评论 -
【luogu】 P1880 石子合并
原题原题原题原题原题 先贴上错误代码。。。 ↓错误代码↓#include <iostream>#include <cstdio>#include <cstring> using namespace std;int f[1100][1100],f2[1100][1100],st[1100],a[1100];int main(){ memset(f,127,sizeof(f));原创 2016-12-21 15:04:26 · 274 阅读 · 0 评论 -
【noip 2016】 组合数问题(problem)
杨辉三角形求组合数问题 原题点这里#include <iostream>#include <cmath>using namespace std;long long a[3100][3100];int f[3100][3100];int n,m,t,k;int main(){ cin>>t>>k; a[1][1]=a[2][1]=a[2][2]=1; for(i原创 2016-11-25 17:37:28 · 280 阅读 · 0 评论 -
【清北学堂】 死亡(death)
M个位置可以打sif,N+1个人等着打sif,已知前N个人的时间,问第N+1个人什么时候才能打sif(不能插队,即必须按顺序来打sif) 输入N,M以及每个人所需要的时间;输出第N+1个人所需的时间用优先队列用优先队列用优先队列 队列用来存每个水龙头所需要的总时间,到了最后用了最少时间的水龙头就是第N+1个人所需等待的时间#include <iostream>#include <queu原创 2016-11-25 15:40:52 · 379 阅读 · 0 评论 -
【noip 2004】 合并果子
noip2016结束后的第一份代码……优先队列的练习 合并果子 原题在这里#include <iostream>#include <queue>#include <vector>using namespace std;priority_queue <int> que;int main(){ int n,x,tot=0; cin>>n; for(int i=1;原创 2016-11-25 14:20:28 · 312 阅读 · 0 评论 -
【luogu】 P1433 吃奶酪
题目描述 房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块奶酪的坐标。 两点之间的距离公式=sqrt((x1-x2) * (x1-x2)+(y1-y2) * (y1-y2)) 输出格式: 一个数,表示要跑的最少距离,保留原创 2016-11-27 09:25:32 · 455 阅读 · 0 评论 -
【noip 2005】 采药
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如原创 2016-12-02 14:01:17 · 246 阅读 · 0 评论 -
【noip 2016】 蚯蚓(earthworm)
100分程序,写了2天+1小时 →题目在这里← 大神就是厉害……写的程序居然看都看不懂,还有就是cena上过了但是luogu上一直是恶心的TLE 首先是考虑p=0时,数组大小开到了1100000,然后就是WA,改成了9100000之后终于坑到50分,然后开始考虑p≠0,经过神犇程序的一番洗脑,终于发现p=0和p≠0的区别就是不等于的时候需要处理时加上长的那一部分,处理完之后再减去,输出时再加上原创 2016-12-11 10:36:05 · 559 阅读 · 0 评论 -
【模板】 欧拉路 欧拉回路
啥是欧拉路(欧拉回路)?? 如果给定无孤立结点图G,若存在一条路,经过图中每边一次且仅一次,这条路称为欧拉路; 如果给定无孤立结点图G,若存在一条回路,经过图中每边一次且仅一次,那么该回路称为欧拉回路。 存在欧拉回路的图,称为欧拉图。欧拉路(欧拉回路)有啥用??一笔画问题 即寻找欧拉路或欧拉回路 裸的模板题 骑马修栅栏,很裸很裸很裸欧拉路(欧拉回路)怎么写??如果寻找欧拉回路,原创 2017-03-03 17:25:13 · 1849 阅读 · 0 评论 -
【Luogu】 食物链
→→→ 题目 ←←←我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加continue; 我忘了加conti原创 2017-02-26 10:10:00 · 294 阅读 · 0 评论 -
Tyvj 小Y的问题
【问题描述】 有个孩子叫小 Y,一天,小 Y 拿到了一个包含 n 个点和 n-1 条边的无向连通图,图中的 点用 1~n 的整数编号。小 Y 突发奇想,想要数出图中有多少个“Y 字形”。 一个“Y 字形”由 5 个不同的顶点 A、B、C、D、E 以及它们之间的 4 条边组成,其中 AB、 BC、BD、DE 之间有边相连。 同时,无向图中的每条边都是有一定长度的。一个“Y原创 2017-08-16 10:57:30 · 439 阅读 · 0 评论 -
Tyvj 铺瓷砖
【问题描述】 有一面很长很长的墙。你需要在这面墙上贴上两行瓷砖。你的手头有两种不同尺寸的瓷 砖,你希望用这两种瓷砖各贴一行。瓷砖的长可以用分数表示,贴在第一行的每块瓷砖长度 为 A/B ,贴在第二行的每块瓷砖长度为C/D. 两排瓷砖从同一起始位置开始向右排列,两排瓷砖的第一块的左端的缝隙是对齐的。你想要知道,最短铺多少距离后,两排瓷砖的缝隙会再一次对齐。 【输入】原创 2017-08-16 10:37:45 · 436 阅读 · 0 评论 -
lowbit
树状数组(lowbit) Time Limit:1000ms Memory Limit:128MB 题目描述 这天,LYK在学习树状数组。 当它遇到一个叫lowbit的函数时有点懵逼。lowbit(x)的意思是将x分解成二进制,它的值就是,其中k是最小的满足(x & )>0的数。(&是二进制中的and运算) LYK甚至知道lowbit(x原创 2017-07-23 14:51:54 · 297 阅读 · 1 评论 -
最小网络最大流
题目描述如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用。输入输出格式输入格式:第一行包含四个正整数N、M、S、T,分别表示点的个数、有向边的个数、源点序号、汇点序号。接下来M行每行包含四个正整数ui、vi、wi、fi,表示第i条有向边从ui出发,到达vi,边权为wi(即该边最大流量为原创 2017-05-03 15:27:09 · 615 阅读 · 0 评论 -
bzoj1066 蜥蜴
1066: [SCOI2007]蜥蜴Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3916 Solved: 1965[Submit][Status][Discuss]Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离原创 2017-04-28 16:55:13 · 260 阅读 · 0 评论