A
#include
using namespace std ;
string s , t ;
int num ;
int main () {
cin >> s >> t ;
for(int i = 0 ; i < s.size() ; i ++) {
if(s[i] == t[i]) num ++ ;
}
cout << num << endl ;
return 0 ;
}
B
#include
using namespace std ;
int n , m , ans = 0 ;
int main () {
cin >> n >> m ;
if(m == 1) {
cout << 0 << endl ;
return 0 ;
}
int c = 1 ;
while(c < m) {
c += n-1 ;
ans ++ ;
}
cout << ans << endl ;
return 0 ;
}
C
#include
using namespace std ;
int n , m , ans = 0 ,a[120000] ;
int main () {
cin >> n ;int maxx = 0 , ans = 0 ;
for(int i = 1 ; i <= n ; i ++) {
cin >> a[i] ;
if(a[i] <= a[i-1]) maxx ++ , ans = max(maxx,ans) ;
else maxx = 0 ;
}
cout << ans << endl ;
return 0 ;
}
D
#include
using namespace std ;
#define int long long
int n , m , ans = 0 ;
signed main () {
cin >> n ;
cout << n*(n-1)/2 << endl ;
return 0 ;
}
E
#include
#define int long long
#define maxn 1000010
using namespace std ;
struct dy {
int y , next ;
}A[maxn];
int n , num , cnt , tot, ans ;
int head[maxn] , a[1010][1010] , vis[1010][1010] ;
int in[maxn] , t[maxn] , day[maxn] ;
void add(int u,int v) {
A[++cnt].y = v ;
A[cnt].next = head[u] ;
head[u] = cnt ;
return ;
}
void topsort() {
for(int i = 1 ; i <= tot ; i ++) {
int u = t[i] ;
for(int j = head[u] ; j ; j = A[j].next) {
int v = A[j].y ;
day[v] = day[u] + 1 ;
in[v] -- ;
if(!in[v])
t[++tot] = v ;
}
}
for(int i = 1 ; i <= num ; i ++)
ans=max(ans,day[i]);
return;
}
signed main() {
scanf("%d",&n);
for(int i = 1 ; i <= n ; i ++) {
for(int j = 1 ; j < n ; j ++) {
scanf("%d",&a[i][j]) ;
if(!vis[i][j]&&!vis[j][i])
vis[i][j] = vis[j][i] = ++num ;
}
}
for(int i = 1 ; i <= n ; i ++) {
for(int j = 2 ; j < n ; j ++) {
add(vis[i][a[i][j-1]],vis[i][a[i][j]]);
in[vis[i][a[i][j]]] ++ ;
}
}
for(int i = 1 ; i <= num ; i ++)
if(!in[i]) {
t[++tot] = i ;
day[i] = 1 ;
}
topsort() ;
if(tot != num) puts("-1");
else printf("%d\n",ans);
return 0;
}