-
Bio
using namespace std;
//希望记录全年级每个班每个人的学号
int a[1005][105]; //a[i,j]描述第i个人 第j个学科的成绩 int n,m; int x,y;
bool check(int x,int y){ //判定第x人和第y人是否旗鼓相当 int p=0, q=0; for (int j=1;j<=m;j++){ if ( abs(a[x][j]-a[y][j]) >5) return false; p += a[x][j], q += a[y][j]; } if (abs(p-q)>10) return false; else return true;
}
int main(){ cin >> n; m = 3; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) cin >> a[i][j];
int ans = 0; for (int i=1;i<=n;i++) for (int j=i+1;j<=n;j++) if (check(i,j)) ans++; cout << ans;
} #include #include
using namespace std;
//希望记录全年级每个班每个人的学号
int a[1005][105]; //a[i,j]描述第i个人 第j个学科的成绩 int n,m; int x,y;
bool check(int x,int y){ //判定第x人和第y人是否旗鼓相当 int p=0, q=0; for (int j=1;j<=m;j++){ if ( abs(a[x][j]-a[y][j]) >5) return false; p += a[x][j], q += a[y][j]; } if (abs(p-q)>10) return false; else return true;
}
int main(){ cin >> n; m = 3; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) cin >> a[i][j];
int ans = 0; for (int i=1;i<=n;i++) for (int j=i+1;j<=n;j++) if (check(i,j)) ans++; cout << ans;
} #include
using namespace std;
//希望记录全年级每个班每个人的学号
int a[105][105]; int b[105][105]; int n,m; int x,y;
int main(){ n = 5, m = 5;
for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) cin >> a[i][j]; cin >> x >> y; //交换第x行和第y行 for (int j=1;j<=m;j++) swap(a[x][j],a[y][j]); for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++) cout << a[i][j] << ' '; cout << endl; }
} #include #include
using namespace std;
int a[1005][105]; int n,x,y;
int main(){ cin >> n; cin >> x >> y;
for (int j=1;j<=n;j++) printf("(%d,%d) ",x,j); printf("\n"); for (int i=1;i<=n;i++) printf("(%d,%d) ",i,y); printf("\n"); for (int j=1;j<=n;j++){ int i = (x-y) + j; if (i>0 && i<=n) printf("(%d,%d) ",i,j); } printf("\n"); for (int j=1;j<=n;j++){ int i = (x+y) - j; if (i>0 && i<=n) printf("(%d,%d) ",i,j); } printf("\n");
} #include #include
using namespace std;
//希望记录全年级每个班每个人的学号
int a[1005][105]; //a[i,j]描述第i个人 第j个学科的成绩 int n,m; int x,y;
bool check(int x,int y){ //判定第x人和第y人是否旗鼓相当 int p=0, q=0; for (int j=1;j<=m;j++){ if ( abs(a[x][j]-a[y][j]) >5) return false; p += a[x][j], q += a[y][j]; } if (abs(p-q)>10) return false; else return true;
}
int main(){ cin >> n; m = 3; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) cin >> a[i][j];
int ans = 0; for (int i=1;i<=n;i++) for (int j=i+1;j<=n;j++) if (check(i,j)) ans++; cout << ans;
} #include #include
using namespace std;
int a[1005][105]; int n,k, t;
int main(){ cin >> n; int x = 1, y = 1; t = 0; while (x<=n && y<=n){ cin >> k; while (k--){ a[x][y] = t; y++; if (y>n){ x++, y = 1; //换行 } } t = 1 - t; // 0-1 1-0 }
for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++) printf("%d",a[i][j]); cout << endl; }
} #include #include
using namespace std;
int a[1005][105]; int n; int x,y,k,dir; int tx,ty;
// dir = 0,往右移动 x不变 y+1 // dir = 1,往下移动 x+1, y不变 // dir = 2,往左移动 x不变 y-1 // dir = 3,往上移动 x-1, y不变
void move(){ tx = x, ty = y; if (dir0) ty++; else if (dir1) tx++; else if (dir2) ty--; else if (dir3) tx--; }
int main(){ cin >> n; x = y = k = 1; //一开始在(x,y) 填入 k dir = 0; while (k<=n*n){ a[x][y] = k; k++; // x,y应该要更新到下一个点 move(); if (tx<=0 || tx>n || ty<=0 || ty>n || a[tx][ty]!=0){ dir = (dir+1)%4; move(); } x = tx, y = ty; } for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++) printf("%3d",a[i][j]); cout << endl; } }
using namespace std;
int a[1005][105]; int n; int x,y,k,dir; int tx,ty;
// dir = 0,往右移动 x不变 y+1 // dir = 1,往下移动 x+1, y不变 // dir = 2,往左移动 x不变 y-1 // dir = 3,往上移动 x-1, y不变
void move(){ tx = x, ty = y; if (dir0) ty++; else if (dir1) tx++; else if (dir2) ty--; else if (dir3) tx--; }
int main(){ cin >> n; x = y = k = 1; //一开始在(x,y) 填入 k dir = 0; while (k<=n*n){ a[x][y] = k; k++; // x,y应该要更新到下一个点 move(); if (tx<=0 || tx>n || ty<=0 || ty>n || a[tx][ty]!=0){ dir = (dir+1)%4; move(); } x = tx, y = ty; } for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++) printf("%3d",a[i][j]); cout << endl; } }
#include <iostream> using namespace std; int A,B,C; bool flag = 0; bool calc(int x,int y){ //判定三位数x中是否出现了y while (x>0){ if (x%10 == y) return 1; x/=10; } return 0; } bool check(int i,int j,int k){ if (i*B!=j*A || i*C!=k*A || j>999 || k>999) return 0; //比例不对 for (int t=1;t<=9;t++) if (!calc(i,t) && !calc(j,t) && !calc(k,t)) return 0; return 1; } int main(){ cin >> A >> B >> C; for (int i=100;i<=999;i++){ if (A<=0) break; int j = i*B/A; int k = i*C/A; if (check(i,j,k)) printf("%d %d %d\n",i,j,k), flag = 1; } if (flag == 0) printf("No!!!"); }sanlianji
#include
using namespace std;
int n,m; long long ans1 = 0, ans2 = 0;
int main(){ cin >> n >> m; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++){ //高度为i 宽度为j long long p = n-i+1 , q = m-j+1; if (i==j) ans1 += pq; else ans2 += pq; } cout << ans1 << " " << ans2; }tongjifangxin
#include <iostream> #include <algorithm> using namespace std; const int MAXN = 1e6 + 5; long long n,m; int a[MAXN],b[MAXN]; int main(){ cin >> n >> m; for (int i=1;i<=m;i++) scanf("%d%d",&a[i],&b[i]); sort(a+1,a+1+m); sort(b+1,b+1+m); long long p=0,q=0; for (int i=1;i<=m;i++){ if (a[i]!=a[i-1]) p++; if (b[i]!=b[i-1]) q++; } cout << n*n - (n-p)*(n-q); //如果 一共有P行 Q列有车 那么(N-P)行可以放棋子 (N-Q)列可以放棋子 // ans == N*N - (N-P)*(N-Q) }chedegongji
给定一个 01 字符串 𝑠s,你可以任选 𝑠s 的一个非空子串,把这个子串在 𝑠s 中翻转一次。
问你能得到字典序最小的字符串是什么?
形式化的,你可以选择一个区间 [𝑙,𝑟][l,r] 满足 1≤𝑙≤𝑟≤∣𝑠∣1≤l≤r≤∣s∣,构造一个串 𝑡t 满足:
𝑡𝑖={𝑠𝑖,𝑖<𝑙 或 𝑖>𝑟𝑠𝑟−(𝑖−𝑙),𝑙≤𝑖≤𝑟ti={si**,sr**−(i−l),i<l 或 i>rl**≤i≤r这里字符串的下标从 11** 开始。
最小化字符串 𝑡t 的字典序。
#include <iostream> #include <algorithm> using namespace std; string s; string ans; string rev(string s,int l,int r){ for (int i=l;i<=r;i++){ int j = l+r - i; if (i<=j) swap(s[i],s[j]); } return s; } int main(){ cin >> s; ans = s; for (int i=0;i<=s.size()-1;i++) for (int j=i;j<=s.size()-1;j++){ string t = rev(s,i,j); if (t < ans) ans = t; } cout << ans; }fusuhechuan
#include #include
using namespace std;
const int MAXN = 500 + 5; char g[MAXN][MAXN]; int n,m,ans = 0;
bool calc(int x,int y,int dx,int dy){ //从x,y出发 沿着dx dy道路 是否能出屏幕 char c = g[x][y]; while (x>0 && x<=n && y>0 && y<=m){ if (g[x][y]!='.' && g[x][y] != c) return 0; x += dx; y += dy; } return 1; }
bool check(int x,int y){ //判定 (x,y)是否有三个以上的逃生通道 int cnt = 0; cnt += calc(x,y,-1,0); //UP cnt += calc(x,y,1,0); //DOWN cnt += calc(x,y,0,-1); //LEFT cnt += calc(x,y,0,1); //RIGHT
return (cnt>=3);
}
int main(){ cin >> n >> m >> ans >> ans; ans = 0; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) cin >> g[i][j];
for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) if (g[i][j]!='.') ans += check(i,j); cout << ans;
}# 电脑中了满屏粉兔病毒
-
Recent Activities