思维
阿狸是狐狸啦
这个作者很懒,什么都没留下…
展开
-
HDU - 6295 (暴力)
题意:给你n个点构成的树,每个点随机[1,n]的权值,问你树上存在多少回文串。思路:权值是随机[1,n]。考虑下概率大胆猜测一下回文串长度肯定非常短。暴力一下长度小于等于3的数量就行了。#include <bits/stdc++.h>using namespace std;typedef long long ll;vector<int> q[100005];...原创 2019-04-30 14:09:56 · 322 阅读 · 0 评论 -
hdu 5920(贪心+模拟大数)
思路:当前数位数为偶数时,我们可以取它的前一半,然后减一翻,在翻转复制一下,就可以去掉前(n/2)-1位。比如234578,取234-1=233.然后翻转复制一下位233332,然后用234578-233332即可。如果位数为奇数时,类似于上面的情况。23456,我们取234-1=233,然后取23456的前n/2位翻转后复制到后面,就变成23332,然后用23456-23332即可。如此...原创 2018-09-13 15:34:54 · 202 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第九场)Typing practice
链接:https://www.nowcoder.com/acm/contest/147/F来源:牛客网 Niuniu is practicing typing.Given n words, Niuniu want to input one of these. He wants to input (at the end) as few characters (without backspa...原创 2018-08-17 16:00:43 · 303 阅读 · 0 评论 -
hdu 6396(优先队列)
题意:一个人有k种攻击力,每个怪物有k种防御力,攻击力大于防御力就能杀死怪物,并获得攻击力的提升,问你最多杀死几个怪物。最后你的攻击力是多少。思路:k最多5,所以建立5个优先队列,每个k占一个。当前怪物k1小于人的k1时,就把这只怪物扔到k2堆里,每个怪物最多被扔5次。最后一次出来时说明可以杀死他,答案记录下让他出队即可。这题输入很容易被卡,我最开始用普通的读入优化也被卡了,后来换了个读入才过...原创 2018-08-14 13:35:37 · 251 阅读 · 0 评论 -
UVALive - 4394 (区间dp)
题意:给出两个字符串;每次可以选择第一个字符串的一个区间,全部刷成某一个字母;问最少刷几次可以刷成第二个串。题解:假设a是一个空串,设dp[i][j]为把空串a的【i,i+len-1】位置刷成b串【i,i+len-1】,需要刷几次。其中len为我们当前子串的长度。可以得到当b[i]等于中间某个位置b[j]时dp[i][i+len-1]=min(dp[i][i+len-1],...原创 2018-07-18 11:23:40 · 177 阅读 · 0 评论 -
山区修路(河南第十一届省赛C题)
2107 : 山区修路时间限制:3 Sec 内存限制:128 MiB提交:30 答案正确:13提交 状态 讨论区题目描述SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江、B水之间,方圆数千平方公里,相传上古的神医在此搭架上山采药而得名。景区山峰均在海拔3000米以上,堪称"华中屋脊"。SNJ是以秀绿的亚高山自然风光,多样的动植物种,人与自然和谐共存为主题的森林生态区。SNJ处于中国地势第二阶...原创 2018-06-05 11:08:35 · 971 阅读 · 0 评论 -
美团2018年CodeM大赛-资格赛 A,B
题目描述小美和小团最近沉迷可乐。可供TA们选择的可乐共有k种,比如可口可乐、零度可乐等等,每种可乐会带给小美和小团不同的快乐程度。 TA们一共要买n瓶可乐,每种可乐可以买无限多瓶,小美会随机挑选其中的m瓶喝,剩下的n-m瓶小团喝。 请问应该如何购买可乐,使得小美和小团得到的快乐程度的和的期望值最大? 现在请求出购买可乐的方案。输入描述:第一行三个整数n,m,k分别表示要买的可乐数、小美喝的可乐数以...原创 2018-06-11 20:45:48 · 235 阅读 · 0 评论 -
牛客练习赛16-D(求值)
链接:https://www.nowcoder.com/acm/contest/84/E来源:牛客网题目描述给定n个数字a1, a2, ..., an。 定义f(l, r) = al | al+1| ... | ar。 现在枚举(1 <= l <= r <= n),问不同的f值一共有多少个。输入描述:第一行一个整数n表示数组大小 (1 <= n <= 100,000)...原创 2018-04-27 22:13:39 · 233 阅读 · 0 评论 -
hdu-1046(找规律)
题意:给你一个n*m图,问你经过每个点然后回到起点最短距离。题解:n和m很大,很明显需要找规律。画几个图,发现n和m只要有一个是偶数答案就是n*m,当n和m都是奇数时,发现答案是n*m-1+saqt(2),注意输出格式。#include <iostream>#include <string.h>#include <algorithm>#include &...原创 2018-04-27 00:04:27 · 198 阅读 · 0 评论 -
hdu_1030 (找规律)
题意:给你一个数塔,问你两个位置的最短距离。题解:一般这种规律题都需要对图形特殊处理一下,比如旋转一下,然后就发现规律了。#include <iostream>#include <string.h>#include <iostream>#include <algorithm>using namespace std;typedef long ...原创 2018-04-24 14:53:40 · 181 阅读 · 0 评论 -
hdu5616 (01背包或者折半枚举)
题意:n个砝码,给你若干个重物,问你是否能称出来。题解:n只有20所,直接枚举有三种状态,放左边,放右边,不放。共有3^20次方情况。如果枚举一半,找另一半,找另一半共有2*(3^10)次方复杂度,方法可行。还有一种折半方法,把20个物品重量取相反数变为40个物品,然后对于这40个物品的取放便包含了所有情况。直接枚举复杂度2^40,这题的重量很小,重复量很多,其实暴力枚举可以水过去。而另一种方法当...原创 2018-04-17 16:00:05 · 303 阅读 · 0 评论 -
1060D - Social Circles(贪心)
题意:n个客人坐成一个圈,每个人希望自己左边有l个空位置,右边有r个空位置。问你最少要几个位置。思路:因为一个人的右边是他右边人的左边,可以重叠,所以我们需要保证尽可能重叠。排下序即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;int a[100005],b[100005];int...原创 2018-11-18 23:46:49 · 250 阅读 · 0 评论 -
codeforce 1077E (暴力)
题意:给你n个题目,每个题目的a[i]代表他所属的类别,举办若干场比赛,要求每一场比赛的题目数量是上一场题目数量的2倍,第一天的题目数量没有限制。求最大化的题目数量和。思路:刚开始想二分一下最后一天的题目,然后判断一下,发现n的范围2e5,a[i]最大1e9,2e5*32可以直接暴力。我们假设当前最后一天的题目为p,那么我们一直除以2,判断他最多能举办几天然后累加一下题目即可,注意只有第一天的...原创 2018-11-20 00:03:42 · 339 阅读 · 0 评论 -
377A - Maze(搜索)
题意:给定连通图,让你把一k个'位置变成墙之后仍然是连通图。思路:因为给定的图是联通的,我们从某一个联通点开始dfs一下,根据dfs的性质,我们在递归树上倒着删点就行了。#include <bits/stdc++.h>using namespace std;char s[505][505];int k,vis[505][505];int dx[4]={0,0,1,-1...原创 2018-11-17 22:48:40 · 215 阅读 · 2 评论 -
浙江省赛C Array in the Pocket(贪心)
题意:给一个数组A,求一个B,使的B是A的全排列,且对任意位置a[i]!=a[j],求满足条件字典序最小的B数组。思路:我们从头开始,每次放最小的元素,判断所有元素剩余个数加上A数组当前位置后面所有元素剩余个数是否小于n-i即可。用set+优先队列瞎搞就行了。#include <bits/stdc++.h>using namespace std;typedef long ...原创 2019-04-28 15:46:47 · 1243 阅读 · 0 评论 -
CSU - 1808 (最短路)
题意:给你n个点,m条边,边类型不同转移需要额外花费,问1到n的最短路。思路:因为每个点可能有多种不同类型的边转移过来。因为类型太多我们无法二维记录当前点由那个边转移来的。所以我们可以枚举边。把每条边当成一个点,做最短路。#include <bits/stdc++.h>using namespace std;typedef long long ll;struct nod...原创 2019-04-26 14:47:31 · 149 阅读 · 0 评论 -
fzu-2105(线段树区间更新)
题意:区间有三种二进制操作,区间中的值不超过16,然后查询区间和。因为每个数很小,所以区间内存在大量重复值,并且经过二进制操作后区间中相等的值会越来越多。我们只需要记录当前区间中的值是否相等即可。#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm...原创 2019-03-26 14:45:40 · 234 阅读 · 0 评论 -
UVALive - 4625(dp+二分)
题目:给n个数,把它们分成m-1段,每段长度不超过d,且每段长度必须为偶数,让你最小化每段的半段权值。(注意是半段)思路:如果没有半段限制的话,我们可以贪心从左到右将可行的分段尽量拉长。但是加上半段限制后,我们贪心的话就错了。114 5 1018 11 9 96 3 11 96 67 31 12 58 68 98 76上面这组数据的答案是110,而从左到右的贪心得到的结果是12...原创 2019-01-19 11:00:28 · 156 阅读 · 0 评论 -
UVALive - 4794 (状压枚举子集)
题意:给你一块x*y的巧克力,n个面积a[i],每次只能横着或者竖着切一次,问你是否能切出来n块面积为a[i]的巧克力。思路:n为15,可以想到状压所有状态,然后记忆化搜索,设立状态d[x][s],sum[s]表示集合为s的巧克力面积和就是当前要切的巧克力的面积,x表示当前要切的巧克力的长和宽的最小值,那么我们就知道当前巧克力的长和宽,当前状态向下转移时有两种方式,一种是把长分为两部分,一种是...原创 2019-01-18 17:39:25 · 134 阅读 · 0 评论 -
UVA - 10859 (树形dp,一个变量维护两个值)
题意:给你一个森林,每个点可以放一台灯,这台灯会照亮和它相邻的边,然你求最少安装几台灯能照亮所有的边,并且保证灯的数量最少的情况下,被两台灯同时照亮的路尽可能多,输出灯的数量,同时被两台灯照亮的边数,被一台灯照亮的边数。思路:很明显的树形dp,我们先考虑让灯最少的情况。用dp[i][0]表示当前节点没有灯,并且他相邻的边都有灯照亮所需灯的最小值。用dp[i][1]表示当前节点有灯,并且他相邻的...原创 2019-01-18 11:58:59 · 191 阅读 · 0 评论 -
UVA - 11825 (状压+子集枚举)
题意:给你若干个集合,让你把这些集合做划分使的每个划分的并集是一个全集,问你最多能进行多少个划分。思路:首先了解下子集枚举的方法 for (int i = s; i; i = (i - 1) &s)i - 1使得末尾最右边的1右边的0变成1,自己变成0,然后经过与运算把不存在的1删掉,原来是0的位无论如何也不会变成1,但是原来是1的位就形成了不断-1的模式。有了这...原创 2019-01-18 11:22:34 · 220 阅读 · 0 评论 -
hdu 6231 (二分+尺取)
题意:给你一个n个数的数组,把这个数组中长度大于等于k的区间中第k大的数取出来组成一个新数组,问你这个新数组第m大是多少。可能有的人和我一样没去分开第k大和第k小的关系,比如数组[1,2,3,4,5],第2大就是4,第2小就是2.思路:我们可以用尺取算出第k大大于等于x的区间个数有多少个。当我们了解这个之后自然能想到二分答案。我们枚举区间右端点r,然后判断当前大于等于x的个数如果大于等...原创 2018-12-03 18:22:42 · 369 阅读 · 0 评论 -
hdu-6242(随机化计算几何)
题意:给你1e5个点,让你输出一个圆,满足至少n/2个点在圆上。思路:因为至少有n/2个点在圆上,我们可以随机三个点。那么这三个点外接圆满足条件的概率至少为1/2*1/2*1/2=1/8,那么多随机几次就好了。注意特判n小于等于4的情况。#include <bits/stdc++.h>using namespace std;struct Point { double x...原创 2018-12-03 15:29:29 · 402 阅读 · 1 评论 -
1000C - Covered Points Count
题意:给你n个区间,问你被覆盖i次的点的个数有多少个,区间个数2e5,区间范围1e18。思路:这个题有个简化版本,就是把区间范围改成1e6的题目。那么我们对于区间[l,r],修改数组a[l]+=1,a[r+1]-=1;然后求个前缀和,每个点的值就是被覆盖了多少次。统计一下即可。这个题区间范围很大,我们可以把每个加一减一操作存起来,然后按照位置排序,可以发现第i个操作和第i+1个操作之间的区...原创 2018-11-17 23:20:53 · 213 阅读 · 0 评论 -
POJ 1150 The Last Non-zero Digit
题意:求n!/(n-m)!的最后一位非零位。题解:直接求结果模10会超时,而且2和5的结果必然是0,所以先把n!中2和5的因子去掉。可以看出:1,2,3,4,5,6,7,8,9,10。。。除尽2和5之后为1,1,3,1,1,3,7,1,9,1。。。只剩下1,3,7,9的结尾的数。我们只需要统计一下以3,7,9结尾的数字个数即可。若干个3相乘结果的结尾是有规律的,可以简化计算。写两个函数统计以3,7...原创 2018-03-27 21:51:43 · 153 阅读 · 0 评论 -
POJ 3977 Subset (简单折半枚举)
题意:n个数选若干个,使他们和的绝对值最小,如果存在多个解,选择所选的个数最少的。题解:n为35,枚举所有情况肯定超时,可以枚举一半然后二分找另一半。#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>#include <math.h&g...原创 2018-04-10 10:01:30 · 242 阅读 · 0 评论 -
poj 1850 Code (组合数学)
题意:合法的字符串序列:由小写字母组成,每一个字符比后一个字符ASCII码要大将合法字符串序列按字典序编码,a编号为1,b编号为2,c编号为3.....ab编号为27以此类推,给定一个串,问你比他小的和法串有多少个,如果这个串不合法则输出0.题解:我们可以先求出长度比它小的串总数,若长度为i(i<n),我们需要在26个字母中选出i个即可。若i=n的话,我们可以假设前j-1个字母与原串相等,枚...原创 2018-03-26 21:41:34 · 103 阅读 · 0 评论 -
LightOJ 1213 (Fantasy of a Summation )
#include int cases, caseno;int n, K, MOD;int A[1001];int main() { scanf("%d", &cases); while( cases-- ) { scanf("%d %d %d", &n, &K, &MOD); int i, i1, i2, i3原创 2018-02-01 18:04:58 · 174 阅读 · 0 评论 -
UVA - 11426 GCD - Extreme (II) (欧拉函数)
题意:求f(x)前n项和 f(x)=SUM(gcd(i,j)) (1题解:设g(n,i):与n的gcd为i的数有多少个。那么最多可以有n/i个,这些数当中肯定有一些数与n的gcd是i的倍数。我们可以想到与n/i互质的数的个数肯定就是我们要求的数,比如:g(24,3),24可分解为3*3*3*3*3*3*3*3,3可分解为3,那么与8互质的数有1,3,5,7。那么这些数乘以三之后为3原创 2018-02-01 11:05:29 · 121 阅读 · 0 评论 -
LA2678 最短子序列 ( 从O(n^3)到O(n) )
小白书49页题意: 给你一个正整数序列,问你在里面找到一个最短的子序列,要求子序列的和大于等于k,输出序列长度。1:很容易想到n三方的暴力,枚举序列左右端点,然后算和。2:我们可以预处理前缀和,然后程序复杂度就变为O(n^2)3:我们可以枚举右端点,然后二分左端点,然后复杂度变为O(nlogn)#include #include #include #incl原创 2018-01-31 10:56:45 · 573 阅读 · 0 评论 -
codeforces520B-Two Buttons
题意:两个数n和m,n可以乘2也可以减1,问n最少进行几次操作可以得到m。如果n>m显然答案是n-m。如果n那么当m为奇数我们可以让它+1,当m为偶数我们可以让他/2,知道m小于n,那么我们再加上(n-m)就是我们要求的答案。#include #include #include #include #include using namespace std;struct n原创 2017-11-27 19:08:11 · 178 阅读 · 0 评论 -
UVALive - 4123 Glenbow Museum
题意:O代表90度,R代表270度,给你一个n问你存在多少长度为n的串,串可以组成一个封闭的多边形。如n=4时序列只能是OOOO,即一个四边形。当n=6时满足题意的序列有RRRRRO,RRRROR,RRRORR,RRORRR,RORRRR,ORRRRR.思路:再看了好多题解加一晚上时间的理解后写了一些自己的理解通过观察我们可的R的数量总比O多4个。那么最多有4对RR,且没有原创 2017-12-21 22:14:32 · 194 阅读 · 0 评论 -
Educational Codeforces Round 34 (Rated for Div. 2) D - Almost Difference
D. Almost Differencetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLet's denote a functionYou are原创 2017-12-13 13:02:40 · 180 阅读 · 0 评论 -
hdu 1010 dfs(奇偶剪枝)
题意:一只狗狗去迷宫找宝藏被骗了,然后迷宫开始塌陷,第t秒时们会开一下,而且每块陆地他只能待一秒,问他能不能逃走。题解:看到n这题需要剪枝,很久没遇到剪枝的dfs了,好像我也只会写最简单的dfs了,奇偶剪枝,算一下当前点到终点的曼哈顿距离,和当前时间和t的差值,如果两者就不同,肯定无法在t秒到达。因为一个点到另一个点如果距奇偶数确定,那么他无论怎么走当到达终点是,走的步数奇偶性一定和原来一原创 2017-12-11 21:34:25 · 154 阅读 · 0 评论 -
CodeForces - 580B 尺取法
题意:n个人每个人有一些钱,还有一个价值,你请这些人吃饭,但你请的人两两之间的钱差值不能超过m。问你获得的最大价值。#include #include #include #include using namespace std;typedef long long ll;struct node{ ll money,si; bool operator< (const node&原创 2017-12-02 14:37:28 · 253 阅读 · 0 评论 -
CodeForces - 573B
题意:n个塔,每个塔有一个高度,每次消除最外面一层,问几次可以消除完。扫面法,左右各扫一遍吗,找每个塔消除用的最小次数,然后找最大值。#include #include #include #include #include using namespace std;typedef long long ll;int dp[1000005];int main(){ int原创 2017-12-02 13:29:53 · 565 阅读 · 0 评论 -
CodeForces 571B Minimization(dp)
题意:一个长度为n的序列和一个k,求一个排列使的最小。 显然我们需要对序列n从小到大排序,保证相邻两数差值最小,对于序列n我们可以分为长度为n/k和n/k+1的若干个序列且每个序列中每个数的位置相差k,对于每个序列我们的得到的|a[i]-a[i+k]|总和即为|a[n|-a[1]| 。那么我们要解决的便是这若干个序列的划分问题。令dp[i][j]表示已经确定了i个系列,其中长度为n/k原创 2017-12-02 10:42:22 · 212 阅读 · 0 评论 -
LightOJ - 1336 (Sigma Function)
题意:f(n)为n所有约数的和,给你一个数n,让你求从1到n中f(n)为偶数的数有多少个.思路:n=p1^e1*p2^e2...,则f(n)=(p1^(e1+1)-1)/(p1-1))*(p2^(e2+1)-1)/(p2-1))....且(p1^(e1+1)-1)/(p1-1))=p1^0+p1^1......+p1^e1;要使得f(n)为奇数,则(p1^(e1+1)-1)/(p1-1原创 2018-02-02 12:16:40 · 163 阅读 · 0 评论 -
LightOJ - 1020 A Childhood Game (巴士博弈)
题意:一对石子,一个人最多拿两个,最少那一个。Allice先拿,最后拿球的输。Bob先拿,最后拿球的赢。问你谁会赢1:当Bob先拿,问题是裸的巴士博弈。2:当Alice先拿,我们可以将n-1,然后就把问题转换成谁先拿完n-1个石子谁赢,然后就是巴士博弈。#include #include #include using namespa原创 2018-02-02 14:38:34 · 306 阅读 · 0 评论 -
【lightoj-1024】Eid (高精度)
题意:给n个数求它们的最小公倍数。 (2 ≤ n ≤ 1000),These integers will be between 1 and 10000.题解:数很大,需要用到高精度,根据唯一分解定理先把每个数分解成若干个质数相乘,因为数据范围是10000,所以不用再打一遍素数表,直接循环一遍即可,根据最小公倍数的性质,答案就是分解之后,i的最大次幂的积。#include <stdio.h&g...原创 2018-02-26 09:38:44 · 184 阅读 · 0 评论