7.23考试总结
7.23考总
T3:
可将原式
快速转化为:
可发现,这里的 很像除法中的余数,那么只要判断数组是否不变,如果有变则无解,然后找到最小值,答案就是。
Tip:这里还要特判是否为真,如果成立则无解
AC code:
#include<bits/stdc++.h>
#define int long long//祖宗的凝视
#define endl "\n"//个人习惯
using namespace std;
const int maxn=1e5+5;
int x,n;
int c[maxn],mini=1e18;
signed main(){
cin>>n>>x;
for(int i=1;i<=n;i++){//输入
cin>>c[i];
}
int haha=c[1]%x;//求余
for(int i=1;i<=n;i++){
if(c[i]%x!=haha){//判断是否同余
cout<<"-1"<<endl;//不同余,无解
return 0;
}
}
for(int i=1;i<=n;i++){
mini=min(mini,c[i]);//最小值mini
}
if(mini<x){//特判
cout<<"-1"<<endl;
}
else{
cout<<mini-x<<endl;//answer
}
return 0;
}
T4
不难发现,非常小,所以可以枚举两根柱子的高度,再枚举其中一根柱子的高度,另一根柱子的高度就出来了,然后统计一下。
这里用一个桶来统计每个高度上有几根柱子,只要加两根柱子的最小值即可,因为如果有一根柱子没有,那么就达不到,如果两根都有,则要选更小的。
统计完之后判断一下,如果更大,则答案更新,答案的数量变为,如果等于现在的答案,则答案的数量。时复为
AC code:
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e6+5;
int n,h[maxn];
int vis[maxn];
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>h[i];
vis[h[i]]++;//桶标记
}
int sum=0,res=0;
for(int i=1;i<=6000;i++){//枚举高度
int ans=0;
for(int j=1;j<=i/2;j++){//枚举石柱
int x=i-j;//求另一根石柱的高度
if(j==x) ans+=vis[x]/2;//特判
else ans+=min(vis[x],vis[j]);//ans更新
}
if(ans>sum){//如果更大
res=1;//数量变为1
sum=ans;//更新
}
else if(ans==sum){//如果一样
res++;//数量++
}
}
cout<<sum<<' '<<res;//输出撒花✿✿ヽ(°▽°)ノ✿
return 0;
}
T6
考虑贪心,将每一个块按右端点排序,优先选右边的点就没了。(其余看代码)
AC code:
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e5+5;
int n;
bool vis[maxn];
struct Node{
int x,y,c;
}a[maxn];
bool cmp(Node x,Node y){
return x.y<=y.y;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].x>>a[i].y>>a[i].c;//输入
}
sort(a+1,a+n+1,cmp);//按右端点排序
int ans=0,cnt=0;
for(int i=1;i<=n;i++){//枚举每个块
cnt=0;
for(int j=a[i].x;j<=a[i].y;j++){//枚举每个点
if(vis[j]){//已经选过了
cnt++;//统计
}
}
if(cnt>=a[i].c){//已经达到了c
continue;
}
for(int j=a[i].y;j>=a[i].x;j--){//从右端点开始枚举
if(!vis[j]){//没选
vis[j]=1;//选了
cnt++;//统计
ans++;//答案+1
if(cnt==a[i].c){//已经选完了
break;
}
}
}
}
cout<<ans<<endl;
return 0;
}
本人(KK_SpongeBob)蒟蒻,写不出好文章,但转载请注明原文链接:https://www.cnblogs.com/OIer-QAQ/p/18575274

浙公网安备 33010602011771号