自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 Codeforces Round #528 (Div. 2) D. Minimum Diameter Tree 思维

题解题目大意 一个树 让你设定权值要求所有权值和为s 问任意两点间数值和的最大值的最小情况当权值评分到所有叶子节点上才能保证代价最小 答案为 S / 叶子节点数量 * 2AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;

2018-12-24 00:00:50 348

原创 Codeforces Round #528 (Div. 2) C. Connect Three 思维

题解题目大意 一个格子图 给三个人坐标 问联通所需要开发的最少方块数量按照纵坐标排序 abc分别为左中右 将b的位置纵向扩展到a和c的高度 然后a和c向b横向汇聚AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typ

2018-12-24 00:00:43 411

原创 Codeforces Round #528 (Div. 2) B. Div Times Mod 暴力

题解题目大意 给N和K 根据公式(x div k) * (x mod k) = n问最小的x先用i枚举x mod k的值 在n能被i整除的情况下 n / i则为x div k 则n / i * k为满足x div k最小的x再枚举x的真实值 要求余数为i 答案取最小AC代码#include <stdio.h>#include &l

2018-12-24 00:00:34 473

原创 Codeforces Round #528 (Div. 2) A. Right-Left Cipher 模拟

题解题目大意 给一个加密后的串 问原串是什么 加密规则是第一个字符在中间后面的右边一个左边一个计算第一个的位置 然后然后两个指针模拟即可AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long lon

2018-12-24 00:00:21 327

原创 Arctic Network POJ - 2349 Kruskal

题解根据题意 需要将所有点联通 但是有M个卫星通信装置 所以可以省去M-1条边先使用Kruskal跑最小生成树 再减去M-1条较大边剩下的取最大为答案AC代码#include <stdio.h>#include <iostream>#include <vector>#include <algorithm>

2018-12-23 21:05:39 630

原创 今年暑假不AC HDU - 2037 贪心

题解使用贪心算法 贪心策略按照结束时间排序每次选取 开始时间最晚的一个AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 110;struct ...

2018-12-23 21:02:45 615

原创 find the nth digit HDU - 1597 二分 思维

题解打表计算1+2+3+…+N的所有和 二分查找到第一个小于N的那个和 N减去他接下来就是9个一循环 N = (N - 1) % 9 + 1得到是哪个数字AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF =...

2018-12-23 20:59:10 609

原创 一个人的旅行 HDU - 2066 dijkstra

题解使用dijkstra算法+堆优化 处理时将所有起点加入队列并设置起点代价为0 跑完最短路在所有终点中选代价最小的一个注意为无向图AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f...

2018-12-23 20:55:04 307

原创 程序员的背包 ZZULIOJ - 2485 离散化 dp lis | 树状数组

