※ acm 和算法
Joovo
成事不说,遂事不谏,既往不咎。
展开
-
Dijkstra算法的Python实现
将图上的顶点分为已访问visited和未访问node两个集合.每次从visited向外拓展一个点,拓展规则是在可更新的点里是距离最小的.算法伪代码:def dijkstra(): 初始化 visited 和 node 集合,distance[] visited 加入源节点 node 移除源节点 while node 非空: 最短路径长度 = i...原创 2019-01-29 13:18:17 · 3289 阅读 · 0 评论 -
#443 Div.2 B. Table Tennis 排队游戏 && 细节
B. Table Tennis题意看错好几次。。。 n people are standing in a line to play table tennis. At first, the first two players in the line play a game. Then the loser goes to the end of the line, and the winner play原创 2017-10-30 12:53:53 · 574 阅读 · 0 评论 -
#440 Div.2 D.Sorting the Coins 硬币排序问题
原题链接: sort the coins 大意: 一排硬币排成一排,有两种硬币,把其中一种按照两两交换的规则归到右侧,求需要归并多少次才能把所有这种硬币归到右侧。分析: 由于硬币是按照时间顺序放的,容易想到第n个答案和n-1个答案必然存在某种关系。找规律可以发现: 每次放置一个新的点,答案都比前一个多一,当这个点放在末尾时,相当于回退一个。 每次移动后 每个硬币就是在它的下一个非法硬币的原创 2017-10-21 15:42:59 · 520 阅读 · 0 评论 -
Olympic Parade UVALive - 7181 卡时间空间,哈希
Olympic Parade UVALive - 7181 大意: 多组样例,每组样例给一个 N 和 K ,给出 N 个数字,求数字出现的次数不为 K 的倍数的那一个。样例输入: 10 3 1 1 2 3 1 3 3 2 2 2 输出: 2 Hint: 有3个1,4个2,3个3,故答案为2。分析: 各种卡时间,unordered_map也不行,用位运算分析优化。处理原创 2017-10-02 01:20:05 · 362 阅读 · 0 评论 -
HDU-6000 Wash 贪心 队列
原题链接: HDU-6000大意: 有 L 件衣服,M 个洗衣机,N 个烘干机。 洗衣机烘干机的工作时间分别为 Mi , Ni .求最短时间洗完所有衣服。思路: 用队列维护洗衣服的时间,每洗一件衣服增加自身的时间。 显而易见洗衣服按照大小顺序来,要使总时间最小,那么最先洗完的衣服用较慢的烘干机,后洗完的衣服用较快的烘干机。具体实现:#include <bits/stdc++.h>usin原创 2017-09-12 12:41:12 · 716 阅读 · 0 评论 -
CodeForces-626C Block Towers 二分例题 & 贪心
题目链接: CF-626C大意: 给两个数字 n,m。 求构造出 n 个 2 的倍数,m 个 3 的倍数,数字各不相同,求最大值的最小值。思路: 用二分的方法确定。首先确定题目能否用二分思想:1. 是否满足单调性.2. 是否有可行的判断条件。对于这道题,简单判断来看,对应出的 “构造出 n 个 2 的倍数,m 个 3 的倍数”这个解都有多个,而解集中有一个最小的,就是答案,而下一个解集对应的最原创 2017-08-12 01:53:36 · 601 阅读 · 0 评论 -
HDU-4565 So Easy! 矩阵快速幂 & 共轭构造
原题链接: HDU-4565 Limits: 0< a, m < 2^15, (a-1^)2< b < a^2, 0 < b, n < 2^31大意:RT思路: 有向上取整在,完全没办法算出来的,只能通过推导解掉。 思考为什么不是向下取模而是向上取模。题目式子联想到其共轭形式 代码实现:#include <iostream>#include <string>#include <c原创 2017-08-15 00:59:25 · 589 阅读 · 0 评论 -
A Simple Problem with Integers POJ - 3468 线段树模板
题目链接: POJ-3468大意: 区间修改,区间求和。线段树模板题。线段树与树状数组比较: 线段树的功能更强大,但树状数组的常数较小。#include <iostream>#include <cstring>#include <string>#include <cmath>using namespace std;typedef long long ll;#define mem(s原创 2017-09-03 13:00:35 · 420 阅读 · 0 评论 -
最长不减子序列变形 The Heaviest Non-decreasing Subsequence Problem 南宁网络赛
题目链接: The Heaviest Non-decreasing Subsequence Problem 南宁网络赛大意: 给一个串,每个数字有一个权值,负数权值为 0 ,若数字大于10000 其权值为 5,并减去 10000 。 其余权值为 1。分析: 容易想到,读到负数忽略。读到 >10000 做处理,将这个数复制 5 遍放进去,转换为权值为 1 ,那么求一个最长不减子序列,len 就原创 2017-09-27 21:32:13 · 424 阅读 · 0 评论 -
codeforces 813C The Tag Game dfs && 路径长度
原题链接: codeforces 813C大意: A B 在一棵树上,每人轮流移动,B 先走,直到 A 追上 B 为止。 A在 1,B在 x 处。 求最少操作数。每次操作为站立不动或是移动到相邻点。思路: 问题转换为 A的路径*2,只要满足 A 比 B 先到即可。 所以从 1 和 x 分别跑两次最长路径,储存叶子节点的路径,求 d1[i] >d2[i] 的最大d1[i] 即可。代码实现:原创 2017-08-21 17:33:10 · 385 阅读 · 0 评论 -
2017.3.11 杭电校赛
3.11杭电校赛 总体来说这个题目不算难 首页很多AK dalao们做的还可以 自己只做了4题…不忍直视 做题顺序也有点问题 想的不够仔细 客观地说比以前是有好一点,不过还是很菜啊。。。原创 2017-03-11 19:49:38 · 912 阅读 · 0 评论 -
codeforces Div.2 #840D Leha and another game about graph 顶点权值为度数对应奇偶
原题链接: codeforces 840D 大意: 给一个无向连通图,不包含子环,允许回路存在。每个点的权值为 did_i, did_i 的值为 1 ,-1 ,0 的一种。现在要求构造一个子图,要求每个点的权值为 -1 或是 该点的度数模 2 为 d[i]d[i] 。 不存在则输出-1Limits: nn 3e5思路: 当时比赛的时候有点乱,没理清楚,题目并不难,但是不是很好打。学原创 2017-08-21 16:55:01 · 566 阅读 · 0 评论 -
codeforces #428 Div.2 B. Game of the Rows 贪心、思维
不是水题…写起来巨烦,写的时候思路断了就很不好连起来。原题链接: codeforces 839B大意: 一群人坐飞机。给出飞机的排数 n ,一排 8 座和 k 个 group 。 要求不同 group 的人不能座位相邻。 如图。{1,2},{3,4},{4,5},{5,6},{7,8} 是相邻的。给出几个有代表性的样例:input 2 2 5 8 output YESinput 1原创 2017-08-13 23:27:07 · 347 阅读 · 0 评论 -
多校6 HDU-6097 Mindis 几何数学
原题链接: HDU-6097大意: 院内有两点 PP,QQ,在圆上找一点 DD ,求 PD+QDPD+QD 最小。官方题解:思路: 点关于圆的反演。 关于反演的知识:中文词条名:反演点 英文词条名:inverse point 一般指二维反演中的点。 二维上反演以一个特定的反演圆为基础:圆心 OO 为反演中心,圆半径为常数 rr ,把点 PP 反演为点 P′P' 就是使得 OP×原创 2017-08-11 22:24:54 · 547 阅读 · 0 评论 -
codeforces -891B Gluttony 排列,构造题
题目链接: Div.2 D 大意: 给出一串数字,a[n],现在要求构造出一个 b[n],bn是an的一个排列,且满足以下条件: 对于 a 和 b 的 任意相同位置对应的子集和,都不能相等。 即 a 对应是 1 4 8 2 b 对应可以为 2 8 1 4 第 1 2 3 个位置对应的子集和为 sum{1,4,8}≠sum{2,8,1}sum\{1,4,8\} \neq sum\{2,原创 2017-11-18 19:29:42 · 409 阅读 · 0 评论 -
多校6 Gameia-6105 树上博弈 & 染色
原题链接: HDU-6105大意: AliceAlice 和 BobBob 两个人玩游戏,游戏规则如下: 0.在一棵树上涂色。 1.BobBob 是 vipvip 家,有 KK 次机会,可以在游戏中任意时间将一个边切断。 2.BobBob 可以给未涂色点涂黑色,该点的相邻点全部变为黑色。 3.AliceAlice 可以给未涂色的点涂白色。AliceAlice 先行,两人轮流涂色,原创 2017-08-12 22:25:40 · 716 阅读 · 0 评论 -
区间DP Cheapest Palindrome
题目链接: POJ-3280 大意: 给一个串,给出每个字母删去和增加的代价(cost) 要求使之变成回文串的最小代价分析: 考虑区间 DP 方程, dp(i,j) 表示从 i 到 j 的最小代价,那么 i 到 j 已经考虑完回文了 对于 dp(i,j) 方向有 dp(i+1,j) 和 dp(i,j-1) 两个,分别从增加和删除两种方式中取小值dp方程:if s[i] == ...原创 2018-02-25 17:30:18 · 226 阅读 · 0 评论 -
C. The Monster 括号匹配
The Monster 题目大意: 给出一个串,只包含 ( ? ) 三种符号,求出有多少个子串是完美匹配的. 比如 ( ) ? ) => ( ) ( ) 完美匹配( ( ) ? => ( ( ) )完美匹配? ? ? ? => ( ) ( ) => ( ( ) ) 算一种子串length分析: 这个长度和时间限制比较诡异,想不到比较好的方法,猜想原创 2018-01-30 15:42:57 · 348 阅读 · 0 评论 -
POJ 2976 Dropping tests 01分数规划 模板 二分&&Dinkelbach
DescriptionIn a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cumulative average is defined to be Given your test scores and a positive integer k, deter原创 2017-12-20 17:16:10 · 415 阅读 · 0 评论 -
非常可乐 HDU - 1495 倒水问题 BFS && 数论解法
题目链接: 非常可乐大意: 有 m,n,s 三个不同容积的杯子,一开始 m,n 瓶为空,s 瓶是装满的,问在多少步内能平分成两个 s/2 的情况。 若不能,输出《NO》思路: 一开始想到了gcd写法,还没想好,再补。 不会的话只能用 BFS 慢慢写了,题目卡时间有点过分,写残一点就会T,注意细节优化,以及不必要的空间申请,不必要的修改。Node结点储存 三个杯子的状态以及当前操作数。具体实现原创 2017-11-29 09:45:02 · 543 阅读 · 0 评论 -
多校9 HDU-6164 Dying Light 几何数学
原题链接: HDU-6164大意: 给出一个平面镜围成的凸包,每个平面镜有一个反射衰减为 ki<0.9k_i<0.9 若射到平面镜缝隙则能量衰减至 0,给出每个平面镜的起点和终点(逆时针顺序),和入射的向量方向。入射能量为 1.0 ,求能量衰减到 1e-4 要经过多少次碰撞。思路: 直接硬搞,由于 ki 有范围 可以求出最多不超过100次反射一定停止。 考虑到反射和判定线段跨立,比赛的时候写原创 2017-08-29 17:10:51 · 694 阅读 · 0 评论 -
多校7 HDU - 6129 Just do it 组合数学
原题链接: HDU-6129大意: 给一个序列 a[i]a[i] 对其进行 mm 次操作,每次操作得到一个新数列 b[i]b[i],b[i]b[i]为 a[i]a[i] 的前缀异或和。Description: There is a nonnegative integer sequence a1...na1...n of length nn. HazelFan wants to do a t原创 2017-08-16 23:01:25 · 411 阅读 · 0 评论 -
多校8 HDU-6143 Killer Names 排列组合&斯特灵数
原题链接: HDU-6143大意: 名字由两部分组成,等长的 first name 和 last name 。现在给出 first 的长度 n,和可用字母数 m 。要求first name 用过的字母 last name 不能再用,(即两者没有交集),求总共有多少种构造方式。Limits: n、m : 2000思路: 比赛的时候不知道其他人怎么过的,好像相当一部分不是用的组合数过的…标程用的原创 2017-08-17 22:56:33 · 383 阅读 · 0 评论 -
多校7 HDU-6127 Hard challenge 几何数学,枚举极角
原题链接: HDU-6127大意: 坐标系上有 n 个点,每个点带一个权值 v,两两连线,每条线的价值为两点权值的乘积,不存在两点连线经过原点。 现在从原点画出一条直线,求经过的线的值最大。Limits: T:5 n : 5e4 v:1e4思路: 画一条线,一边的和为 sum1,另一边的和为 sum2 ,则经过所有线的和为 ans=sum1∗sum2ans =sum1*sum2 ,求原创 2017-08-16 12:46:16 · 513 阅读 · 4 评论 -
多校7 HDU-6130 Kolakoski 构造数列 & 模拟
原题链接: HDU-6130大意: 生成 Kolakoski 序列,查询第 n 个数。 Kolakoski 满足很有意思的性质。 a[1]=2,a[n]表示第 n 个组有多少个数字(把连续的相同数字看成一组 前几个是 1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1, 分组后 1,22,11,2,1,22,1,22,11原创 2017-08-16 00:07:29 · 1565 阅读 · 0 评论 -
多校4 HDU-6078 Wavel Sequence 前缀和 & 优化dp
原题链接: HDU-6078 大意: 给出两个字符串 a[i]a[i] , b[i]b[i] 从中分别取数,组成 c[i]c[i] , c[i]c[i] 满足 c1<c2>c3<c4>c5......c1<c2>c3<c4>c5...... 波浪形。 求有多少种取法。思路: 按照 dp 的思路,每次取第 i j 个数的时候至于前一个数有关,而且分为两种状态:这次取波谷或是取波峰.即fi,原创 2017-08-07 17:12:29 · 527 阅读 · 0 评论 -
多校4 HDU6069 - Counting Divisors 素数、分解质因数
生成素数筛,简单地利用质因数的计算方法即可,关键在于分解质因数的时候做一点优化。算质数的倍数来分解质因数。见代码。原创 2017-08-04 23:40:04 · 650 阅读 · 0 评论 -
多校1001 HDU-6045. Is Derek lying? 逻辑题
题目链接:HDU-6045 大意: 两个人分别回答一串问题,得到两个答案字符串,并且知道每个人得分,答案只有ABC三种。 现在给出两个字符串,判断其中第一个人是否说谎。样例: Sample Input 2 3 1 3 AAA ABC 5 5 0 ABCBC ACBCBSample Output Not lying Lying思路: 马上想到要考察相同的字母,因为这些字母比原创 2017-08-01 02:54:13 · 396 阅读 · 0 评论 -
多校1002 HDU-6034 Balabala Power-26进制大数加&贪心
题目链接:HDU-6034 大意: 给一堆字符串,每个字符串分配一个权值,把每个字符串变成26进制数,求数字和最大。 要求不能有前导 0,即首字母不为 0 。思路: 每个字符串相加,得到一个很长的数组,每个位置记录这个位置的值(字母和其出现次数),即 int [MAXN][26] 其值表示个数。 将其看成一个大数,对其进行进位处理,然后排序,从高到底赋值,并且要避免前导 0 。 避免转载 2017-07-31 13:46:47 · 463 阅读 · 0 评论 -
线性筛与欧拉函数、莫比乌斯函数
网上关于素数筛的资料很多,这里只是给出弱鸟整理的几个线性筛和应用。最朴素的素数筛——埃拉托斯特尼筛法(Sieve of Eratosthenes) 复杂度 Olognlognint primes[MAXN],tot=0;bool isPrime[MAXN];void getPrime(){ memset(isPrime,true,sizeof(isPrime)); for(in原创 2017-04-17 01:52:51 · 3372 阅读 · 4 评论 -
多校5 HDU-6092 Rikka and subset -反向dp思维
题目链接: HDU-6092大意: 有两个串 AiA_i 和 BiB_i 长度分别为 nn 和 m+1m+1 对于集合 A1,2...nA_{1,2...n} 的子集 有2n2^n个,这些每个子集和为 SS,对应一个 BsB_s 现在给出 BiB_i 的序列,求 AiA_i ,若答案有多组,输出字典序最小的一组。思路: 明显 B0B_0 值没意义,现在考虑最从 00 开始 到第一个非零原创 2017-08-10 01:16:19 · 525 阅读 · 0 评论 -
HDU - 2841-莫比乌斯反演
莫比乌斯反演裸题,描述很明确,就不翻译了。 DescriptionThere are many trees forming a m * n grid, the grid starts from (1,1). Farmer Sherlock is standing at (0,0) point. He wonders how many trees he can see. If two trees a原创 2017-04-22 21:42:30 · 725 阅读 · 0 评论 -
#420 Div.2 C. Okabe and Boxes——模拟
题目链接: http://codeforces.com/contest/821/problem/C大意: 对栈结构给出一串 add 和 remove 的命令,相当于 push 和 pop,现在要求 remove 的东西按照 1 2 3 … n的顺序取走,问需要在操作中最少改变几次 add 的顺序。 input 3 add 1 remove add 2 add 3 remove re原创 2017-06-27 15:20:41 · 449 阅读 · 0 评论 -
17.4.8.Problem C: 六队-某愚蠢的字符串_数位dp
Time Limit: 1 Sec Memory Limit: 128 MB Description 有字母a、b、c、d分别na、nb、nc、nd个,求能组成多少个满足下列条件的字符串。条件:对于任意该字符串的前缀,记a、b、c、d的个数为ma、mb、mc、md,则ma>=mb>=mc>=md;Input T(表示数据组数)每组一行na nb nc nd (输入数据都小于等于40)Outp原创 2017-04-10 00:48:40 · 471 阅读 · 0 评论 -
#411 Div.2 D. Minimum number of steps
We have a string of letters ‘a’ and ‘b’. We want to perform some operations on it. On each step we choose one of substrings “ab” in the string and replace it with the string “bba”. If we have no “ab” a原创 2017-05-05 01:56:42 · 760 阅读 · 0 评论 -
51nod 1596 搬货物
codeforces vj上链接https://vjudge.net/problem/CodeForces-587A这道题在51nod上有点坑= =评测系统不好 用CF一次过(逃 有两组数据一直TLE 各种改 (没用cin cout 一种方法是另写一个基于getchar()的输入函数 二是把C++提交的选项改成C 仅仅是这样//codeforces 587A div1 #include <原创 2017-01-30 23:09:30 · 888 阅读 · 3 评论 -
#416 Div.2 C. Vladik and Memorable Trip - DP&异或
题目链接: http://codeforces.com/contest/811/problem/Ctime limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Vladik often travels by trains. He rememb原创 2017-05-28 02:52:04 · 1567 阅读 · 8 评论 -
2017年ZJUT校赛-Problem F: 最小生成树
Problem F: 最小生成树 Description ap最近学习了最小生成树树之后,向你提了这么一个问题:给一个n个节点的完全图,节点编号从1-n, 如果限制这个完全图的生成树中k个点的度数为1,那么还能否构造出最小生成树呢?Input 第一行一个正整数T,代表有T组数据 每组数据,第一个两个正整数n, k (2 <= n <= 300, 0 <= k <= n) 接下来n*(n-1原创 2017-04-03 21:30:27 · 660 阅读 · 1 评论 -
17.4.8.Problem A: 六队-某其他的语言_模拟
Description 输入一段无输入的合法brain fuck语句,输出运行结果 Brain fuck语句中字符的含义如下 Input 上述语句Output 运行结果Sample Input +++++++++++++++++++++++++++++++++.[->+<]>++. Sample Output !# HINT(样例输出末尾无换行)分析: 模拟题 直接上代码 这里原创 2017-04-10 00:42:26 · 556 阅读 · 0 评论 -
BNUOJ 52297 Coins——打表
BNUOJ 52297 Coins 2016 ACM-ICPC四川省赛E题 题目链接:https://www.bnuoj.com/v3/problem_show.php?pid=52297 大意: 给你 a 个 1 元硬币,b 个 2 元硬币,c 个 3 元硬币,求可以构成多少个不同的面额。 1000 ms 数据用 LL 打表题 需要找规律..很多种情况 所以也 WA 了很多次。 下次原创 2017-04-16 00:31:13 · 615 阅读 · 0 评论