Codeforces 1077E (二分乱搞或者dp)】的更多相关文章

题意:给你一个数组,可以从中选区若干种元素,但每种元素选区的个数前一种必须是后一种的2倍,选区的任意2种元素不能相同,问可以选取最多的元素个数是多少? 思路1(乱搞):记录一下每种元素的个数,然后暴力枚举最少的元素个数,计算符合题意的最优情况. 代码: #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<map> #include<s…
4692: Beautiful Spacing Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 46  Solved: 21[Submit][Status][Discuss] Description 文章是一些单词组成的序列,单词由字母组成.你的任务是将一篇文章的单词填充到一个网格中,其中网格包含W列和足够多的行.为了布局之美,以下限制都需要满足. 1.文章中的文字需要按照原有的顺序放置.下图表示了将4个单词的文章“This is a pen”放入…
圆圈舞蹈 [问题描述] 熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞.由于没有严格的教育,奶牛们之间的间隔不一致. 奶牛想知道两只最远的奶牛到底隔了多远.奶牛A到B的距离为A顺时针走和逆时针走,到达B的较短路程.告诉你相邻两个奶牛间的距离,请你告诉奶牛两只最远的奶牛到底隔了多远. [输入] 第一行一个整数N,表示有N只奶牛.(2<=N<=100000) 接下来2-N+1行,第i行有一个数,表示第i-1头奶牛顺时针到第i头奶牛的距离. (1<=距离<=maxlongint,距离和&…
1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3223  Solved: 2333 Descriptio 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政.有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书.但是,他的行程安排得很满,他他已经买好了去邯郸的长途马车标,不巧的是出发时间是在…
传送门 可以二分边长 然后另开两个数组,把x从小到大排序,把y从小到大排序 枚举x,可以得到正方形的长 枚举y,看看从这个y开始,往上能够到达多少个点,可以用类似队列来搞 其实发现算法的本质之后,x可以不用从小到大排序 #include <cstdio> #include <iostream> #include <algorithm> #define N 1001 #define max(x, y) ((x) > (y) ? (x) : (y)) int c, n…
题意:问任意两对ai,aj相加的总进位数为多少.比如5,6,95分为(5,6)(5,95)(6,95),进位数 = 1 + 2 + 2 = 5 思路:显然暴力是会超时的.我们可以知道总进位数等于每一位进位数之和,所以我们可以把10个位数的进位分开算,每次%10^k,排序后用二分找到刚好的位置,然后算总数. 好像是唯一一次写二分一次A的题. 代码: #include<iostream> #include<algorithm> #include<cstdio> #inclu…
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: 从(0,0)出发与x轴正方向呈45度角的射线,在给定的矩形区域内不断发射,直到射入矩形的某个角停止. 给出多个坐标,问光线最早经过某坐标的时间. 思路: 1.明确光线反射次数不会超过n+m次(好像是这样==没细想) 2.发现规律,光线要么是符合x+y=k,或者x-y=k的直线.而且每次反射都会变到不同类型的直线. 3.知道出发点,算出反射点. 4.把点放到直线的vector里边.每次到了某条直线把直线上的点扫一遍,然后删掉. */ #incl…
/* 不要低头,不要放弃,不要气馁,不要慌张. 题意: 给一个n和m. 第二行给n个数. 每次操作可以把n个数中的任何一个数替代为别的数,问最少的操作次数使得1.2.3.4.5...m中的数出现的次数的最小值尽可能大. 输出这个数,输出最少操作次数,输出替换后的数组. 思路: 1.显然,最小值尽可能大,这个值是可以确定的,即n/m; 2.还有,为使得操作次数最少,我们发现最多有n%m个没有贡献的无关值无需更改... 3.这题实际上可以n^2复杂度,因为n只有2000.但是本渣作死,写了nlogl…
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5085 这道题我们可以先二分答案,然后转化为判定是否有四角权值>=mid的矩形. 我们可以发现,若4个点可以构成矩形,那么这四个点一定两两在同一行,同一列. 于是我们可以把每一行的合法点处理出来,在里面枚举点对.若有一个点对出现了两次,那么就说明在上面的某一行的相同列有两个合法点,即能构成矩形. 因为找到两对相同的合法点对就可以反回结果,而合法点对的规模是$ O(m^2) $的,因此总…
#include <bits/stdc++.h> using namespace std; struct po { int val; int id; }; po a[]; vector<]; map<int,int> mp; struct node { int val; int wh; node(int _val,int _wh) { val = _val; wh = _wh; } bool operator < (const node &b) const {…