#include<bits/stdc++.h>
using namespace std;voidfre(){freopen("A.txt","r",stdin);freopen("Ans.txt","w",stdout);}voidFre(){freopen("A.txt","r",stdin);}#define ios ios::sync_with_stdio(false)#define Pi acos(-1)#define pb push_back#define fi first#define se second#define ll long long#define ull unsigned long long #define db double#define Pir pair<int, int>#define PIR pair<Pir, Pir>#define INF 0x3f3f3f3f#define mod 998244353constint mxn =2e5+10;int ar[mxn];intmain(){/* fre(); */int T;scanf("%d",&T);while(T --){int n, m, k;scanf("%d %d %d",&n,&m,&k);int ct = n / k;int mx =min(ct, m);int sr = m - mx;
k --;int ans = mx -ceil((db)sr / k);printf("%d\n", ans);}return0;}
#include<bits/stdc++.h>
using namespace std;voidfre(){freopen("A.txt","r",stdin);freopen("Ans.txt","w",stdout);}voidFre(){freopen("A.txt","r",stdin);}#define ios ios::sync_with_stdio(false)#define Pi acos(-1)#define pb push_back#define fi first#define se second#define ll long long#define ull unsigned long long #define db double#define Pir pair<int, int>#define PIR pair<Pir, Pir>#define INF 0x3f3f3f3f#define mod 998244353constint mxn =1e3+10;char ar[mxn][mxn];intmain(){/* fre(); */int T;scanf("%d",&T);while(T --){int n, m, a, b;scanf("%d %d %d %d",&n,&m,&a,&b);
b =min(2* a, b);for(int i =1; i <= n; i ++){scanf("%s", ar[i]+1);
ar[i][0]='*';
ar[i][m +1]='*';}int sum =0;for(int i =1; i <= n; i ++){int lst = m;int pre = m;for(; pre >=0; pre --){if(ar[i][pre]=='*'){
sum +=(lst - pre)/2* b +(lst - pre)%2* a;
lst = pre -1;}}}printf("%d\n", sum);}return0;}
C. Mixing Water(二分/三分/數學 )
分析
題意
給我們一個空桶,我們可以向其中 倒入 x杯熱水,之後可以選擇向其中倒入 (x-1)或者 x 杯涼水 , 熱水的溫度爲 h,冷水的溫度爲c,
#include<bits/stdc++.h>
using namespace std;voidfre(){freopen("A.txt","r",stdin);freopen("Ans.txt","w",stdout);}voidFre(){freopen("A.txt","r",stdin);}#define ios ios::sync_with_stdio(false)#define Pi acos(-1)#define pb push_back#define fi first#define se second#define ll long long#define ull unsigned long long #define db double#define Pir pair<int, int>#define PIR pair<Pir, Pir>#define INF 0x3f3f3f3f#define mod 998244353
ll h, c, t;
db check(db a, db b){returnabs((a * h + b * c)/(a + b)- t);}intmain(){/* fre(); */int T;scanf("%d",&T);while(T --){scanf("%lld %lld %lld",&h,&c,&t);if(h + c >=2* t){printf("2\n");}else{
ll l =0, r = INF, lm, rm;while(l < r){
lm = l +(r - l)/3;
rm = r -(r - l)/3;if(check(lm +1, lm)<=check(rm +1, rm))
r = rm -1;else
l = lm +1;}printf("%lld\n",2* l +1LL);}}return0;}
#include<bits/stdc++.h>
using namespace std;voidfre(){freopen("A.txt","r",stdin);freopen("Ans.txt","w",stdout);}voidFre(){freopen("A.txt","r",stdin);}#define ios ios::sync_with_stdio(false)#define Pi acos(-1)#define pb push_back#define fi first#define se second#define ll long long#define ull unsigned long long #define db double#define Pir pair<int, int>#define PIR pair<Pir, Pir>#define INF 0x3f3f3f3f#define mod 998244353constint mxn =1e5+100;int ar[mxn];intmain(){/* fre(); */int n;scanf("%d\n",&n);for(int i =1; i <= n; i ++)scanf("%d\n",&ar[i]);int ans =0;for(int i =1; i <=30; i ++){int sum =0;for(int j =1; j <= n; j ++){if(ar[j]> i)
sum =0;else{
sum += ar[j];if(sum <0) sum =0;
ans =max(ans, sum - i);}}}printf("%d\n", ans);return0;}