摘要: 题意:建光纤的时候,拉一条最长的线 思路:最大生成树 解决问题的代码: 阅读全文
posted @ 2018-08-02 16:30 徐小晋 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 题意:给全村建光纤,求花费最小 思路:最小生成树,树相对于图来说就是没有环 解决问题的代码: 阅读全文
posted @ 2018-08-02 16:25 徐小晋 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个空地,有m条双向大路,w条时光隧道单向路。问能否回到过去? 思路:判断是否有负环存在,如果有负环存在那么就可以一直小就可以回到过去了 解决问题的代码: 其中比较神奇的是存图技巧 阅读全文
posted @ 2018-08-02 16:18 徐小晋 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题意:奶牛拍一系列电影,n头牛拍m部电影,同一部电影种的搭档们距离为1,求最小距离? 思路:Floyd 图 最短路径 for (int i = 0; i <= n; i++) { for (int j = 0; j <= n; j++) f[i][j] = INF; f[i][i] = 0; } f 阅读全文
posted @ 2018-08-02 16:11 徐小晋 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题意:形似4n+1的被称作H-素数,两个H-素数相乘得到H-合成数。求h范围内的H-合成数个数 思路: h-素数 h-合成数 for(int i=5;i<maxn;i+=4) for(int i=5;i<maxn;i+=4) { if(h_prime[i]) continue; for(int j= 阅读全文
posted @ 2018-08-02 16:03 徐小晋 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题意:1.p不是素数 2.(a^p)%p=a 输出yes 不满足输出no 思路: bool is_prime(int n) { for(int i=2;i*i<=n;i++) if(n%i==0) return false; return n!=1;} 2.(a^p)%p快速幂 注意大数快速幂要传入 阅读全文
posted @ 2018-08-02 15:55 徐小晋 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题意:给出A1,…,AH,B1,…,BH以及M,求(A1^B1+A2^B2+ … +AH^BH)mod M. 思路:快速幂 实例 3^11 11=2^0+2^1+2^3 =》 3^1*3^2*3^8=3^11 实现代码: int solve(int a,int b) { int ans=1; whi 阅读全文
posted @ 2018-08-02 15:50 徐小晋 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个字符串,构成回文(空也是回文) 其中增删都需要代价。问:代价最少? 思路:把字符串s变空 dp[i][j]表示变成回文的最小代价 for(i=m-1;i>=0;--i) for(j=i+1;i<w;j++)lsdjfl dp[i][j]=min(dp[i+1][j]+cost[s[i]- 阅读全文
posted @ 2018-08-02 15:11 徐小晋 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题意:硬币分别有 A1.....An种,每种各有C1......Cn个,问组成小于m的有多少种 思路:多重背包问题 dp[i][j]表示用前i种硬币组成j最多剩下多少个 dp=-1的表示凑不齐 dp[0][0]=0; for(int i=0;i<n;i++) for(int j=0;j<=m;j++ 阅读全文
posted @ 2018-08-02 14:08 徐小晋 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题意:奶牛产奶,农夫有m个时间段可以挤奶,在工作时间 f t 内产奶量为m,每次挤完奶后,奶牛需要休息R。问:怎么安排使得产奶量最大? 思路:区间dp dp[i]表示第i个时段 解决问题的代码: 阅读全文
posted @ 2018-08-02 13:53 徐小晋 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 题意:有树1 树2 会掉苹果,奶牛去捡,只能移动w次,开始的时候在树1 问最多可以捡多少个苹果? 思路: dp[i][j]表示i分钟移动j次捡到苹果的最大值 实例分析 0,1 1,2...说明 偶数在树1 奇数在树2 for (int i = 1; i <= n; i++) { scanf("%d" 阅读全文
posted @ 2018-08-02 13:43 徐小晋 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题意:一个n可以拆成 2的幂的和有多少种 思路:先看实例 1 1 2 1+1 2 3 1+1+1 1+2 4 1+1+1+1 1+1+2 2+2 4 5 1+1+1+1+1 1+ 1+1+2 1+2+2 1+4 解决问题的代码: 阅读全文
posted @ 2018-08-02 13:35 徐小晋 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个三角形形状的数字,从上到下,要求数字和最大 思路 :dp 对上面思路的解释: 对于每个位置都是由上面一个位置加当前位置的最大值组成,所以有了上面的递推公式 解决问题的代码: 阅读全文
posted @ 2018-08-02 13:29 徐小晋 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题意:n台电脑,当两台之间的距离小于d的时候可以连接。 题目会进行操作“修复”还有“查询是否已经连接”。只要在查询的时候输出YES或者ON 思路: 解决问题的代码: 阅读全文
posted @ 2018-08-02 13:20 徐小晋 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题意:每头奶牛需要涂抹防晒霜,其中有效的范围 min~max ,现在有L种防晒霜,每种防晒霜的指数为 f 瓶数为 l,问多少只奶牛可以涂上合适的防晒霜?思路: 优先队列+贪心 思路解释:min<f时表示可以访问, 取max与f进行比较,因为先前对f进行排序,所以数小的在前面,这样可以做到不浪费 解决 阅读全文
posted @ 2018-08-02 13:10 徐小晋 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题意:给你两个数,一个n表示这个三角有多少层,一个sum表示总和 思路: 类似杨辉三角 1 1 1 1 2 1 第n行的第k个数 为 n!/k!(n-k)! 解决问题的代码: 阅读全文
posted @ 2018-08-02 12:49 徐小晋 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一个已经排序号的数字,从中间切一刀,成两个数,要求这两个数的差最小 思路:暴力比较差最小值 if (a[mid]) { int x = a[0]; int y = a[mid]; for (int i = 1; i < mid; i++) x = x * 10 + a[i]; for (i 阅读全文
posted @ 2018-08-02 12:41 徐小晋 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 广度优化搜索算法的本质:要求每个状态不能重复,这就需要我们:第一次先走一步可以到达的状态,如果还没有找到答案,就需要我们走到两步可以到达的状态。依次下去 核心算法:队列 基本步骤: 1.将最初状态添加到队列 2.从对列的前端不断取出状态 3.队列后端添加该状态,可以转移且并没有被访问过的状态 4.最 阅读全文
posted @ 2018-08-02 12:29 徐小晋 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题意:火星撞地球,你要跑到一个永远安全的地方,求最短时间 思路:bfs+预处理 这题的数据量比较大,所以需要进行预处理 for (int j = 0; j<5; j++) { //预处理 int dx = x + dir[j][0], dy = y + dir[j][1]; if (dx < 0 | 阅读全文
posted @ 2018-08-02 12:23 徐小晋 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个三维地图,然后让你走出去,找到最短路径。 思路:bfs struct node{ int x, y, z; int t;}; 代码上的小技巧:三维地图需要你去遍历的时候需要走六个方向: 解决问题的代码: 阅读全文
posted @ 2018-08-02 12:14 徐小晋 阅读(993) 评论(0) 推荐(0) 编辑