7.15

7.15

div2 1189 A、B、C

C:前缀和。a1,a2

(a1 + a2) % 10

(a + b) % 10 = (a % 10 + b % 10) % 10

rest = sum % 10(余数),sum(和) = 10ans(糖果数) + rest

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

typedef long long ll;
using namespace std;

int n,s[100005],q,sum[100005];
typedef struct
{
int l,r;
}question;

question qu[100005];

int main()
{
freopen("in.txt","r",stdin);

cin >> n;
for(int i = 0;i < n;i ++)
{
cin >> s[i];
}
for(int i = 1;i < n;i ++)
{
s[i] = s[i] + s[i - 1];
}
cin >> q;
for(int i = 0;i < q;i ++)
{
cin >> qu[i].l >> qu[i].r;
}
for(int i = 0;i < q;i ++)
{
cout << (s[qu[i].r - 1] - s[qu[i].l - 2] ) / 10 << endl;
}
return 0;
}

div2 1191 A、B

没啥好说的。。。

7.16

div2 1194 A、B、C

B卡了神奇的bug。。。

C:1.s的种类比t多 2.t的种类比s+p多 3.种类一样个数不够 4.顺序不匹配

7.17

div2 1187 A、B、C

B:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

typedef long long ll;
using namespace std;

char s[500005],t[500005];
int m,n,cnt[30][500005];

int main()
{
std::ios::sync_with_stdio(false);
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
cin >> n;
cin >> s;
for(int i = 0;i < n;i ++)
{
cnt[s[i] - 'a'][0] ++;
cnt[s[i] - 'a'][cnt[s[i] - 'a'][0]] = i + 1;
}
cin >> m;
while (m --)
{
int cntt[30] = {0},ans = -1;
cin >> t;
int len = strlen(t);
for(int i = 0;i < len;i ++)
{
cntt[t[i] - 'a'] ++;
}
for(int i = 0;i < 26;i ++)
{
if(cntt[i] == 0)//神坑!!!原地爆炸
continue;
ans = max(ans,cnt[i][cntt[i]]);
}
cout << ans << endl;
}
return 0;
}

C:不是单调不减 != 单调减

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

typedef long long ll;
using namespace std;

int n,m;
int a[100000];

typedef struct query
{
int li,ri,ti;
}query;

query t[100000];

int main()
{
std::ios::sync_with_stdio(false);
freopen("in.txt","r",stdin);

cin >> n >> m;
for(int i = 0;i < m;i ++)
{
cin >> t[i].ti >> t[i].li >> t[i].ri;
if(t[i].ti == 1)
{
for(int j = t[i].li;j < t[i].ri;j ++)
{
a[j] = 1;
}
}
}
for(int i = 0;i < m;i ++)
{
int flag = 0;
if(t[i].ti == 0)
{
// cout << 'a' << endl;
for(int j = t[i].li;j < t[i].ri;j ++)
{
if(a[j] == 0)
{
flag = 1;
break;
}
}
if(flag == 0)
{
cout << "NO" << endl;
return 0;
}
}

}
cout << "YES" << endl;
//注意!!!
int ans = n + 1;
for(int i=1;i<=n;i++)
printf("%d%c",a[i-1]?ans:--ans,i==n?'n':' ');
return 0;
}