目录
L1-1 嫑废话上代码
L1-2 猫是液体
L1-3 洛希极限
L1-4 调和平均
L1-5 胎压监测
L1-6 吃火锅
L1-7 前世档案
L1-8 刮刮彩票
L2-1 简单计算器
L2-2 口罩发放
L2-3 完全二叉树的层序遍历
L2-4 网红点打卡攻略
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
vector v[N] ;
int book[N] ; // 用于存档
int main()
{
cout << "Talk is cheap. Show me the code." ;
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
vector v[N] ;
int book[N] ; // 用于存档
int main()
{
// cout << "Talk is cheap. Show me the code." ;
ll a , b , c , ans ;
cin >> a >> b >> c ;
ans = a*b*c ;
cout << ans ;
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
vector v[N] ;
int book[N] ; // 用于存档
int main()
{
double a , b , ans ;
int c ;
cin >> a >> c >> b ;
if(c == 0)
{
ans = 2.455*a ;
}
else if(c == 1)
{
ans = 1.26*a ;
}
printf("%.2f " , ans) ;
if(ans < b) cout << "^_^" ;
else cout << "T_T" ;
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
vector v[N] ;
int book[N] ; // 用于存档
int main()
{
int n , i ;
double t , ans = 0 ;
cin >> n ;
for(i = 0 ; i < n ; i ++)
{
cin >> t ;
ans += (1.0 / t) ;
}
ans /= (double)n ;
printf("%.2f" , 1.0/ans) ;
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
int a[6] , v[6] ;
int main()
{
int i , d , minn , maxx = -1 , flag = 0 , cnt = 0 ;
for(i = 1 ; i <= 4 ; i ++)
{
cin >> a[i] ;
maxx = max(maxx , a[i]) ;
}
cin >> minn >> d ;
for(i = 1 ; i <= 4 ; i ++)
{
if(abs(maxx-a[i]) > d || a[i] < minn)
{
cnt ++ ;
flag = i ;
}
}
if(cnt == 0) cout << "Normal" ;
else if(cnt == 1) printf("Warning: please check #%d!" , flag) ;
else cout << "Warning: please check all the tires!" ;
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
int a[6] , v[6] ;
int main()
{
int cnt = 0 , ans = 0 , sum = 0 ; // 第一个 总共
string s ;
while(1)
{
getline(cin , s) ;
if(s == ".") break ;
cnt ++ ; // 一共有几个
if(s.find("chi1 huo3 guo1") != -1)
{
sum ++ ;
if(sum == 1) ans = cnt ; // 第一个
}
}
cout << cnt << endl ;
if(sum == 0) cout << "-_-#" ;
else cout << ans << " " << sum ;
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
int a[6] , v[6] ;
int main()
{
int n , m , i , j , ans = 0 ;
char s[36] ;
cin >> n >> m ;
while(m --)
{
ans = 1 ;
cin >> s ;
for(i = 0 ; i < n ; i ++)
{
if(s[i] == 'n')
{
ans += pow(2,n-i-1) ;
}
}
cout << ans << endl ;
}
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
int a[6][6] ;
int v[14] ; // 标记 1-9
int money[26]={0,0,0,0,0,0,10000,36,720,360,80,252,108,72,54,180,72,180,119,36,306,1080,144,1800,3600};
int main()
{
int i , j , x , y , op , sum = 0 , num = 45 ; // 坐标
for(i = 1 ; i <= 3 ; i ++)
{
for(j = 1 ; j <= 3 ; j ++)
{
cin >> a[i][j] ;
// num -= a[i][j] ;
v[a[i][j]] = 1 ; // 该数字已出现
if(a[i][j] == 0) x = i , y = j ;
}
}
// a[x][y] = num ;
for(i = 1 ; i < 10 ; i ++)
{
if(v[i] == 0)
{
a[x][y] = i ; //0位置的值
break ;
}
}
for(i = 1 ; i <= 3 ; i ++)
{
cin >> x >> y ;
cout << a[x][y] << endl ;
}
cin >> op ; // 选择
if(op <= 3) // 行
{
for(i = 1 ; i <= 3 ; i ++)
{
sum += a[op][i] ;
}
}
else if(op <= 6) // 列
{
for(i = 1 ; i <= 3 ; i ++)
{
sum += a[i][op-3] ;
}
}
else if(op == 7) //左上到右下的主对角线
{
for(i = 1 ; i <= 3 ; i ++)
{
sum += a[i][i] ;
}
}
else if(op == 8) //右上到左下的副对角线
{
for(i = 1 ; i <= 3 ; i ++)
{
sum += a[i][3-i+1] ;
}
}
cout << money[sum] ;
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e5 + 24 , M = 1e3 + 24 ;
stack s1 ; // 数字
stack s2 ; // 字符
int main()
{
int n , i , j , n1 , n2;
char op ;
cin >> n ;
for(i = 0 ; i < n ; i ++)
{
cin >> n1 ;
s1.push(n1) ;
}
for(i = 1 ; i < n ; i ++)
{
cin >> op ;
s2.push(op) ;
}
while(!s2.empty())
{
n1 = s1.top() ;
s1.pop() ;
n2 = s1.top() ;
s1.pop() ;
op = s2.top() ;
s2.pop() ;
if(n1 == 0 && op == '/')
{
printf("ERROR: %d/0" , n2) ;
return 0 ;
}
if(op == '+')
{
s1.push(n2+n1) ;
}
else if(op == '-')
{
s1.push(n2-n1) ;
}
else if(op == '*')
{
s1.push(n2*n1) ;
}
else if(op == '/')
{
s1.push(n2/n1) ;
}
}
cout << s1.top() ;
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 2e3 + 24 , M = 1e3 + 24 ;
map mp1 ; // 记录时间,上一次选的时间
map mp2 ; // 标记身体不适的人
struct point{
string name ;
string id ; // 身份证
int op ; // 身体情况
string time ; // 提交时间
int num ; // 提交顺序
}p[N] , q[N];
bool cmp(point x , point y)
{
if(x.time != y.time) return x.time < y.time ;
return x.num < y.num ;
}
// 判断身份证是否合法
bool check(string x)
{
if(x.size() != 18) return false ;
int i ;
for(i = 0 ; i < 18 ; i ++)
{
if(x[i] < '0' || x[i] > '9') return false ;
}
return true ;
}
int main()
{
int d , p1 , t , s , i , j , k , cnt = 0 ;
cin >> d >> p1 ; // 几天 间隔时间
for(i = 1 ; i <= d ; i ++) // 每一天
{
cin >> t >> s ; // t条申请 s个口罩
for(j = 0 ; j < t ; j ++)
{
cin >> p[j].name >> p[j].id >> p[j].op >> p[j].time ;
p[j].num = j ;
}
for(j = 0 ; j < t ; j ++)
{
if(check(p[j].id)) // 身份证合法
{
//输出有合法记录的、身体状况为 1
if(p[j].op == 1 && mp2[p[j].id] == 0)
{
mp2[p[j].id] = 1 ; // 标记,防止重复输出
q[cnt].name = p[j].name ;
q[cnt].id = p[j].id ;
cnt ++ ;
}
}
}
sort(p , p+t , cmp) ;
for(j = 0 ; j < t ; j ++)
{
if(check(p[j].id)) // 身份证合法
{
// 口罩
if((mp1[p[j].id] == 0 || (i-mp1[p[j].id] >= p1+1)) && s > 0)
{
s -- ; // 口罩减少
mp1[p[j].id] = i ; // 记录拿口罩此时的时间 天
cout << p[j].name << " " << p[j].id << endl ;
}
}
}
}
for(i = 0 ; i < cnt ; i ++)
{
cout << q[i].name << " " << q[i].id << endl ;
}
return 0 ;
}
#include
using namespace std ;
typedef long long ll ;
const int N = 1e3 + 24 , M = 1e3 + 24 ;
int a[N] , ans[N] ;
int n , cnt = 0 ;
void tree(int root)
{
if(root > n) return ;
tree(root*2) ;
tree(root*2+1) ;
ans[root] = a[++cnt] ;
}
int main()
{
int i , j ;
cin >> n ;
for(i = 1 ; i <= n ; i ++) cin >> a[i] ;
tree(1) ;
for(i = 1 ; i <= n ; i ++)
{
if(i > 1) cout << " " ;
cout << ans[i] ;
}
return 0 ;
}
这道题大家可以选择看其他博主的文章,我这道题只能得22分,有一个样例始终过不了。
(我还是写出来,思路比较简单,如果你发现了问题,麻烦指正啦!)
#include
using namespace std ;
typedef long long ll ;
const int N = 1e3 + 24 , M = 1e3 + 24 ;
int g[N][N] ; // 记录两点间的距离
int d[N] , a[N] , num[N] ; // 记录是否可以到家
int main()
{
int n , i , j , k , m , u , v , w , cnt , sum = 0 , ans = 0 , minn = 1e9 , t , first;
bool flag = true ;
cin >> n >> m ;
while(m --)
{
cin >> u >> v >> w ;
g[u][v] = g[v][u] = w ;
if(u == 0) d[v] = 1 ;
if(v == 0) d[u] = 1 ;
}
cin >> k ;
for(i = 1 ; i <= k ; i ++)
{
flag = true ; // 假设满足
cnt = 0 , first = 0 , ans = 0 ;
memset(num , 0 , sizeof(num)) ;
cin >> t ;
for(j = 1 ; j <= t ; j ++)
{
cin >> a[j] ;
ans += g[first][a[j]] ;
first = a[j] ;
if(num[a[j]] == 0)
{
num[a[j]] = 1 ;
cnt ++ ;
}
if((j == 1 || j == t) && d[a[j]] == 0)
{
flag = false ;
}
}
ans += g[first][0] ;
if(t != n || cnt != n) flag = false ;
if(flag)
{
sum ++ ;
if(ans < minn) minn = ans , u = i ;
}
}
cout << sum << endl ;
cout << u << " " << minn ;
return 0 ;
}
L3我就不写了,我现在的能力写出的答案无法支撑我通过所有得样例,就不拿出来丢人现眼啦,希望后面我能把这部分写出来!最后,如有问题,欢迎指正,一起进步吧!!