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;
    }



查看全文
  • 相关阅读:
    关于C++中操作符重载的疑问 :四个运算符=, ->, [], ()不可以重载为全局函数(友员函数)...
    linux内核移植过程问题总结
    关于开发板用tftp下载失败分析
    阿里云ECS下安装的MySQL无法远程连接?
    uva729
    使用 Confluence 6 服务器移动应用
    Confluence 6 移动浏览查看任务
    Confluence 6 移动浏览查看通知
    Confluence 6 移动浏览查看页面,博客和评论
    Confluence 6 移动浏览搜索内容和人
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10894130.html
  • Copyright © 2011-2022 走看看