共 5 個測試點
每個測試點 20 分
每個測試點限時 1 秒
執行記憶體上限 512mb
咕咕有兩個數字 a,b ,它忘記了 a 的前三位(記除去前三位的 a 為 aa ),但它記得 a 與 b 滿足 a≡0
(mod b),即 a 是 b 的倍數。
請你幫它求出有多少種滿足條件的 a。
注意: a 沒有前導 0 。
輸入格式
一行兩個整數,表示 a 和 b 。
輸出格式
一行乙個整數,表示有多少種滿足條件的 a 。
資料範圍與約定
對於前 20
% 的資料,保證 b=
1。對於前 40
% 的資料,保證 b≤2。
對於 100
% 的資料,保證 0≤a≤10^14
,0^180.
樣例輸入
0
1
樣例輸出
900
樣例解釋
任何整數都是 1 的倍數,故 a 的前三位是 100−999 中任何一種情況都可以滿足條件。
思路
簽到題,就這乙個ac了,計算出a的長度,用pow函式製造出100
-999的字首,乙個個的取模
#include
#include
#include
#include
using
namespace std;
#define io ios::sync_with_stdio(0); cin.tie(0);
//快讀
intmain()
for(
int i=
100;i<=
999;i++)
cout
}
共 5 個測試點
每個測試點 20 分
每個測試點限時 1 秒
執行記憶體上限 512mb
有乙個 n∗n 的網格,左下角是 (0,
0)右上角是 (n,n) 。
咕咕要從左下角移動到右上角,移動規則如下:
若咕咕位於 (a,b) ,它可以花費 w1 個金幣到達 (a,b+
1) 或 (a+
1,b) 。
若 (a,b) 是乙個魔法格點,咕咕既可以選擇 1 ,也可以選擇花費 w2 個金幣到達 (a+
1,b+
1) 。
咕咕想知道從左下角到達右上角最少需要花費多少個金幣,請你幫幫它。
輸入格式
第一行四個整數 n,k,w1,w2 。
接下來 k 行,第 i 行兩個整數 xi,yi ,表示第 i 個魔法格點的座標。
輸出格式
一行乙個整數,表示咕咕最少需要花費多少金幣。
資料範圍與約定
對於 20
% 的資料,保證 n≤3 。
對於另 20
% 的資料,保證魔法格點只出現在 (0,
0) 到 (n,n) 的對角線上,也就是對於任意的 i∈[
1,k] , xi=yi 。
對於 100
% 的資料,保證 1≤n,w1,w2≤109
,0≤k≤2000
,0≤xi,yi
3
2132
100011
2
樣例輸出
464
樣例解釋
能讓咕咕花費最少的路徑如下:(0
,0)→(0,1
)→(1,2
)→(2,3
)→(3,3
)在 (0,
1),(
1,2) 選擇 2 (花費 100 金幣) ,在其他格點選擇 1 (花費 132 金幣)。
思路:
據說是最長上公升子串行.
..菜雞不會,找了個題解看了看
選擇1走一步,花費為w1。選擇2走兩步,花費為w2。
先考慮只走選擇1,則到(x,y)的花費為(x+y)∗w1
(x+y)∗w1。
再考慮可以有選擇2,我們要用魔法個點來優化之前的選擇,則可以將魔法節點排序,那麼就可以保證後面的魔法節點無法走到前面,這就無後效性了。再找子問題:
定義f[i]
f[i]為到達第ii個魔法節點的距離,則有
num=a[i]
.x+a[i]
.y−a[j]
.x−a[j]
.y−2num=a[i]
.x+a[i]
.y−a[j]
.x−a[j]
.y−2
f[i]
=min
(f[i]
,f[j]
+num∗w1+w2)f[i]
=min
(f[i]
,f[j]
+num∗w1+w2)
**:
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int maxn =
2005
;ll f[maxn]
;struct node //結構體
a[maxn]
;int
cmp(node a,node b)
intmain()
sort
(a +
1,a +
1+ k,cmp)
;//給魔法節點排個序
a[k +1]
.x = n;
a[k +1]
.y = n;
k++;for
(int i =
1;i <= k;i++
)for
(int i =
2;i <= k;i++)}
}printf
("%lld\n"
,f[k]);
return0;
}
共 5 個測試點
每個測試點 20 分
每個測試點限時 1 秒
執行記憶體上限 512mb
給定 k ,你需要生成乙個沒有重邊的有向無環圖(點編號 1
-n ),使得從 1 到 n 的路徑數恰好為 k 。
輸入格式
一行兩個正整數 k,n,表示要求的路徑數和該測試點允許的最大點數(即你生成的圖點數不得超過 n )。
輸出格式
第一行兩個正整數 n,m,表示你生成的圖的點數和邊數。
接下來 m 行,每行兩個正整數 u,v ,表示有一條從 u 到 v 的有向邊。
如有多個滿足條件的圖,輸出任意乙個。
資料範圍與約定
測試點編號 n k1=
2=12
=4=3
3=10^
3 ≤500
4−5=
66<2^
64對於 100
% 的資料,滿足 0
64 。
除了前面的要求,你的輸出還要滿足 1≤m≤10
^5和 n>
1 。注意:輸出中多餘的空格和回車、邊的輸出順序不影響得分,但多餘的其他字元及不合法的輸入會導致不得分。
樣例輸入
2
1000
樣例輸出
331
2231
3
樣例解釋
兩條路徑分別為:
1→2→3
1→3
**:
#pragma gcc optimize(2)
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
unsigned
long
long ll;
vectorint,
int>
>vec;
intmain()
if(n ==
2&& k ==1)
else
if(n ==
4&& k ==3)
int n = cnt +2;
for(
int i =
2;i <= cnt +
1;i++))
;}}for
(int i =
0;i < cnt;i++))
;}}printf
("%d %d\n"
,n,(
int)vec.
size()
);for(
int i =
0;i < vec.
size()
;i++
)return0;
}
2020智算之道複賽E 樹數數
傳送門 題意就懶得複述了 直接對著尤拉序建線段樹,每個節點用乙個堆來維護標記。每次修改可能導致一部分區間被某個點覆蓋,而且這個覆蓋並不遵循後邊的修改會覆蓋前面的修改這樣的規則,而是深度小的黑點優先於深度大的黑點,因此需要用堆來維護標記。由於區間只會完全包含,不會出現交叉的情況,可以標記永久化,刪除也...
智算之道 2020智算之道初賽第三場題解
乙個模擬的水題.int main return 0 這個b.卡的直接醉了 按照題意模擬即可 模擬建議使用雙端佇列deque 最好還是陣列吧,deque必須全域性才可以 被deque全域性卡了乙個小時40分鐘 第乙個坑點是注意摸牌順序 可能會wa 第二個坑點是處理摸牌順序 可能會t 第三個坑點是刪牌標...
2020 智算之道 初賽 第三場
2020 中國軟體行業智慧型應用程式設計大賽 奇怪的比賽 似乎算是ioi賽制,最高分最短執行時間排名靠前,題目有部分分 維護當前溫度和當前體積,按要求修改或輸出資訊 在整個過程中,維護同一人手牌中同一點數的牌最多只有一張。維護雙向鍊錶表示兩人的手牌,簡單起見設定首尾為 哨兵節點 維護map 點數,指...