比例简化


1 //桶排
2 #include<bits/stdc++.h>
3 using namespace std;
4 int num[50001];
5 bool vis[50001];
6 int main()
7 {
8 int n , cou = 0 , maxN = 0;
9 cin >> n;
10 for(int i = 0 ; i < n ; i++)
11 {
12 int a;
13 cin >> a;
14 num[a]++;
15 maxN = maxN < a ? a : maxN;
16 }
17 for(int i = 1 ; i <= maxN ; i++)
18 for(int j = i + 1 ; j <= maxN ; j++)
19 if(num[i] && num[j] && !vis[i + j])
20 {
21 cou += num[i + j];
22 vis[i + j] = 1;
23 }
24 cout << cou;
25 return 0;
26 }
珠心算测验



1 //找规律
2 #include<bits/stdc++.h>
3 using namespace std;
4 int main()
5 {
6 int sum = 0 , N , A , B;
7 cin >> N >> A >> B;
8 while(A != 1 && B != 1 && A != N && B != N){
9 A--;
10 B--;
11 sum += (N - 1) << 2;
12 N -= 2;
13 }
14 if(A == 1)
15 cout << sum + B;
16 else
17 if(B == N)
18 cout << sum + N - 1 + A;
19 else
20 if(A == N)
21 cout << sum + ((N - 1) << 1) + (N - B + 1);
22 else
23 cout << sum + (N - 1) * 3 + (N - A + 1);
24 return 0;
25 }
螺旋矩阵


1 //搜索+DP
2 #include<bits/stdc++.h>
3 using namespace std;
4 int minN[17][17] , choose[8] , num[17][17] , N , M , R , C , lasAns = 0x3f3f3f3f;
5
6 inline int abs(int a){
7 return a > 0 ? a : -a;
8 }
9
10 inline int calc(int bef , int now){
11 int sum = 0;
12 for(int i = 0 ; i < R ; i++)
13 sum += abs(num[choose[i]][bef] - num[choose[i]][now]);
14 return sum;
15 }
16
17 inline int ask(int now){
18 int sum = 0;
19 for(int i = 0 ; i < R - 1 ; i++)
20 sum += abs(num[choose[i]][now] - num[choose[i + 1]][now]);
21 return sum;
22 }
23
24 inline void DP(){
25 memset(minN , 0x3f , sizeof(minN));
26 for(int i = 1 ; i <= M ; i++){
27 minN[i][1] = ask(i);
28 for(int j = i - 1 ; j ; j--){
29 int t = calc(i , j);
30 for(int k = 2 ; k <= j + 1 && k <= C ; k++)
31 minN[i][k] = min(minN[i][k] , minN[j][k - 1] + t + minN[i][1]);
32 }
33 }
34 for(int i = C ; i <= M ; i++)
35 lasAns = min(lasAns , minN[i][C]);
36 }
37
38 void dfs(int dir , int num){
39 if(num == R){
40 DP();
41 return;
42 }
43 if(num + N - dir + 1 < R)
44 return;
45 dfs(dir + 1 , num);
46 choose[num++] = dir;
47 dfs(dir + 1 , num);
48 }
49
50 int main()
51 {
52 cin >> N >> M >> R >> C;
53 for(int i = 1 ; i <= N ; i++)
54 for(int j = 1 ; j <= M ; j++){
55 cin >> num[i][j];
56 }
57 dfs(1 , 0);
58 cout << lasAns;
59 return 0;
60 }
*子矩阵


1 #include<bits/stdc++.h>
2 using namespace std;
3 int main(){
4 int cou = 1 , n , sum = 0;
5 cin >> n;
6 while(n >= cou){
7 sum += cou * cou;
8 n -= cou++;
9 }
10 cout << sum + cou * n;
11 return 0;
12 }
金币


1 #include<bits/stdc++.h>
2 using namespace std;
3 char bomb[102][102];
4 int dir[8][2] = {1,0,-1,0,0,1,0,-1,1,1,-1,-1,-1,1,1,-1};
5 int main()
6 {
7 int n , m;
8 cin >> n >> m;
9 for(int i = 1 ; i <= n ; i++)
10 for(int j = 1 ; j <= m ; j++)
11 cin >> bomb[i][j];
12 for(int i = 1 ; i <= n ; i++){
13 for(int j = 1 ; j <= m ; j++)
14 if(bomb[i][j] == '*') cout << '*';
15 else{
16 int cou = 0;
17 for(int k = 0 ; k < 8 ; k++)
18 if(bomb[i + dir[k][0]][j + dir[k][1]] == '*')
19 cou++;
20 cout << cou;
21 }
22 cout << endl;
23 }
24 return 0;
25 }
扫雷游戏


