#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<vector>#include<map>voidfre(){freopen("A.txt","r",stdin);freopen("Ans.txt","w",stdout);}
using namespace std;constint mxn =2e5+10;intmain(){/* fre(); */int t;scanf("%d",&t);while(t --){
string s;
cin >> s;int l =0, r =0;for(int i =0; i < s.size(); i ++){if(s[i]=='1'){
l = i +1;break;}}for(int i = s.size()-1; i >=0; i --){if(s[i]=='1'){
r = i -1;break;}}int fg =0;for(int i = l; i <= r; i ++){if(s[i]=='0')
fg ++;}if(r ==0){printf("0\n");continue;}printf("%d\n", fg);}return0;}
我们考虑如果q%g==0,能在q/g个周期内完成,这时候我们考虑第q/g个周期,这个是周期由两部分组成第一个部分是g天的好天气,我们利用这个g天的好天气,就恰好完成了修长度为q的长度的高质量路的任务,而第二部分的b天的坏天气实际上是不需要的,,所以这个时候至少要耗费的时间是
t
=
(
q
/
g
−
1
)
∗
(
g
+
b
)
+
g
t = (q/g-1)*(g+b)+g
t=(q/g−1)∗(g+b)+g,接下来我们要担心的是那么剩下的不需要保证质量的路程n-q的距离都修完了吗?这个时候就体现了输出的时候max的作用,如果t>=n说明把好的路修完之后,q/g个周期中第二部分的坏天气已经,把剩下的路都修好;如果t<n的话是不要求质量的路还没有被 q/g * b的坏天气修完,这个时候要耗费的天数是n,
#include<iostream>#include<algorithm>#include<map>#include<set>#include<list>#include<queue>#include<deque>#include<cmath>#include<stack>#include<vector>#include<cstdio>#include<string>#include<cstring>
using namespace std;#define endl '\n'#define PI acos(-1)#define PB push_back#define ll long long#define db double#define INF 0x3f3f3f3f#define mod 998244353#define lowbit(abcd) (abcd & (-abcd))#define ios ios::sync_with_stdio(false);#define fre \
{ \
freopen("A.txt", "r", stdin); \
freopen("Ans.txt", "w", stdout); \
}constint mxn =65;
ll num[mxn];intmain(){/* fre; */int T;scanf("%d",&T);while(T --){
ll m, n, sum =0;;memset(num,0,sizeof(num));scanf("%lld %lld",&m,&n);
ll t;for(int i =1; i <= n; i++){scanf("%lld",&t);
sum += t;int s =0;while(t >1) s ++, t >>=1;
num[s]++;}if(sum < m){printf("-1\n");continue;}
ll f =0;//表示前面的低二进制为满2进入到更高为,之后更高位上的数值
ll ans =0;for(int i =0; i <=62; i ++){if((1LL<< i)& m) f --;//主要这里要使用 1LL if(f <0){int lv = i;while(! num[lv]) num[lv ++]=1;
num[lv]--;
ans += lv - i;
f =0;}
f += num[i];
f >>=1;}printf("%lld\n", ans);}return0;}
Educational Codeforces Round 82 (Rated for Div. 2)(A~D)
A. Erasing Zeroes(水题)分析 题意给我一个长度为n的01字符串,问我最少删去多少个0,是字符串中所有的1连续? 思路直接找字符串中第一个1,和最后一个1直接的0的数量代码#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<vector>#inc