記錄幾道水題
第一題題目鏈結
題目大意:給 n和m 問1-n裡面m的倍數中個位數的和是多少.
某場div3的c題. n/m肯定是1-n裡面m倍數的個數.那麼這些數裡面各位數的和怎麼算呢?分析一下可以知道最多10個數後就會進入迴圈.因為0-9只有10個數嘛.可以手動先把每個數的迴圈陣列算出來.當然這是最直接的做法.還有一種偷懶的演算法.
因為最多10個就進入迴圈.那麼我們直接for(1-10)遍歷一遍m 1-10的倍數就可以了.具體看**
#define ll long long
#include
#include
#include
using
namespace std;
const
int n =
2e5+10;
intmain()
ans +
=(num/10)
*tmp;
cout << ans << endl;
}return0;
}
第二題
題目鏈結
題目大意:給乙個陣列 可以對任意乙個數操作使它除2向下取整.問最少操作幾次可以讓陣列裡面有k個相同的數字.
同場的d題.類似桶排的思想.貪心的先排序.從小到大考慮.記錄這個數操作到0的途中經過的那些數的運算元.什麼時候》=k了,和ans比較一下.取最小的那乙個.
**
#define ll long long
#include
#include
#include
using
namespace std;
const
int n =
2e5+10;
int a[n]
;int num[n]
;ll cnt[n]
;bool vis[n]
;int
main()
}sort
(a+1
,a+1
+n);
for(
int i=
1;i<=n;
++i)
} a[i]
>>=1;
}}cout << ans << endl;
return0;
}
第三題
題目鏈結
題目大意:給1-n的一組排列 問是否是乙個1-n的環.
某場div3的a題.大水題.暴力的做法隨便都能過.考慮稍微巧妙一點的做法.因為只要是乙個1-n環就可以.這個環的特點就是 後面的數-前面的數》1的值只有乙個.
上**.
#define ll long long
#include
#include
#include
using
namespace std;
const
int n =
2e5+10;
int a[n]
;int
main()
if(abs(a[n]
-a[1])
>
1) num++;if
(num >=
2) cout <<
"no\n"
;else cout <<
"yes\n";}
return0;
}
CF貪心刷題記錄
339a 把乙個由數字和加號組成的字串按照數字從小到大的順序排序 思路 把字串s中的所有 過濾掉,然後對數字排序輸出。160a 給n個物品,每件物品有乙個價值,現在要求選擇最少的物品使得你所選擇的物品價值和大於剩餘物品的價值和 思路 排序,按照價值從大到小貪心 58a 給乙個字串,判斷是否刪除若干位...
CF做題記錄 二
d.ticket game description 給定乙個長度為 n 的數字串 n 為偶數 其中有一些位置的值被刪除了用 表示,有兩個人要在這個上面玩乙個遊戲。這兩個人會輪流把串中的問號替換成乙個數字 in 0,9 如果最後前一半所有數字的和等於後一半所有數字的和,那麼後手贏,否則先手贏。現在給定...
刷題記錄 CF1228A,B,C,D
a題 a distinct digits 800 題目大意 給你兩個數,l和r,問你在l到r之間的數中存不存在每個數字都不相同的數,存在輸出這個數,不存在輸出 1 思路 暴力就完事 includeusing namespace std const int maxn 2e5 10 int a maxn...