91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

多線段覆蓋 求覆蓋區間的總和

發布時間:2020-07-20 14:07:16 來源:網絡 閱讀:752 作者:wzdouban 欄目:編程語言
   /*
本算法的缺點 在于開的空間太大
分三類情況
線段 
(-10,-1)在負區間
(-10,10)雙區間
(1,10)正區間
一下給出正區間的代碼,已考慮小數
思路是
絕對正區間,覆蓋到數軸 sz[]數組上    小數部分 用sum1 累計
*/
#include <bits/stdc++.h>
using namespace std;
 
#define   max   1000   //數軸長度
int  sz[max];         
#define   n   10       //測試線段條數  坐標入下(a[],b[])
/*             0 1 2 3 4 5 6
double a[2*n]={1,3,5,7,9,11,13,15,17,19};
double b[2*n]={2,4,6,8,10,12,14,16,18,20};
*/
double a[2*n];
double b[2*n];
   int   add=n;//添加的線段下標
   
double funadd(int s,int t)
{
 for(int i=s;i<=t;i++)   
  {
      sz[i]=1;
  }
}
double fun()
//數軸上置1   小數部分 用sum1 累計   sum2為整數部分求和
{   double sum=0;double sum1=0;double sum2=0;
    int  s=0;  int   t=0;
    for(int i=0;i<2*n;i++)
    {
        if(a[i]==b[i])continue;//未處理部分為 0  就好了  不知道 初始化;
        if(a[i]>b[i])swap(a[i],b[i]);
        if(a[i]<0&&b[i]<0){tmp=-a[i];a[i]=-b[i];b[i]=tmp;}//均為負數的處理方法
        if(a[i]<0&&b[i]>0){a[add]=0;b[add]=-a[i];add++;a[i]=0;}//雙區間的截斷處理方法  產生新的區間 放到未處理的數組對中
         s=ceil(a[i]);t=floor(b[i]);
         sum1+=s-a[i];sum1+=b[i]-t;
         funadd(a[i],b[i]);
    }
    for(int i=0;i<2*max;i++)
    {
        if(sz[i]==1)sum2+=1;
    }
    sum=sum1+sum2;
    return sum;
}

//負數的處理  轉正   (-5,-1)-->(1,5)
//(-10,10)這種 分為2部分


int main()
{
    for(int i=0;i<n;i++)
    {
        a[i]=2*i+1;b[i]=2*i+2;
    }
    for(int i=n;i<2*n;i++)
    {
        a[i]=b[i]=0;
    }
    
    cout<<fun()<<endl; 
    cout << "Hello,C++ world of AnycodeX!" << endl;
    return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天镇县| 礼泉县| 个旧市| 文登市| 洮南市| 凤庆县| 平昌县| 贡嘎县| 师宗县| 大余县| 镇宁| 罗田县| 塔河县| 江安县| 泰来县| 万州区| 博乐市| 崇义县| 紫阳县| 准格尔旗| 东阿县| 石棉县| 元氏县| 泗阳县| 获嘉县| 尤溪县| 商水县| 安阳市| 铜陵市| 珲春市| 房山区| 满洲里市| 斗六市| 军事| 奈曼旗| 清水县| 夏邑县| 喀喇| 尤溪县| 桑日县| 阳曲县|