zoukankan      html  css  js  c++  java
  • 北京邀请赛 B. Beautiful Garden

    题意:给你坐标和n个点,求最少移动的点使得n个点成等差数列

    思路:既然要成等差数列,那么最起码有两个点是不动的,然后枚举这两个点中间的点的个数,近期水的要死,看了队友的代码做的

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
    const double eps = 1e-9;
    const int INF = 0x3f3f3f3f;
    
    int n;
    double x[45];
    
    int main() {
    	int cas = 1,t;
    	scanf("%d", &t);
    	while (t--) {
    		scanf("%d", &n);
    		for (int i = 0; i < n; i++) 
    			scanf("%lf", &x[i]);
    		sort(x, x+n);
    		printf("Case #%d: ", cas++);
    		if (n == 1){
    			printf("0
    ");
    			continue;
    		}
    		int ans = INF;
    		for (int i = 0; i < n; i++)
    			for (int j = i+1; j < n; j++) 
    				for (int k = 1; k < n; k++) {
    					int count = 0;
    					double d = (x[j]-x[i])/k;
    					double cur = x[i]-d;
    					int cnt = 0;
    					for (int l = 0; l < n; l++) {
    						cur += d;
    						while (x[cnt] < cur && cnt < n)
    							cnt++;
    						if (cnt == n)
    							break;
    						if (fabs(cur-x[cnt]) < eps) {
    							count++;
    							cnt++;	
    						}
    					}
    					ans = min(ans, n-count);
    				}
    		printf("%d
    ", ans);
    	}
    	return 0;
    }



查看全文
  • 相关阅读:
    面向对象一
    模块二:os模块、sys模块、json模块、pickle模块,包
    模块一:时间模块、random模块、hashlib模块、日志模块
    异常处理、迭代器、推导式、生成器
    有参装饰器
    匿名函数、高阶函数
    装饰器
    函数对象、函数嵌套、闭包函数
    名称空间与作用域
    day17 django 相关
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10894130.html
  • Copyright © 2011-2022 走看看