题解经典的最长上升子序列问题 因为数值过大使用二分进行优化AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 5e4 + 10;int a[MAX...

2018-12-23 18:09:02 456

原创 小新三连(一):小新在打牌 ZZULIOJ - 2481 模拟

题解计算对手和自身已有牌的和并对M取模 计算过程中统计剩余牌的数量尝试所有剩余的牌 如果可以赢则赢 不能赢能平就平AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;int to...

2018-12-23 17:39:50 864

原创 小新三连(二):小新在努力 ZZULIOJ - 2482 二分

题解水题不做 每次做自身水平+提升上限范围内最大的 即能做出来的最难的题因为数字过多使用二分查找优化 代码直接使用的STL更加方便AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;...

2018-12-23 17:34:15 739 2

原创 因式分解 ZZULIOJ - 2480 dp

题解使用动态规划求解 d[i]表示从1到i的任意乘积和 第一个数字的乘积和为自身d[1] = a[1]后面的每一个a[i]都可以乘在d[i - 1]的式子后面 并且a[i]单独也可以成为一个 再加上前面的 即d[i] = d[i - 1] + d[i - 1] * a[i] + a[i] 注意取模AC代码#include <stdio.h>#include <bits...

2018-12-23 17:17:22 629

原创 吃零食 ZZULIOJ - 2488

题解考虑吃完之后剩余零食数量为多少 剩余/N(整除)为剩余最低高度 这个高度不能超过最开始的最低高度 取minAC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int ...

2018-12-23 17:13:25 724

原创 Halloween Costumes LightOJ - 1422 区间dp

题解题目大意 一个人参加舞会 第i个舞会需要穿着a[i]颜色的衣服 他可以同时穿着多件衣服到时候再脱掉 但是脱掉的衣服不能在穿上 问最少需要多少衣服使用区间dp求解 d[i][j]表示从i到j区间的舞会需要的最少衣服数量 考虑单独一个舞会需要的数量为1如果一个区间d[i][j] a[i]==a[j]也就是第一场舞会的和最后一场的衣服一样则d[i][j]一定等于d[i][j - 1]因为最后...

2018-12-23 15:10:09 537

原创 Multiplication Puzzle POJ - 1651 区间dp

题解题目大意 给你N张卡牌 每次抽出一张 抽出的这张代价为这张的值*左侧的值*右侧的值 问将将卡牌抽的只剩2张的最小代价使用区间dp求解 d[i][j]表示i到j列卡牌抽的剩2张的最小代价 按照一般套路 枚举区间长度枚举区间起点 再枚举区间间断点k范围[起点+1, 终点-1]通过中断点进行转移 转移代价为两侧区间代价和+中断点值*左侧区间的左端点值*右侧区间的右端点值 即d[i][j] =...

2018-12-22 23:52:57 431

原创 Brackets POJ - 2955 区间dp

题解题目大意 给一行括号进行配对 问这行括号的最大配对数量 (()也算是有一对匹配成功使用区间dp求解 d[i][j]表示从i到j范围内的括号配对数量按照一般套路枚举区间长度和区间起点 再枚举区间中点取最大值合并两个区间当d[i][j]的最外层括号s[i]与s[j]配对则通过内层+2转移过来 即d[i][j] = max(d[i][j], d[i + 1][j - 1] + 2)不用担...

2018-12-22 22:37:43 260

原创 HENAU 2018算法训练题1

箱子找规律按行输出#include <bits/stdc++.h>using namespace std;int main(){ int T; cin >> T; while (T--) { int N; cin >> N; N *= 2; //后面频繁N*2 直接给N*2方便 for (int i = 0; i

2018-12-22 18:42:04 357

原创 数的划分 洛谷 P1025 dp

题解使用动态规划求解 设定状态d[i][j]表示分为i份总和为j枚举分的份数和当前总和 尝试增加一份大小为1到N的进行转移根据题意1,1,5和1,5,1为同一种 增加的这一份的循环需要放在最外面AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long...

2018-12-22 12:28:18 354

原创 Two HDU - 5791 dp

题解题目大意 给你两个数列让你求公共子序列数量使用动态规划求解 d[i][j]表示a数列的前i个长度和b数列的前j个长度的公共子序列的数量 遍历a和b的每个位置如果当前位置不相等则等于 a长度-1的+b长度-1的答案再减去重复的部分a和b长度-1的答案d[i][j] = d[i - 1][j] + d[i][j - 1] - d[i - 1][j - 1]如果当前位置相等则等于 不相等的...

2018-12-19 17:45:56 396

原创 资源箱 ZZULIOJ - 2478 贪心

题解最大方案 先将两个货物高度持平 再判断当前高度下哪个货物比较重(包含累加的重量) 移动较重的到另一侧最小方案 对两堆货物求和 和较小的为最小方案 注意反向输出求最大方案时需要先输出最大值再输出移动方案 可以用stringstream流将输出存起来后面直接输出AC代码#include <stdio.h>#include <bits/stdc++.h>usin...

2018-12-19 16:30:44 1025

原创 三维一边推:最长公共子序列加强版(三串LCS) CAIOJ - 1073 dp lcs

题解与二位lcs类似 枚举三个串的每个位置 状态转移考虑5种情况abc当前位置全相等则由3个串长度全-1的位置转移过来 lcs+1ab相等但不与c相等 则由ab长度都-1或c长度-1取max转移过来ac相等但不与b相等和bc相等但不与a相等类似abc互不相等则由a、b或c长度-1取max转移过来AC代码#include <stdio.h>#include <bit...

2018-12-19 14:53:07 666 1

原创 愉快序列 ZZULIOJ - 2472

题解接受数据时使用map标记某个数值最后出现的位置 记录一个last表示last + 1到i范围内数字没有重复的接受的时候map检测数字出现过没有 如果出现过则last更新为map所存储的值(此处要取最大值保证last不会向前移动) 并且每次记录数值在map中 并计算答案AC代码#include <stdio.h>#include <bits/stdc++.h>...

2018-12-18 23:04:04 731

原创 Max Sum HDU - 1003 dp

题解典型最大子段和问题 求解时使用p数组记录最大子段和起点位置即可AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const int MAXN = 1e5 + 10;int a...

2018-12-18 22:58:13 272

原创 楼上真的是签到题 ZZULIOJ - 2460 模拟

题解假设单位秒内给酒杯倒的量为512 (512是因为一共10层每次分2个叉最多分9次 2的9次方足够)最开始直接将T秒的酒量导入最上层杯子中 至于他为什么装得下不用考虑 反正这样不会影响结果然后一层一层遍历杯子 如果杯子容量超过512将多出部分分给他下层的两个杯子分别是a[当前层+1][当前位置]和a[当前层+1][当前位置+1]模拟即可AC代码#include <stdio.h&...

2018-12-17 23:22:56 749

原创 楼上说的对 ZZULIOJ - 2462 二进制

题解使用求和公式求出1到n的和 减去2倍出现过的二次幂的和即为答案二次幂的和等于n范围内最大二进制*2-1 不断除以2求出最大二进制为2的几次方AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3

2018-12-17 22:58:46 765

原创 Surprising Strings POJ - 3096

题解题目大意 一个字符串两个字符为一对 如果相同间距的字符对有相同的则不是好的数据量比较小 暴力枚举间距并以每个位置为第一个字符检测 使用map存储AC代码#include <stdio.h>#include <string>#include <map>#include <iostream>using namespace std;t...

2018-12-16 23:15:16 478

原创 python网络编程requests和selenium模块

import requests #需要命令行下pip install requests安装req = requests.get("http://httpbin.org/get", headers = {"User-Agent" : "ua"}, proxies = {"http" : "ip:port"}, timeout =

2018-12-13 01:33:07 2531

原创 python多线程及互斥锁使用

def RunThread(target, *args): #传入一个函数多线程执行 print u"启动线程:", target.__name__ t = threading.Thread(target = target, args = args) #t.setDaemon(True) #设置为守护线程 当主进程结束后所有子线程都会结束 t.start()de...

2018-12-12 22:02:29 2547

原创 Codeforces Round #523 (Div. 2) C. Multiplicity dp

题解题目大意 给一个序列a问能组成多少个子序列b 要求a序列元素顺序不能改变 a[i]只能出现在他的因子的下标位置先打表将范围内数字因子求出 时限3秒足够 定义一个数组d 表示长度为i的情况有多少个按照顺序遍历整个数组a倒序遍历他的因子k 如果他有因k他可以放在k这个位置 则d[k] = d[k] + d[k - 1]最后给d整个数组求和求出每个位置结尾的情况AC代码#include ...

2018-12-05 20:55:22 330

原创 Codeforces Round #523 (Div. 2) B. Views Matter 思维

题解题目大意 给一排货物的堆积高度 在保证俯视图和右视图不发生变化的情况下最多能移除多少货物 货物可以浮空先将高度排序 尽量每个位置只保留一个货物 则这个位置可以移除的数量为a[i] - 1 这个货物的高度为h 每次向右一个格h尽量增加一个高度 到最后将h与a[N]的高度差从答案中扣除AC代码#include <stdio.h>#include <bits/stdc++...

2018-12-05 20:37:53 301

原创 Codeforces Round #523 (Div. 2) A. Coins

题解题目大意 给n和s 要求用最少数量的[1, n]范围内的数字组成s 数字可以重复使用按照题意一定能拼出s 每次选取最大数字n最后如果还有剩余再用一个数字补充AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int IN...

2018-12-05 16:35:37 448

原创 Codeforces Round #525 (Div. 2) D. Ehab and another another xor problem 交互 二进制 思维

题解交互题题目大意 有两个数字a和b要你去猜 你可以询问两个数字c和d 系统会反馈给你a ^ c和b ^ d的大小比较结果 左边大1右边大-1相同0 最多猜62次数值范围小于2的30次方 说明最多有30个二进制位 最开始使用一次确定a和b的大小关系 每个二进制位使用两次猜测 最后使用一次回答答案从高到低遍历二进制位 之前的位被异或掉了当前位就是最高位 起着决定性的作用 考虑当前位的状态 具...

2018-12-05 15:12:14 506

原创 Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task

题解题目大意 给一个长度为n的序列 两种操作一种前缀全部加x 一种前缀模x 让你用至多n+1次操作将整个序列变为严格递增序列使用n次操作将序列每个位置都调整为模n后为位置-1的值 最后一次操作整体模n使用加法调时候倒着处理 利用i - ((a[i] + tot) % N) + N计算 并记录一个累加量tot 除了最后一个后面加上累加量计算AC代码#include <stdio.h&...

2018-12-05 14:23:40 464

原创 Codeforces Round #525 (Div. 2) B. Ehab and subtraction

题解题目大意 给一个数列n 每次将其中最小的元素取出并输出 整个序列非0元素全部减去这个最小元素往复操作k次将数组排序并除重 因为如果元素相同肯定减去之后另一个为0 记录一个减去的量每次取出最小的 输出值-减去量AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef l...

2018-12-05 14:16:48 309

原创 Codeforces Round #525 (Div. 2) A. Ehab and another construction problem

题解题目大意 给一个n找到满足四个条件式的a和b a和b可以相等除了1都可以找到a=b=n这种情况满足条件AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;int main()...

2018-12-05 14:09:02 290

原创 洛谷P1064 金明的预算方案 dp 01背包

题解带有限制的01背包 最开始以为是状压dp发现状态太多按照01背包的写法 将主件和附件看作同一个物品 处理时计算只买主件、买主件和第一个附件、买主件和第二个附件、买主件和两个附件四种情况进行转移 转移枚举容量时这四种情况并行操作就不会相互造成贡献 不同物品之间则可以接受数据时直接将权值*价格方便计算AC代码#include <stdio.h>#include <bi...

2018-12-03 00:56:19 605

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除