日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces 861 B Which floor? 思维

發布時間:2025/6/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces 861 B Which floor? 思维 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  題目鏈接:?http://codeforces.com/contest/861/problem/B

  題目描述: 每個樓梯上有相同數量的數, 都是從1開始, 給你m個不矛盾的信息, 問你能不能判斷n在第幾層

  解題思路: 這道題我看到的時候覺得只要能算出來一層有多少個數就可以了, 就是暴力層數, 就可以了, 復雜度為O(n^2), 但是要注意的情況就是有的時候就算不知道確切的層數, 我也可以判斷n在幾層, 所以我的想法錯了.....改進就是將所有可能的答案推進vector中, 最后看看可能答案是不是一個數就可以了

  代碼:?

#include <iostream> #include <cstdio> #include <map> #include <iterator> #include <string> #include <algorithm> #include <vector> #include <cmath> using namespace std;typedef long long ll;const int maxn = 108; int a[maxn]; int b[maxn]; vector<int> ans; int main() {int n, m;cin >> n >> m;for( int i = 1; i <= m; i++ ) {cin >> a[i] >> b[i];}for( int e = 1; e <= 100; e++ ) {int flag = 1;for( int i = 1; i <= m; i++ ) {int floor = a[i]/e + (a[i]%e!=0);if( floor != b[i] ) {flag = 0;break;}}if( flag ) {ans.push_back(e);}}int flag = 1;vector<int>::iterator it = ans.begin();int res = n/(*it) + (n%(*it)!=0);for( it = ans.begin(); it != ans.end(); it++ ) {if( (n/(*it) + (n%(*it)!=0)) != res ) {flag = 0;break;}}if( flag ) {cout << res << endl;}else {cout << -1 << endl;}return 0; } View Code

  思考: 在轉化等價條件的時候必須嚴格證明其正確性

轉載于:https://www.cnblogs.com/FriskyPuppy/p/7614705.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Codeforces 861 B Which floor? 思维的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。