QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#159276 | #7109. Traveling on the Axis | ucup-team1074# | AC ✓ | 5ms | 4560kb | C++20 | 2.6kb | 2023-09-02 17:43:42 | 2023-09-02 17:43:43 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define x first
#define y second
#define endl '\n'
const LL maxn = 4e05+7;
const LL N=1e05+10;
const LL mod=1e09+7;
typedef pair<int,int>pl;
priority_queue<LL , vector<LL>, greater<LL> >t;
priority_queue<LL> q;
int cmp(int a,int b)
{
return a<b;
}
LL gcd(LL a,LL b)
{
return b > 0 ? gcd(b,a%b):a;
}
LL qpow(LL a , LL b)//快速幂
{
LL sum=1;
while(b){
if(b&1){
sum=sum*a%mod;
}
a=a*a%mod;
b>>=1;
}
return sum;
}
/*struct BIT{//Binary indexed Tree(树状数组)
int n;
vector<int> tr;
BIT(int n) : n(n) , tr(n + 1 , 0){
}
int lowbit(int x){
return x & -x;
}
void modify(int x , int modify_number){
for(int i = x ; i <= n ; i += lowbit(i)){
tr[i] += modify_number;
}
}
void modify(int l , int r , int modify_number){
modify(l , modify_number);
modify(r + 1 , -modify_number);
}
int query(int x){
int res = 0;
for(int i = x ; i ; i -= lowbit(i))
res += tr[i];
return res;
}
int query(int x , int y){
return query(y) - query(x);
}
};*/
struct DSU{//Disjoint Set Union(并查集)
vector<int> fa;
DSU(int n) : fa(n + 1 , 0){//构造函数,初始化
iota(fa.begin(),fa.end(),0);//等价于从0到n赋值
}
int find(int x){
return fa[x] == x ? x : fa[x] = find(fa[x]);
}
bool merge(int x , int y){
x = find(x);
y = find(y);
if(x == y)
return false;
else{
fa[y] = x;
return true;
}
}
};
struct TRIE{
int nex[N][26] , id;
int cnt[N];
void insert(string s){
int p = 0 , l = s.size();
for(int i = 0 ; i < l ; i ++){
int x = s[i] - 'a';
if(!nex[p][x])
nex[p][x] = ++id;
p = nex[p][x];
}
cnt[p]++;
}
int find(string s){
int p = 0 , l = s.size();
for(int i = 0 ; i < l ; i ++){
int x = s[i] - 'a';
if(!nex[p][x]) return 0;
p = nex[p][x];
}
return cnt[p];
}
};
void solve()
{
string s;
cin>>s;
int n = s.size();
LL ans = 0;
LL basic = 0;
LL dp[n];
int cnt0 = 0 , cnt1 = 0;
for(int i = 0 ; i < n ; i ++){
ans = i == 0 ? 0 : dp[i - 1];
ans += i + 1;
if(s[i] == '1'){
ans += cnt1;
cnt1 += cnt0;
cnt0 = 0;
cnt1++;
}
else{
cnt0 ++;
ans += cnt0;
cnt0 += cnt1;
cnt1 = 0;
}
dp[i] = ans;
}
LL out = 0;
for(int i = 0; i < n ; i ++){
out += dp[i];
}
cout<<out<<endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cout.precision(10);
int t=1;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
这程序好像有点Bug,我给组数据试试?
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3528kb
input:
3 101 011 11010
output:
12 15 43
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 5ms
memory: 4560kb
input:
6107 1010101 010110100110101 1010 1010101010010101010 101011 0101101011010101010 0101101011 11011010101 010 1011010 10110101010101010100 010101010110101 10101010101011 0101010101010101011 00101010011000 1010101010010110110 01010101001010101010 101010101010101 100100101010101010 01 011 0101010100101 ...
output:
96 889 24 1515 69 1567 279 345 14 106 1702 791 621 1447 764 1615 1755 736 1333 6 15 542 44 1689 1515 140 833 497 596 24 1640 694 462 30 425 14 1041 1446 96 504 124 75 560 970 771 945 6 1 321 137 786 720 206 769 46 103 225 74 554 2 100 529 260 207 197 2 197 1041 140 857 207 1 74 1604 41 343 1041 14 1...
result:
ok 6107 lines
Extra Test:
score: 0
Extra Test Passed