題目描述不明確,很多同學誤以為只是兩個數的組合。
解法一:
直接列舉,每個數選與不選,總的可能是2的20次方,在可以接受的範圍內。
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int max_n = 30;
int arr[max_n];
ll ans;
int n, k;
void dfs(int i, int sum)
return ;
}dfs(i + 1, sum);
dfs(i + 1, sum + arr[i]);
}int main()
dfs(0, 0);
printf("%lld\n", ans);
return
0;}
解法二:
動態規劃,維護乙個一維陣列,dp[s] = k,表示和為s時的方案數為k,針對第i個正整數arr[i],dp[s] += dp[s - arr[i]],從後往前的更新dp陣列,避免重複計算。
對於非acm的同學來說,很不容易注意到的一點就是c語言4位元組整型的表示範圍內,最大的正整數和任何負整數之間的差值都超過了4位元組整型所能表示的範圍。所以要用長整型(long long)來表示結果。
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int max_n = 50000 + 10;
ll arr[max_n];
int main()
ll ans = 0;
for (int i = 0; i < n - 1; ++i)
printf("%lld\n", ans);
return
0;}
然後我再提供乙個自己的思路:由於所有的矩形不會重疊,可以將所有的矩形先投影到x軸上,看成一條線段來解決,用線段樹或者樹狀陣列來維護一下,對於每乙個矩形,就是更新一下區間[x, x+w],把這段區間的值都加上h,然後再來求解最後的問題。這個思路我沒時間寫,還在加班,有興趣的同學可以思考一下。
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int max_n = 100000 + 10;
ll arr[max_n];
int main()
int s = 0, t = 0;
ll ans = arr[0];
ll temp = 0;
for (int i = 0; i < n; ++i)
if (temp <= 0)
}printf("%lld\n", ans);
return
0;}
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
int main()
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
int main()
printf("%d\n", cnt);
return
0;}
只需二分答案即可
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int max_n = 10000 + 10;
double arr[max_n];
int n, f;
bool c(double x)
//cout << "x=" << x << " num=" << num << endl;
return num >= f;
}int main()
double lb = 0, ub = 1000000000 + 10;
for (int i = 0; i < 100; ++i)
//cout << ub << endl;
//ub = floor(ub * 1000) / 1000;
printf("%.3lf\n", ub);
return
0;}
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
int main()
倒排索引(elastic search)是搜尋引擎中常見並且重要的資料結構。
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int max_n = 100000 + 10;
map > mp;
int main()
}int m;
cin >> m;
for (int i = 0; i < m; ++i)
else
cout
<< " "
<< mp[s][j];
t = mp[s][j];
}if (mp[s].size() <= 0) cout
<< "not found";
cout
<< endl;
}return
0;}
以上所有**均來自比賽中的第一名 樂山師範程式設計大賽2020 A 好數對
題目描述 給你乙個整數陣列 nums。如果一組數字 i,j 滿足 nums i nums j 且 i j,就可以認為這是一組好數對。請計算這樣的好數對的數量。輸入輸入只包含一組資料 第一行只包含乙個正整數 n,表示這個陣列 nums 的大小是 n 1 n 1000 第二行包含 n 個整數 nums ...
2023年華東師範大學網路賽 E
e.黑心啤酒廠 time limit per test 1.0 seconds time limit all tests 1.0 seconds memory limit 256 megabytes accept submit 1184 4093 黑心啤酒廠為了讓大家買啤酒,會把一瓶酒設計成恰好能倒...
2023年第十一屆省賽(信陽師範學院之行)
帶著忐忑和激動的心情,我踏上了參加省賽的路上,對於大一的我來說能參加此次省賽還是很幸運的,我知道目前我的水平不高,去參加省賽無疑是 的,但是內心還是想知道自己差了多少,又究竟能承受多大的打擊和壓力。所以,毫無經驗的我就和我的隊友以及學長學姐和老師來到了信陽師範學院。老實說,信師的環境真好,心裡其實還...