题解
单木
无脑程序猿
展开
-
hdu 4857 逃生和hdu 1285 确定比赛名次
拓扑排序搞起。两题题意比较相似,但是实际两题不同。4857.所以他要让1号尽量靠前,如果此时还有多种情况,就再让2号尽量靠前,如果还有多种情况,就让3号尽量靠前,以此类推。(考虑顺序有优先级)1285.此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。...原创 2018-10-07 18:07:21 · 171 阅读 · 0 评论 -
hysbz1008 越狱(组合数学)
题意监狱有连续编号为1…N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱,对结果取模思路考虑没有犯人信仰相同,情况数为m∗(m−1)n−1m*(m-1)^{n-1}。原创 2016-11-05 19:22:04 · 229 阅读 · 0 评论 -
第八届蓝桥杯大赛c/c++ b组
5200 上面是我的答案 可以直接手算,但容易出错。 或者复制题目给的数据,稍微修改并格式化,放到文本文档中,不管是运行后复制数据,还是用io重定向,都要比手算方便。 比赛的时候freopen的前两个参数写反了,一直读不进去210 比赛的时候没想清楚怎么搜#include<cstdio>#include<cstring>#define LL long long#def原创 2017-04-08 16:24:04 · 1617 阅读 · 0 评论 -
cf655A Buses Between Cities
/* ********************************Author : danmuCreated Time : 2016年04月25日 星期一 18时55分45秒File Name : a.cppVim Commandcopy -> yypaste -> p Pdel this line -> ddCtrl-Z -> u Ucop...原创 2016-04-26 19:06:19 · 808 阅读 · 0 评论 -
codeforces Helvetic Coding Contest 2016 D2 The Wall (medium)
题目链接:http://codeforces.com/contest/690/problem/D2题目大意:一共有n块砖,筑成一道宽度为不超过c的墙,有多少的建筑方案?(n块不必要都用)结题思路:枚举用的砖数,用的砖数为i时的建筑方案数为(i+c−1i)\left(^{i+c-1}_{i}\right)。 这有一个定理把n个相同的物品放入m个不同的盒子中(盒子可为空)的情况数(n+m−1m−1)\原创 2016-07-11 17:28:24 · 336 阅读 · 0 评论 -
codeforces 724B Batch Sort
题意每行的是1到m的一个排列,每行可以挑两个元素交换,可以交换两列一次,至多n+1个操作,问一系列操作后能否满足每行是1到m的递增排列。思路这题思路很飘,操作没有顺序,枚举交换列的操作,交换完成后再利用行操作看能否达到要求。代码/* ********************************Author : danmuCreated Time : 2016年10月1原创 2016-10-10 21:56:10 · 332 阅读 · 0 评论 -
codeforce733D Kostya the Sculptor
题意从n个平行六面体中最多选出两个构成一个新的平行六面体,当新的六面体的能切出最大的球体时,应选哪几个平行六面体。思路用map存储两条边对应的最大的第三边的边长和index,把一个平行六面体构成的看成,和一个“空”的组合。对于每个长宽高,三种情况都比较一下,就好了。代码/* ********************************Author : danmuCreate原创 2016-11-04 19:12:25 · 205 阅读 · 0 评论 -
codeforces733C Epidemic in Monstropolis
题意一群怪兽排队看医生,每个怪兽都有自己的重量,大的吃小的,吃完后大的重量增加到大的加小的重量。问能否达到题目中所给的状态,如果能输出一种可能的情况。思路模拟代码/* ********************************Author : danmuCreated Time : 2016年11月03日 星期四 20时02分38秒File Name原创 2016-11-04 19:25:24 · 299 阅读 · 0 评论 -
codeforces732B Cormen — The Best Friend Of a Man(dp 贪心)
题意n个数除边界外连续两个数必须大于k,给出n个数,问还需要最小加多少满足上述条件,并输出一种可能的情况思路蒙的代码/* ********************************Author : danmuCreated Time : 2016年11月08日 星期二 03时03分48秒File Name : a.cpp***************原创 2016-11-07 19:22:18 · 301 阅读 · 0 评论 -
codeforces732D Exams(贪心+二分)
题意不可描述思路二分答案,贪心判断代码/* ********************************Author : danmuCreated Time : 2016年11月10日 星期四 10时19分02秒File Name : a.cpp******************************** */#include <algorithm原创 2016-11-10 12:07:02 · 312 阅读 · 0 评论 -
codeforces732E Sockets(数据结构+贪心+思维)
题意思路先比较有无相同的,有则匹配,然后对s序列除2向上取整,再比较,一直循环,循环31次。我用的multimap。代码/* ********************************Author : danmuCreated Time : 2016年11月10日 星期四 12时11分27秒File Name : a.cpp*************原创 2016-11-10 16:43:20 · 357 阅读 · 0 评论 -
uva11538
∑i*i=n*(n-1)*(2*n-1)/6,i取1到n-1。原创 2016-04-14 20:32:00 · 258 阅读 · 0 评论 -
uva1362
dp[i][j]=sum(dp[i+1][k-1]*dp[k][j]),k属于i+2~j。原创 2016-04-15 15:59:19 · 311 阅读 · 0 评论 -
bfs入门题 poj 1915 knight moves
这题的起点和终点是合法的,并且后台的数据都能找到一条合法,简单路径(好像从棋盘的任意一点出发,按照国际象棋中骑士的移动规则,能够到达棋盘上任意一点。不确定,有知道的可以告诉我。)。没有什么特殊情况,很适合作为bfs 入门的题目。 #include<stdio.h>#include<string.h>int quene[100000][3],head,tail,...原创 2015-08-19 10:59:59 · 500 阅读 · 0 评论 -
浙江省赛e题Modulo Query
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3940题目大意:对于0到m区间的数模Ai,模A2...模An,later有q个询问,问前面的问题等于yi的数有多少个(1<=i<=q)最后在按照题意求一下最终结果。解题思路:做的时候最关键的部分没有想明白,没有找到好的处理方法,还是经验少吧,题解...原创 2016-04-25 09:34:45 · 580 阅读 · 0 评论 -
南京理工大学第八届程序设计大赛triple
题目链接:https://icpc.njust.edu.cn/Contest/749/D/题目大意:在一定范围内找出三个最大公约数为m且各不相同的数,问有多少中情况。解题思路:刚开始的时侯用容斥写,因为对于这个题而言质因子的分布在1到10的5次方,所以就有大概9千多个质数,而我写的容斥是n^2的,所以就超时,所以这题不能用质因子去容斥,而直接用n的因子,时间复杂度更低。所以n^2的容斥对...原创 2016-04-19 16:13:06 · 785 阅读 · 0 评论 -
南京理工大学第八届程序设计大赛count_prime
题目链接:https://icpc.njust.edu.cn/Contest/749/C题目大意:在一个区间内找到与某个数互质的个数。解题思路:容斥原理,去掉所有与它不互质的数即为所求。默比乌斯反演也能写,如果n能整除m,F(m)=b/m,否则F(m)=0。不过就显得有点笨重了,因为n和a,b都比较大,如果后台数据量大的话,我感觉会超时,好在这题两种方法能过。容斥原理:<...原创 2016-04-19 11:50:30 · 497 阅读 · 0 评论 -
牛客 彩色瓷砖
题意:给一个字符串每个字符可以是’R’, ‘G’, ‘B’或者’Y’,让字符中没有相邻的两个字符相同,要对原字符串最少的修改次数。思路:相邻且相同的子串长度为len,len为奇数,则只需修改第奇数个的位置,所以修改的数量是len/2(整除),len为偶数,也只修改偶数个位置,即可满足情况。代码:#include <bits/stdc++.h>#define pi acos(-1)#define原创 2017-07-26 15:13:44 · 365 阅读 · 0 评论 -
牛客 猜数游戏
题意:给定一个只包含Y,N的字符串,第i个位置上为Y代表某个数能被i整除,N代表不能,如果存在满足每个字符上的条件的数,则称这个字符串是合法的。 已知字符串长度求合法的字符串的个数,答案模1e9+7。思路:如果一个数的质因子超过一个则它位置上的字符是被唯一确定的。 如6 如果2,3为NY,YN,NN,则6上的字符为N 如果2,3位YY,则6上的字符为Y原创 2017-07-26 19:20:57 · 547 阅读 · 0 评论 -
蓝桥杯 算法训练 出现次数最多的整数
这题思路比较简单,易错的点是n能取到小于1的数,而n<=0时不用输出,这一点不知道的话容易把问题想复杂。还有几点关于本题:1,没有特判n<=0这种情况,其它都对的能得80分,没过6,7组测试。2,这题数据没有超int,int也可以过,但用long long 会0ms过。3,这题有人用字符串存数据,过了,但不是因为它给的数据过大,而是因为,n<=0时这种代码输不出东...原创 2015-08-19 10:18:29 · 6023 阅读 · 5 评论 -
区间查询问题
思路一般会用到线段数,树桩数组等数据结构。 一般思路是查询区间的值可以由某个公式直接得出,更为常见的是用上面的数据结构处理整个序列,使得查询区间的值可以直接求出。题目codeforce 718c Sasha and Array原创 2016-09-29 20:34:32 · 342 阅读 · 0 评论 -
数据结构总结
树状数组,特点:单点更新,区间查询,稍微修改后能区间更新,单点查询。线段数,特点:比树桩数组复杂,能处理问题也更加广泛,延时更新。莫队算法,特点:在离线查询的前提下,通过更改查询顺序,来利用前一次查询的结果,达到节省时间的目的。原创 2016-09-29 20:45:33 · 256 阅读 · 0 评论 -
程序易错location
遇到某个条件才更新,注意最后是否需要更新原创 2017-03-22 16:47:02 · 513 阅读 · 0 评论 -
每周训练 题解
A从题目的第一行中可以很容易看出,这题用的是扩展欧几里得算法i∗a+j∗b=n+1i*a+j*b=n+1,因为要保证i∗ai*a,j∗bj*b为正整数,所以i,j必须为正整数。所以这题就求i,j的解为正整数的解的个数。没有看着来说明你对这个算法还不够了解。 求正整数解的个数的时候我是求出i的最小正整数解,再用i求出对应的j,接下来假设我们让i增加(i必然满足情况),那么j必然减小,所以让j除以j的原创 2017-06-05 11:12:52 · 319 阅读 · 0 评论 -
2017-06-05
因为我们的服务器暂时不能用了,所以这周大家现在这看,等好了我在放过去。 题目链接A从题目中给出的条件可以猜出是用最大公约数,做题的时候要注意自己一星一点的想法,答案往往就藏在这里面。那为什么是用最大公约数呢?我们知道最大公约数的求法仔细分下来主要有连个步骤:gcd(a,b)=>gcd(a%b,b)gcd(a,b) => gcd(a\% b, b)gcd(a%b,b)=>gcd(b,a%b)gc原创 2017-06-13 10:55:12 · 236 阅读 · 0 评论 -
spoj5971 LCM Sum
题目链接:猛戳这里题目大意:求∑ni=1lcm(i,n)\sum_{i=1}^{n}lcm(i,n),比51nod上那道最小公倍数之和V2要简单。解题思路:因为是上面那道题的简单版,所以可以直接套用上题的思路。又因为这道起点比较特殊又可以稍加变化速度也更快。 ∑i=1nlcm(i,n)=∑i=1ni∗ngcd(i,n)=n×∑i=1nigcd(i,n)\sum_{i=1}^{n}lcm(i,n)=原创 2016-07-12 20:51:18 · 494 阅读 · 0 评论 -
51nod 1190 最小公倍数之和 V2(莫比乌斯反演)
转自:http://blog.csdn.net/u014610830/article/details/49493279没有看懂,膜拜一下题意: 给定1<=a<=b<=109,求∑i=ablcm(i,b)? 分析: ∑i=ablcm(i,b)=∑i=abi∗bgcd(i,b)=b∗∑d∑a<=i<=bid∗(gcd(i,b)=d)=b∗∑d|b∑...转载 2016-07-12 10:56:42 · 550 阅读 · 0 评论 -
51nod 1035 最长的循环节(无限小数的循环节)
定理如果1<=b<a1<=b<a,a没有2或5的质因子,并且a与b互质,那么b/ab/a 的循环节位数恰好等于min(10e≡1(moda))min(10^e \equiv 1(mod a)),e是正整数。如果1<=b<a1<=b<a,a没有2或5的质因子,并且a与b互质,那么b/ab/a 的循环节位数必整除ϕ(a)\phi(a)。代码/* **************************原创 2016-09-07 09:53:13 · 1629 阅读 · 0 评论 -
51nod-17-10-29
51nod 1183 编辑距离解题思路开始想的用两个字符串的最大长度减去两个字符串的最长公共子串,想当然了。这就要求我们做题的时候一定要考虑全面,不放过一个细节。 再说做法,跟最长公共子串的做法相似,动态规划。代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char str1[1010],原创 2017-10-29 14:56:40 · 233 阅读 · 0 评论 -
gcdDepth
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1054。题目大意 :在(y0,y1)的范围内找出有多少个数满足gcd(x,y)的深度(递归调用的次数)等于d。解题思路:这题刚那拿到第一反应是拉梅定理,找了好久没找到合适的计算方法,经同学提醒发现随便确定一个x,在模拟一下这个过程就能找到规律,当y大于x后gcd(x,y)的深度就...原创 2016-04-19 09:09:30 · 332 阅读 · 0 评论 -
bfs入门 poj 3984 迷宫问题
一般bfs ,据说可以用万能的打印。 #include<stdio.h>int quene[250][3],head,tail,path[250],maze[6][6];void visit(int row,int col){ quene[tail][0]=row; quene[tail][1]=col; quene[tail++][2]=he...原创 2015-08-19 15:48:30 · 527 阅读 · 0 评论 -
poj 3304 Segments 线段与直线相交
#include<cstdio>#include<cstdlib>#include<cmath>const double eps = 1e-8;int n;struct Pt { double x, y; Pt() { } Pt(double x, double y) : x(x), y(y) { }};struct Sg { Pt s, t;原创 2016-08-03 11:56:34 · 275 阅读 · 0 评论 -
hdu 2814 Interesting Fibonacci
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2814题意给出a,b,n,c,求F(ab)F(ab)n−1%cF(a^{b})^{F(a^b)^{n-1}}\%c,F(x)表示斐波那契函数。思路先利用ab%p=aφ(p)+b%φ(p)a^{b}\%p = a^{\varphi (p) + b\%\varphi (p)}降幂,再用找斐波那契模一个数有循环节原创 2016-07-29 16:45:32 · 291 阅读 · 0 评论 -
hdu 1568 Fibonacci
代码#include<cstdio>#include<cstdlib>#include<cmath>const double constant_a = (1 + sqrt(5)) / 2;const double constant_b = (1 - sqrt(5)) / 2;const double constant_c = sqrt(5) / 5;int main(){ int原创 2016-07-29 17:59:03 · 224 阅读 · 0 评论 -
hdu 5778 abs
#include<cstdio>#include<cstdlib>#include<cmath>#include<algorithm>#define LL long longusing namespace std;bool devide(LL x){ for(LL i=2;i*i<=x;++i){ if(x%i==0){ x/=i;原创 2016-07-31 17:29:40 · 321 阅读 · 0 评论 -
hdu 5780 GCD 欧拉函数
思路求连续范围内的最大公约数的和,为了降低时间复杂度,都是枚举最大公约数求和。/* ********************************Author : danmuCreated Time : 2016年08月01日 星期一 06时28分29秒File Name : hdu5780.cpp*************************原创 2016-08-01 10:39:45 · 302 阅读 · 0 评论 -
hdu 5792 World is Exploding 离散化+树状数组
#include <bits/stdc++.h>using LL = long long ;#define ALL(v) (v).begin(),(v).end()#define showtime fprintf(stderr,"time = %.15f\n",clock() / (double)CLOCKS_PER_SEC)const int N = 100000 + 5;int n,A[原创 2016-08-03 10:59:26 · 267 阅读 · 0 评论 -
hdu 5786 Interval 区间gcd求和
#include <bits/stdc++.h>using namespace std;const int N = 80000+5;const int MOD = 1e9+7;int m;vector<int> vt[N], com[N];vector<pair<int,int> > prefix[N], suffix[N];bool mark[N];int g[N], pre_cnt[N原创 2016-08-03 11:00:54 · 1209 阅读 · 0 评论 -
hdu 5793 A Boring Question 数学
思路∑0≤k1,k2,k3,⋯km≤n∏1≤j<mC(kj+1,kj)\sum_{0\leq k_1,k_2,k_3,\cdots k_m\leq n}\prod _{1\leq j<m}C(k_{j+1},k_j) =∑km=0nC(n,km)∑km−1=0kmC(km,km−1)⋯∑k1=0k2C(k2,k1)=\sum_{k_m=0}^nC(n,k_m)\sum_{k_{m-1}=0}^{k原创 2016-08-05 10:43:02 · 257 阅读 · 0 评论 -
hdu 5795 A Simple Nim
题意n堆糖果,每人可以从一堆中取任意多个(大于0)或者把一堆分成三堆,所以sg(0)=0, sg(1)=1, sg(2)=2, sg(3)=3 。 。 。 sg(7)=8; sg(8)=7; sg(9)=9; 。 。 。 sg(8k+1)=8k+1, sg(8k+2)=8k+2, . . . sg(8k+7)=8k+8, sg(8k+8)=8k+7,原创 2016-08-05 11:25:44 · 182 阅读 · 0 评论