二、字首和與差分
三、位運算
二分查詢是一種演算法,其輸入是乙個有序的元素列表(必須是有序的),查詢的元素包含在列表中,二分查詢返回其位置``
int
find
(int x)
if(a[r]
==x)
return r;
else
return-1
;}void
find
(int a[n]
,int x)
if(a[l]
==x)
cout<<
"尋找成功且該數的下標為 "
<
else
cout<<
"-1"
;}
例題:求乙個數的三次方更根(10000內)
#include
#include
double x;
using
namespace std;
intmain()
printf
("%.3lf"
,l);
}
一維字首和 b[i]=b[i-1]+a[i]
二維字首和 b[x][y]=b[x-1][y]+b[x][y-1]-b[x-1][y-1]+a[x][y]
s[i, j] = 第i行j列格仔左上部分所有元素的和以(x1, y1)為左上角,(x2, y2)為右下角的子矩陣的和為:
s[x2, y2] - s[x1 - 1, y2] - s[x2, y1 - 1] + s[x1 - 1,y1-1]
差分就是將數列中的每一項分別與前一項數做差
1、差分序列求字首和可得原序列
2、將原序列區間[l,r]中的元素全部+1,可以轉化操作為差分序列l處+1,r+1處-1
3、按照性質2得到,每次修改原序列乙個區間+1,那麼每次差分序列修改處增加的和減少的相同
例題輸入格式
第一行有兩個整數n,p,代表學生數與增加分數的次數。
第二行有n個數,a1~an,代表各個學生的初始成績。
接下來p行,每行有三個數,x,y,z,代表給第x個到第y個學生每人增加z分。
輸出格式
輸出僅一行,代表更改分數後,全班的最低分。
#include
#include
using
namespace std;
const
int n=
6000000
;int a[n]
,s[n]
,c[n]
;int n,m;
int t=
1<<30;
intmain()
while
(m--
)for
(int i=
1;i<=n;i++
)printf
("%d"
,t);
return0;
}
二維差分
給以(x1, y1)為左上角,(x2, y2)為右下角的子矩陣中的所有元素加上c:
補碼:1:如果是正數:正數的補碼就等於原碼。 00000… 111
2:如果是負數:負數的補碼就是在反碼的基礎上加1: 11111. 000 +1=01111… 001
左移: 1右移:1>>x1001001421相當於除以2i
暑假學習第二週
轉眼已經過去了兩周,學習到不少的東西,仍然感覺自己自己是乙個小白,什麼都不知道,現在至少對python的類 模組和函式有了比較深刻的理解。這週前幾天 主要看了函式和函式式程式設計,比較深刻的理解了一下函式的用法和寫法。模組這塊也細心的看了看,了解了如何去匯入乙個模組以及模組的部分特性,自己覺得pyh...
Linux 學習第二週
第二週的學習就有些進展了,因為在這段時間裡,我開始接觸並使用centos了!剛剛開啟文字介面的時候,我的內心可是異常的興奮啊!那個時候我才感覺到 書上的東西是有用的 原諒我以前認為看書沒什麼太大意義 當時我馬上翻開書,照葫蘆畫瓢 就開始寫命令,玩的不亦樂乎。現在我已經基本了解了檔案的一些基本屬性和許...
第二週學習筆記
從課堂上的內容大體可以歸為如上,概念模型因為在具體使用當中較少接觸故簡單介紹其優點。下面將用較大篇幅詳細討論e r模型的實際使用和visio表示的意義。首先,要明白圖表中不同方框代表什麼,方框代表實體,而橢圓框代表屬性,那麼什麼是實體什麼又是屬性呢,那讓我們用乙個簡單的關係圖表來了解一下。這是乙個典...