QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#159276#7109. Traveling on the Axisucup-team1074#AC ✓5ms4560kbC++202.6kb2023-09-02 17:43:422023-09-02 17:43:43

Judging History

你现在查看的是最新测评结果

  • [2023-09-02 17:43:43]
  • 评测
  • 测评结果:AC
  • 用时:5ms
  • 内存:4560kb
  • [2023-09-02 17:43:42]
  • 提交

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