Codeforces 1076G Array Game——线段树+博弈

题意: 有一种双人游戏规则如下:n个格子排成一排,编号1~n,每个格子都有一个数值a[i],开始把骰子扔到1号格子,并把1号格子的数值减1,然后双方轮流操作,每次操作从骰子所在的格子(假设编号为x)开始,选择[x,x+m]并且数值大于0的格子,将骰子扔到这个格子上,并把这个格子的数值减1,不能操...

2018-12-11 11:02:23

阅读数:37

评论数:0

Codeforces 1076F Summer Practice Report——贪心+dp

题意:你有n个纸条,现在你要用0和1去写满这些纸条(每个纸条只能写一行),每个纸条都给出了一个x和一个y,表示要求写的0的数量和1的数量,并且规定任何时候都不能有超过k个0连续,任何时候都不能有超过k个1连续,注意假设写完一个纸条和它后一个纸条是连续的,也就是说一个纸条末尾的0或1也要算在它后一个...

2018-12-04 17:47:39

阅读数:26

评论数:0

ZOJ 4061 Magic Multiplication——暴搜

题意:规则举例:1234*5678=5678101214161516212420242832,现在给出最终串,以及两个原串的长度,问两个原串是多少,设原串为A B,多解先令A尽量小,然后再令B尽量小 所有传的长度都在2e5以内,除非串只有一个0,否则没有前导0 思路:现场赛的时候拿到这个题一开...

2018-11-09 22:09:14

阅读数:22

评论数:0

Codeforces 1073C——思维

题意: 一个机器人在(0,0),给出n个指令,指令的种类为L R D U,分别代表左移一步 右移一步 下移一步 上移一步,现在给出一个终点( x,y),要通过改变序列中的一些指令使得机器人最终停在(x,y),并使得花费最小,输出最小花费(原本就能达到输出0,无解输出-1),只允许把一个指令更改...

2018-11-02 20:15:48

阅读数:45

评论数:0

HDU 6237 A Simple Stone Game——思维

题意:有n(1e5)堆石子,第i堆石子有a[i](1e5)个,现在可以进行任意次操作,每次操作可以把一个石头从一堆挪到另一堆,问最少操作几次可以达成这个条件:存在一个x,使得每堆的石子数量都是x的倍数 思路:首先对石子总数进行质因分解,x一定是这些素因子中的一个,这个是我凭感觉蒙的,事实证明确实...

2018-10-29 16:56:10

阅读数:21

评论数:0

HDU - 6274 Master of Sequence——二分

按a的值分组,处理一下余数,二分一下就可以了 但是我二分上界设置的1e18,在计算过程中爆炸了,正确的上界应该是1e14 真的调了很久才意识到这个问题。。。 明天就打区域赛了。。。 #include <bits/stdc++.h> using ...

2018-10-25 15:09:00

阅读数:35

评论数:0

HDU 6266 Hakase and Nano——思维

首先明确这是一个不公平的游戏,作弊的那个人一定更有利,由此猜测所有作弊的人必胜,除非条件实在太差, 我们要找的就是这些作弊也挽回不了的局面,思考后可发现作弊的一方拿只有一个石子的石头堆没有办法,因此从这上面出发,得到下面的结论: 1.先手时必胜,除非石子总数是三的倍数且每一堆都只有一个石子 2...

2018-10-22 20:43:44

阅读数:29

评论数:0

ZOJ - 3981 Balloon Robot——思维

先选1作为起始点跑一遍不高兴值,按不高兴值从小到大排序,然后顺序扫描,当要把第i个位置变为0时,实际上就是将i前面的元素+m,然后整体-unhappy[i] #include <bits/stdc++.h> using namespace std; ...

2018-10-18 23:15:43

阅读数:18

评论数:0

HDU 5977 Garden of Eden——点分治

上来按照dp的思想没什么头绪,因为5e4*(1<<10)有点大,所以往暴力上想了,树上暴力的话一般是往点分治上想,稍加思考发现这题只要枚举子集就可以在n(log(n))^2内解决,注意root是全局变量会改变,要存一下,因为这个直接自闭 #inclu...

2018-10-18 15:58:29

阅读数:22

评论数:0

HDU 5976 Detachment——贪心

很容易想到最优策略是2*3*4一直乘到前缀和小于n的最靠后的位置,设这个位置为p 当segma(2,p)==n时明显答案就是mul(2,p) 但是当segma(2,p) != n时会有一个余项,设为need,need=n-segma(2,p),显然现在项数不会再增加了,我们只能把need按照一...

2018-10-17 22:34:43

阅读数:21

评论数:0

UVALive 3403 Mobile Computing——爆搜

有点像状压dp的爆搜 #include <bits/stdc++.h> using namespace std; typedef pair<double, double> P; const int maxn...

2018-10-13 10:51:13

阅读数:18

评论数:0

UVALive 4726 Average——斜率优化

维护下凸线,然后二分或者单调队列 #include <cstdio> #include <cstring> #include <iostream> #includ...

2018-10-11 15:38:16

阅读数:15

评论数:0

HDU 5952 Counting Cliques——剪枝

剪就完事了 #include <bits/stdc++.h> using namespace std; const int maxn = 110; int T, n, m, s, ans; vector<int&...

2018-10-08 16:52:48

阅读数:27

评论数:0

Gym - 101550C Card Hand Sorting——思维

开始读错题意了,题目要求的是相同花色之间有序,知道这一点以后就枚举一下序列跑几个LCS就好了 #include <bits/stdc++.h> using namespace std; const int maxn = 100; char str[m...

2018-10-08 11:33:31

阅读数:17

评论数:0

Gym - 101550D Daydreaming Stockbroker——贪心

一个简单的小贪心,被队友坑着写了一发dp,emm。。。 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int maxn = 1000; int N;...

2018-10-08 10:07:46

阅读数:30

评论数:0

UVALive 4850 Installations——思维

按d排序保证最大惩罚最小,但是此时次大惩罚+最大惩罚不一定最小,可以牺牲一个任务使得最大惩罚增大,次大惩罚减小使得最终答案减小 #include <bits/stdc++.h> using namespace std; const int maxn ...

2018-10-04 22:36:14

阅读数:15

评论数:0

HDU - 6000 Wash——思维

首先优先队列处理每件衣服最早洗完的时间 然后按照最晚洗完的衣服用最快的烘干机的原则贪心 #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; typedef...

2018-10-03 10:39:13

阅读数:34

评论数:0

UVALive - 4254 Processor——二分+优先队列

截止时间越早的任务应该优先完成,二分优先队列什么的都很好想,问题就是一开始我以为一个任务只能执行整数段时间,后来发现可以执行浮点数段时间。。。其实这也很好处理,只要处理单位时间的工作量就可以了 可以参考judge函数,while里面就是处理的单位时间的工作量 #include &am...

2018-09-28 19:28:40

阅读数:22

评论数:0

UVALive - 4636 Cubist Artwork——思维

把正视图用体积为1的小格子先填上一层,如果把这些列重排一下恰好能构成右视图,那么当前的填充方法就是最优的,基于这个思想我们对两个数列从大到小排序后瞎搞就可以了 #include <bits/stdc++.h> using namespace std;...

2018-09-28 17:21:38

阅读数:37

评论数:0

UVALive 4356 Fire-Control System——思维

极角排序,枚举半径,然后扫一圈、 #include <bits/stdc++.h> using namespace std; const int maxn = 1e4; const double pi = acos(-1.0); struct Poi...

2018-09-28 16:33:48

阅读数:21

评论数:0

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