二、陣列對映
例題2:買奶茶
例題三:花瓣數
一道不應景的字首和小題
我們要儲存m條通路及其費用,且無向,
對於給出的 k 條通路:
#include
#include
#include
#include
using namespace std;
const
int n =
310;
int n, m, k;
int g[n]
[n];
//鄰接矩陣儲存通路
int s[n]
, st[n]
;int
main
(void
) cin >> k;
int ans =
0x3f3f3f3f
;while
(k --
)//判斷這條路是否合法(不走重複點,不漏走點)if(
!flag || q != n)
else
else sum +
= g[t]
[s[i]
], t = s[i];}
if(g[t][0
]==0)
else sum +
= g[t][0
], t =0;
if(flag1) ans =
min(ans, sum);}
}if(ans ==
0x3f3f3f3f
) cout <
<< endl;
else cout << ans << endl;
return0;
}
利用陣列下標表示某種含義,不單單是元素的位置
分析arr[a] = k, 表示這個數出現了幾次
#include
#include
#include
using namespace std;
int arr[10]
;//a[i] = k, 表示 數字i出現了k次
intmain
(void
)for
(int i =
0; i <
10; i ++
)return0;
}
優點
不用為數的範圍操心
#include
#include
#include
#include
using namespace std;
int arr[10]
;//a[i] = k, 表示 數字i出現了k次
char str[
100]
;int
main
(void
)for
(int i =
0; i <
10; i ++
)return0;
}
問題描述:
(來自td新生賽,找不到題目鏈結了,湊活著看看感受一下吧)
學長早早便將學妹喜歡喝的奶茶**和奶茶店的**表弄到了手!現在你要根據奶茶**,判斷學妹到底喜歡喝哪一種奶茶,如果有多種奶茶**都符合要求,輸入種類靠前的一種
x 輸入描述:第一行包含乙個整數n,表示有n種奶茶第二行有n個數字a[i],a[i]表示第i種奶茶**第三行包含乙個整數q,表示q次詢問第四行包含q個整數x[i],表示學妹喜歡喝的第i杯奶茶的**,如果沒有找到,則輸出-1
我們還可以這樣模擬:
arr[a] = i + 1
b表示 a 數出現的順序
#include
long
long
int n, q, i, j, a;
long
long
int arr1[
10000000];
intmain
(void)}
scanf
("%lld"
,&q)
;for
(i=0
; i)else
}return0;
}
問題描述:
(來自td新生賽,找不到鏈結了)
3.他現在有一把n朵漂亮的花,每多花都有a[i]個花瓣,如果有1朵花的花瓣數與其他任意一朵花的花瓣數之差等於2,那麼他可以選擇把這朵花扔掉,也可以選擇保留。 請問經過若干次操作之後蒲煜凡學學長能找到唯一的一支特別的花送給小學妹嗎?
陣列在這相當於 標記 作用
2 4 6
p[0]= p[4]= p[2]=p[6]= p[8]=1,
對於p[4]=1, 說明有比他小2的,也有比他大二的,它可以是最後保留的乙個,也可以是去掉的那乙個
我可以留2 4 6中任何一朵,最後判斷時是從i=1開始,已經留了一朵(如果其他均被標記則其他均可被去掉)
想法:除第一朵外,如果其他均可被去掉,則成立
維護著前n個數的字首和, 比如當前求第i項和後邊的項數相乘的結果
sum += (s[n] - s[i] ) * a[i]
即可。
#include
#include
using namespace std;
typedef
long
long ll;
const ll m =
1e9+7;
const
int n =
2e5+10;
int n;
int a[n]
;ll s[n]
;ll ans;
intmain
(void
)for
(int i =
1; i < n; i ++
) cout << ans << endl;
return0;
}
陣列小總結
1 一維陣列的定義 a 10 陣列名 陣列元素個數 陣列的初始化 可以鍵盤scanf輸入初始化 也可以直接定義陣列元素 2一維陣列的總結 陣列元素不能整體使用,只能使用其中各個元素。訪問一維陣列通常是使用迴圈結構 3二維陣列的定義和初始化 a 3 4 三行四列 二維陣列的賦值 int a 3 4 i...
陣列小總結
一 一維陣列 1 一維陣列的建立和初始化 型別數名符 陣列名 常量表示式 int arr1 10 注 中要給乙個常量才可以,不能使用變數。int arr2 10 其他元素自動附0值 int arr3 可以不指定陣列長度 char arr4 char arr5 abcdef 2 一維陣列的使用 陣列是...
樹狀陣列小總結
關於樹狀陣列的兩種初始化方法 方法一 初始化bit bitbi t陣列為0 00,然後對於陣列a aa的每乙個元素進行add addad d操作,時間複雜度o n logn o nlogn o nlog n 方法二 預處理a aa陣列的字首和pre prepr e陣列,bit ind ex pre ...