#include<stdio.h>
int main()
{
int t,n,k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&k,&n);
int a=1;
for(int i=1;i<=k;i++)
{
if(a+i-1+(k-i)<=n) a+=i-1;//k-i:可以再加上的个数
else a++;
printf("%d ",a);
}
printf("\n");
} return 0;
}
为什么得加上k-i:
你品品
#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0); cout.tie(0);
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--) {
int n;
cin>>n;
vector<int> a(n);
for(int i = 0; i < n; i++) {
cin>>a[i];
}
sort(a.begin(), a.end());
int pos = 0;
while(pos < n && a[pos] == 1) {
pos++;
}
if(pos == n) {
cout<<pos/2+(pos%2?1:0)<<"\n";
}else {
cout<<pos/2+(pos%2?1:0)+(n-pos)<<"\n";
}
}
return 0;
}
🏳️🌈🏳️🌈🏳️🌈🏳️🌈🏳️🌈🏳️🌈
注意本题的限制条件 重点 而且假如某件衣服是在第x天穿的,那么下一次最早能穿这件衣服的时期为x+N-1
侧面显示了第一周后穿的衣服如果在最后一周提前穿 至少要经历
(后穿的下标—前穿的下标)周
using namespace std;
int n,r,m = 0;
int a[2510],b[2510];
int main(){
cin >>n ;
for(int i =1;i<=n;i++){
cin>>a[i];
}
for(int i =1;i<=n;i++){
cin >>r;
b[r]=i;//存的是位置
}
for(int i =1;i<=n;i++){
m = max(m,i-b[a[i]]);
}
cout<<m+1;//加上本周
return 0;
}
🏳️🌈🏳️🌈🏳️🌈🏳️🌈🏳️🌈🏳️🌈
本来以为这个题的做法很高深,其实逐个判断每个数是奇数或偶数即可
奇数+奇数+奇数=奇数
奇数+偶数+偶数=奇数
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
int a[n];
vector<int> o;
vector<int> e;
int temp;
for (int i = 0; i < n; i++)
{
cin >> temp;
if (temp % 2 == 0)
e.push_back(i + 1);
else
o.push_back(i + 1);
}
if (o.size() > 2)
{
cout << "YES" << endl;
cout << o[0] << ' ' << o[1] << ' ' << o[2] << endl;
}
else if (o.size() > 0 && e.size() > 1)
{
cout << "YES" << endl;
cout << o[0] << ' ' << e[0] << ' ' << e[1] << endl;
}
else
cout << "NO" << endl;
}
}
P1598 垂直柱状图 – 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
这道题特别注意细节
#include<iostream>
#include<cstring>
using namespace std;
int ff[26];//定义计数数组
int main()
{
int i,j,n,maxn=0;
string a;
for(i=0;i<4;i++)
{
getline(cin,a);
n=a.size();
for(j=0;j<n;j++)
{
if(a[j]>='A'&&a[j]<='Z')
ff[a[j]-'A']++;//统计字符出现次数
}
}
for(i=0;i<26;i++)
{
maxn=max(maxn,ff[i]);//最多次数(最高柱状图)
}
for(i=maxn;i>0;i--)
{
for(j=0;j<26;j++)
{
if(ff[j]>=i)
printf("* ");
else
printf(" ");//模拟,是可以输出的就输出*,否则跳过
}
printf("\n");
}//换行
for(i=0;i<26;i++)
printf("%c ",i+'A');//输出A~Z
}
必须要有printf(‘ ‘);这一步
这一步不是不输出,是输出一个空格(空格也占一个位置),然后把后面的输出在这个空格后面
否则会变成
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n%2==0)
printf("2");
else
printf("1");
return 0;
}
分析这个 最远距离最小的含义
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131412.html