/images/avatar.png

^_^

Python学习

记录一下第n次学python。。。

打印

转义字符的打印

1
2
3
4
5
6
str = r"D:\now"
print(str)

------------------------------

D:\now

数据类型

获得数据类型

1
2
3
4
5
6
7
print(type(3.14))
print(isinstance(15, int))

-----------------------------------

<class 'float'>
True

运算符

整数除法 幂次 大小关系表达式

1
2
3
4
5
6
7
8
9
print(3//2)
print(-3**3)
print(3<4<5)

--------------------------

1
-27
True

三目运算符

1
2
3
4
5
6
x = 6 if 2 > 4 else 7
print(x)

--------------------------------

7

运算符的优先级

https://img-blog.csdnimg.cn/20210205223244414.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzM3Njk3,size_16,color_FFFFFF,t_70

每日一题 (X)

堆 贪心

题目

 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
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll n;
struct p{
    ll v,s;
}ps[100005];
bool cmp(p a,p b){return a.s>b.s;}
priority_queue<ll , vector<ll> , greater<ll> > pq;
int main(){
    cin>>n;
    for(ll i=0;i<n;i++) cin>>ps[i].v>>ps[i].s;
    
    sort(ps,ps+n,cmp);
    
    ll temp=0,ans=0;
    for(ll i=0;i<n;i++){
        temp+=ps[i].v;
        pq.push(ps[i].v);
        
        while(pq.size()>ps[i].s){
            temp-=pq.top();
            pq.pop();
        }
        
        ans=max(ans,temp);
    }
    cout<<ans<<endl;
    return 0;
}

===========================================================================================================

Codeforces Round #644 (Div. 3)

可能是最简单的div3(不考dp dfs?)

A. Minimal Square

题意

给俩相同的长方形,求面积最小的正方形使得容纳两个长方形,且长方形之间不重合

题解

两倍宽或两倍长

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
int  main(){
	int t;
	cin>>t;
	while(t--){
		int a,b;
		cin>>a>>b;
		if(a>b) swap(a,b);
		if(2*a<=b) cout<<b*b<<endl;
		else  cout<<4*a*a<<endl;
	}
	return 0;
}

B. Honest Coach

题意

把一堆数分成两堆,求第一堆最大值和第二堆最小值的差的最小值

abc168

A - ∴ (Therefore)

题意

看题目

题解

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;
	cin>>s;
	char c=s[s.length()-1];
	switch(c){
		case '2' :case '4': case '5': case '7': case '9': 
			cout<<"hon\n";
			break;
		case '3':
			cout<<"bon\n";
			break;
		default :cout<<"pon\n"; 
	}
	return 0;
}

B - … (Triple Dots)

题意

看题目

题解

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include<bits/stdc++.h>
using namespace std;
int main(){
	int k;
	cin>>k;
	string s;
	cin>>s;
	
	if(s.length()<=k)cout<<s<<endl;
	else{
		for(int i=0;i<k;i++){
			cout<<s[i];
		}cout<<"..."<<endl;
	}
	
	return 0;
}

C - : (Colon)

题意

给定时针和分针的长度,起始为12点,问经过h小时m分钟后,时针和分针不连接的端点的距离

Codeforces Round #643 (Div. 2) A~D

A. Sequence with Digits

题意

看题目

题解

模拟,minDigit(x) 等于0 时打断

 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
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int inf = 0x3f3f3f3f;
const int ninf = 0xc0c0c0c0;
ll t;
ll a,k;
ll maxD(ll n)
{
 ll res=n%10;
 while(n)
 {
  res=max(res,n%10);
  n/=10;
 }
 return res;
}
ll minD(ll n)
{
 ll res=n%10;
 while(n)
 {
  res=min(res,n%10);
  n/=10;
 }
 return res;
}
ll cal(ll n)
{
 return n+maxD(n)*minD(n);
}
int main(){
	cin>>t;
	while(t--){
		cin>>a>>k;
		for(ll i=1;i<k;i++)
		{
			//cout<<a<<" "<<i<<" "<<maxD(a)<<" "<<minD(a)<<" "<<endl;
			a=cal(a);
			if(minD(a)==0) break;
		}
		cout<<a<<endl;
	}
	return 0;
}

B. Young Explorers

题意

有一个数组,将它们划分成n组(不用每一个数字都被划分),保证每一组的每个数字都<=这组数字的个数,求最多划分成几组

Codeforces Round #641 (Div. 2) A~D

A. Orac and Factors

题意

对于一个数,每一次操作加上他的最小因子(除1外)

问k次操作后,这个数是多少

题解

奇数找最小因子加一下就变成偶数,偶数最小因子是2

 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
#include<bits/stdc++.h>
using namespace std;
int n,k,t;
int ans;
int f(int x){
	for(int i=2;i*i<=x;i++){
		if(x%i==0){
			return i;
		}
	}
	return x;
}
int main(){
	cin>>t;
	while(t--){
		cin>>n>>k;
		if(n&1){
			n+=f(n);
			ans = n+(k-1)*2;
		}
		else{
			ans = n+k*2;	
		}
		cout<<ans<<endl;
	}
	return 0;
}

B. Orac and Models

题意

给一数组,从中选几个数出来,满足严格递增,且对任意相邻下标a,b满足a|b,输出最长子序列的个数

abc167

这个比赛尽犯些sb错🙃,先是把 j 写成 i ,然后把2E5写成1E5

A - Registration

题意

判断字符串T是不是S后加一个字符

题解

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
	string s1,s2;
	cin>>s1>>s2;
	if(s2.substr(0,s2.length()-1)==s1) puts("Yes");
	else puts("No");
	return 0;
}

不知道strstr为啥就不行

git

git安装

用户名和邮箱

初始化或切换用户名和邮箱

git config --global user.name "XXX"

git config --global user.email "XXX"

查看当前用户名和邮箱

git config --global user.name

git config --global user.email

查看用户名和邮箱列表

git config --list

abc166

A - A?C

题意

abc输出arc反之亦然

题解

1
2
3
4
5
6
7
8
9
#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;
	cin>>s;
	s[1]=s[1]=='B'? 'R': 'B';
	cout<<s<<endl;
	return 0; 
}

B - Trick or Treat

题意

snack_i被snuke_1,snuke_2..拥有

问有多少个snuke没有snack

abc165

A - We Love Golf

题意

询问在A到B之间是否有C的倍数

题解

特判边界是否满足条件,否则判断左右边界除以C的值是否大于等于1

ac代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
    int a,b,c;
    cin>>a>>b>>c;
    if(b/(double)a == b/a) puts("OK");
    else if(c/(double)a == c/a) puts("OK");
    else if(c/a > b/a){
    	puts("OK");
    	
	}
	else puts("NG");
    return 0;
}

B - 1%

题意

初始有100円,每年利息1%,每年结算时将小数部分抛弃,问多久能达到A円