1 //分类+前缀和
2 #include<bits/stdc++.h>
3 #define MAXN 100001
4 #define MOD 10007
5 using namespace std;
6 int sum[MAXN][2] , num[MAXN][2] , col[MAXN] , val[MAXN];
7
8 int main()
9 {
10 ios::sync_with_stdio(0);
11 cin.tie(0);
12 cout.tie(0);
13 int n , m , s = 0;
14 cin >> n >> m;
15 for(int i = 1 ; i <= n ; i++)
16 cin >> val[i];
17 for(int i = 1 ; i <= n ; i++){
18 cin >> col[i];
19 num[col[i]][i & 1]++;
20 sum[col[i]][i & 1] = (sum[col[i]][i & 1] + val[i]) % MOD;
21 }
22 for(int i = 1 ; i <= n ; i++)
23 s += ((num[col[i]][i & 1] - 2) * val[i] + sum[col[i]][i & 1]) % MOD * i % MOD;
24 cout << s % MOD;
25 return 0;
26 }
求和


1 //贪心+线段树
2 #include<bits/stdc++.h>
3 #define mid ((l + r) >> 1)
4 #define lch (now << 1)
5 #define rch (now << 1 | 1)
6 //This code is written by Itst
7 using namespace std;
8
9 inline int read(){
10 int a = 0;
11 bool f = 0;
12 char c = getchar();
13 while(c != EOF && !isdigit(c)){
14 if(c == '-')
15 f = 1;
16 c = getchar();
17 }
18 while(c != EOF && isdigit(c)){
19 a = (a << 3) + (a << 1) + (c ^ '0');
20 c = getchar();
21 }
22 return f ? -a : a;
23 }
24
25 const int MAXN = 100010;
26 struct node{
27 int maxN , maxD , mark;
28 }Tree[MAXN << 2];
29 int num[MAXN] , S[MAXN] , N , fur;
30
31 inline void pushup(int now){
32 if(Tree[lch].maxN > Tree[rch].maxN){
33 Tree[now].maxN = Tree[lch].maxN;
34 Tree[now].maxD = Tree[lch].maxD;
35 }
36 else{
37 Tree[now].maxN = Tree[rch].maxN;
38 Tree[now].maxD = Tree[rch].maxD;
39 }
40 }
41
42 inline void pushdown(int now){
43 if(Tree[now].mark){
44 Tree[lch].mark += Tree[now].mark;
45 Tree[lch].maxN += Tree[now].mark;
46 Tree[rch].mark += Tree[now].mark;
47 Tree[rch].maxN += Tree[now].mark;
48 Tree[now].mark = 0;
49 }
50 }
51
52 void init(int now , int l , int r){
53 if(l == r){
54 Tree[now].maxD = l;
55 Tree[now].maxN = num[l] + (S[l] << 1);
56 }
57 else{
58 init(lch , l , mid);
59 init(rch , mid + 1 , r);
60 pushup(now);
61 }
62 }
63
64 void change(int now , int l , int r , int tar , int num){
65 if(l == r){
66 Tree[now].maxN = num;
67 return;
68 }
69 pushdown(now);
70 if(mid >= tar)
71 change(lch , l , mid , tar , num);
72 else
73 change(rch , mid + 1 , r , tar , num);
74 pushup(now);
75 }
76
77 void add(int now , int l , int r , int L , int R , int mark){
78 if(l >= L && r <= R){
79 Tree[now].mark += mark;
80 Tree[now].maxN += mark;
81 return;
82 }
83 pushdown(now);
84 if(mid >= L)
85 add(lch , l , mid , L , R , mark);
86 if(mid < R)
87 add(rch , mid + 1 , r , L , R , mark);
88 pushup(now);
89 }
90
91 int main(){
92 #ifdef OJ
93 freopen("2672.in" , "r" , stdin);
94 //freopen("2672.out" , "w" , stdout);
95 #endif
96 N = read();
97 for(int i = 1 ; i <= N ; i++)
98 S[i] = read();
99 for(int i = 1 ; i <= N ; i++)
100 num[i] = read();
101 init(1 , 1 , N);
102 int ans = 0;
103 for(int i = 1 ; i <= N ; i++){
104 printf("%d\n" , ans += Tree[1].maxN);
105 int t = Tree[1].maxD;
106 for(int j = fur + 1 ; j < t ; j++)
107 change(1 , 1 , N , j , num[j]);
108 if(t > fur){
109 add(1 , 1 , N , t , N , -(S[t] - S[fur]) << 1);
110 fur = t;
111 }
112 change(1 , 1 , N , t , 0);
113 }
114 return 0;
115 }
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-124192-10.html
你不接事他也下岗