
思维
吴俊达9812
这个作者很懒,什么都没留下…
展开
-
2018 ICPC南京区域赛 K .Kangaroo Puzzle
思路:首先需要明确我们只要每次操作合并两个,那么总能使得最后合并成一个。下面我们给出两个点合并的方法,先任意选择两个点a和b,求出两个点之间的最短路。然后让所有点都按照该路径进行移动。那么最后a点会到达b点,b点会到达c。下面我们证明 现在的状态不会和原来的状态重合(因为状态总数为有限个,我们只需要证明状态的转移过程中不会产生环即可)状态的组成可看做两种要素,第一是所有1的相对状态,第二...原创 2019-06-29 20:19:36 · 1119 阅读 · 0 评论 -
Codeforces Round #571 (Div. 2)
A温暖的签到#include <bits/stdc++.h>using namespace std;typedef long long LL;int main(){ LL n,m,k; scanf("%I64d%I64d%I64d",&n,&m,&k); if( min( m,k ) >= n ){ ...原创 2019-06-29 20:40:08 · 248 阅读 · 0 评论 -
hdu 6616 Divide the Stones
题意:将 重量为1到 n的物品 划分为k堆,每堆的个数相同 ,且重量相同。思路:将相邻的k个物品分别分给k堆,可以想象成一个 ( n / k ) * k 的矩阵。注意到如果行数为偶数则很容易构造出来。如果为奇数行我们考虑 先 构造3行,再构造偶数行。三行的构造方法也很好想,感觉上就是轮换着构造。具体的可行性可通过循环群进行证明。#include <bits/stdc++.h&g...原创 2019-08-05 20:50:31 · 360 阅读 · 0 评论 -
hdu 6637 Speed Dog
题意:给定 n 个任务,两个人 完成 第 i 个 任务的代码量分别为 ai,bi。要求输出使得两个人的代码量较大的人较小。思路:首先很容易得到一个结论是,最后的方案一定是两人的代码量相同。那么我们只需要关心总和最小即可。注意到如果对于同一个任务,我们让代码量较小的人去完成,最后的总和一定是最小的。那么这样会产生一个差值。我们注意到,如果对于同一个任务,两人完成所需要的时间相同,那么无...原创 2019-08-09 16:55:58 · 531 阅读 · 0 评论