【SPOJ】【AGGRCOW】

2024-08-31 17:08
文章标签 spoj aggrcow

本文主要是介绍【SPOJ】【AGGRCOW】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总结:函数之间存在依赖。 哭 然后一处修改了但是忘记修改另外的一处了。。。哭

#include <iostream>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
using namespace std;int Case;
int n,m;
int arr[1000010];
bool ok(int interv)
{int last = 1;arr[0] = 0;//cout << arr[last - 1] << endl;for(int i=2;i<=m;i++){int cur = last + 1;while(cur <= n && arr[cur] - arr[last] < interv)cur ++;if(cur > n){return false;}last  = cur;}return true;
}
int main()
{//freopen("1.txt","r",stdin);scanf("%d",&Case);while(Case --){memset(arr,0,sizeof(arr));scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&arr[i]);}arr[0] = -0x3f3f3f3f;sort(arr,arr+n+1);int ans = -1;int low = 0;int high = 1000000000;while(low <= high){int mid = (low + high) / 2;if(ok(mid)){ans = mid;low = mid + 1;}else{high = mid - 1;}}//	cout << m << endl;arr[0] = 0;//	cout << ok(7) << endl;printf("%d\n",ans);		}
}


这篇关于【SPOJ】【AGGRCOW】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124493

相关文章

【SPOJ】1825 Free tour II 点分治

传送门:【SPOJ】1825 Free tour II 题目分析:敲了两遍。。。 本题是论文题,具体见漆子超论文《分治算法在树的路径问题中的应用》。 在以root为根的第 i 棵子树上,我们用G[ i ,j ]表示root的第 i 棵子树的路径上严格有 j 个黑点的路径的最长长度。用F[ i ,j ]表示在root为根的第 i 棵子树的路径上不超过 j 个黑点的路径的最长长度。因

【SPOJ】Triple Sums【FFT】

传送门:【SPOJ】Triple Sums 题目分析: 首先我们不考虑 i<j<k i<j<k这个条件,构造多项式: Y=∑xai \qquad\qquad\qquad Y = \sum x^{a_i} 那么 ai+aj+ak=S ai+aj+ak=S的个数即 xai+aj+ak=S x^{a_i+a_j+a_k=S}的个数,等价于 Y3中xS Y^3中x^S的系数。 然后我们考虑容斥

SPOJ 1825 FTOUR2 - Free tour II (树上点分治)

题目地址:SPOJ 1825 树分治的题果然除了模板题就是金牌题啊。。。这题是一道论文题,想了好长时间。。。。终于过了,,,,注意一个坑点,如果权值全部为负的话,是可以不选任意一条边的,这样权值为0。。。也就是说初始值要设为0。。。 具体看漆子超的论文《分治算法在树的路径问题中的应用》。。 代码如下: #include <iostream>#include <string.h>#inc

SPOJ 1825 Free tour II

论文题: 在以root为根的第 i 棵子树上,我们用G[ i ,j ]表示root的第 i 棵子树的路径上严格有 j 个黑点的路径的最长长度。用F[ i ,j ]表示在root为根的第 i 棵子树的路径上不超过 j 个黑点的路径的最长长度。 因为所有子树里包含黑点数最多的路径的包含黑点数len可以O(N)求出,我们按照每棵子树的len从小到大的顺序遍历,这样就能将G和F数组降低一维,以G[ i

SPOJ - QTREE (树链剖分)

基础的树链剖分题目,不过是边权,可以向下映射成点权或者按边剖分。 VIEW CODE #include <iostream>#include<stdio.h>#include<cmath>#include<string.h>#include<algorithm>#include<string>using namespace std;const int mmax=100

spoj 227

留着 #include <cstdio>#include <cstring>#include <cstdlib>#define lson l, m, rt << 1#define rson m + 1, r, rt << 1 | 1const int MAXN = 200010;int pos[MAXN];int sum[MAXN << 2];// = MAXN*4int ans[

spoj 416

又臭又长的烂代码 ...... #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#define maxn 1010using namespace std;char a[1010];int num[10],last;//bool cc(int sum)

spoj 1108

要求输出一个牌的顺序 使每隔1、2、.....、n翻牌后出现1 2 3 4 5 6 7 8 9 .... n 将牌想象成n个空格  正向推 空n个位置放n 循环 需优化 #include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#define maxn 300

spoj 379

题是水题  但丫的题目意思太难懂 .......   英语水平  ...... #include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace std;int a[100010];int main(){int n;while(scanf("%d",&n) && n){for(i

spoj 338

题意: 无向图  每条边有长度和费用两个属性  求从点1到点n 在花费不超过 k 的情况下的最短路径 BFS  使用优先队列 长度短的优先出列      题解上的方法没看懂  不知道怎么用链表维护 ..... #include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <