SMU Summer 2024 Contest Round 3(7.10)zhaosang
打的最菜一次,最惨一次,题读假了
A-A
http://162.14.124.219/contest/1007/problem/A
签到题
要解决这道题,素数对,数据量不是很大,所以我们可以先预处理素数,这个偶数肯定是等于小于它的两个素数,所以只需要遍历到小于它即可,把素数存起来,然后这两个素数的和等于这个偶数,并且要求相差最小所以遍历选差值最小的即可。
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
//ios::sync_with_stdio(0),cout.tie(0),cin.tie(0);
int a[100010],n,i,j;
for(i=3;i<=10000;i++)
{
a[i]=i;
}
for(i=2;i<=10000;i++)
{
for(j=2*i;j<=10000;j+=i)
{
a[j]=0;}}
while(scanf("%d",&n)!=EOF)
{
int b;
int ans=1000000;
for(i=3;2*i<=n;i++)
if(a[i]+a[n-i]==n){
if(abs(n-2*i)<ans){
ans=abs(n-2*i);
b=i;
}
}
printf("%d %d\n",b,n-b);
}
}
D-D
http://162.14.124.219/contest/1007/problem/D
签到题,不评价。
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,b,sum=0;
cin>>n;
for(int i=1;i<=n;i++){
int b;
cin>>b;
if(b>10){
sum+=b-10;
}
}
cout<<sum;
}
B-B
http://162.14.124.219/contest/1007/problem/B
找规律,有规律结论n=m-2;,需要特判n为1,n等于m时
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0),cout.tie(0),cin.tie(0);
long long n,m;
while(scanf("%lld %lld",&n,&m)!=EOF&&m!=0&&n!=0)
{
if(m==1)cout<<0<<'\n';
else if(n==1){
if(m==2)cout<<2;
else cout<<m;
}else
cout<<n+m-2<<'\n';
}
return 0;
}
I-I
http://162.14.124.219/contest/1007/problem/I
我在前面的题读假了,导致后面的题没有时间做不明白,确实很伤。
这道题就是给你一串数字问你最少删除多少个数字使得修改后的数满足是3的倍数。
如果没有输出-1;
有个很有意思的结论,如果它每位数字和加起来是三的倍数,这个数就是三的倍数
所以按照这个道理,我们先判断原本的数是不是三的倍数。然后关键的来了。
我们把所有的数余三,每一位数只有可能是0 1 2,我们可以这样想,如果余三之后的总和
余三为1,说明它差最小差一个二,最小差两个1,如果余三为2,说明最小差一个1,
注意这里还有可能是最少差两个2,因为加4了余数就是0,如果小于以上条件就是没有,这里
还需要特判一下如果满足上面条件但是它长度为他的值时,如11 22 44 他们加起来余三但是他们会把
自己全部删除,这个时候为0,所以我们只需要判断它是不是长度等于它某个数的数量,如果是就是-1
按照思路代码如下:
#include <bits/stdc++.h>
using namespace std;
using ll =long long;
string s;
ll v[10000001];
map<ll,ll>mp;
int main(){
cin>>s;
ll ans=stoll(s);
if(ans%3==0){
cout<<0;
return 0;
}
ll sum=0;
ll res=0;
int le=s.length();
for(int i=0;i<le;i++){
v[i]=(s[i]-'0')%3;
mp[v[i]]++;
sum+=v[i];
}
if((sum-2)%3==0&&sum-2!=0)
{
if(mp[2]>0){
cout<<1;
}else if(mp[1]>=2)
{
if(mp[1]==le){
cout<<-1;
}else
cout<<2;
}
else
cout<<-1;
}else if((sum-1)%3==0&&sum-1!=0){
if(mp[1]>0){
cout<<1;
}else if(mp[2]>=2){
if(le==mp[2])
cout<<-1;
else
cout<<2;
}
else
cout<<-1;
}else if(mp[0]>0){
cout<<mp[1]+mp[2];
}else
cout<<-1;
}
F-F
http://162.14.124.219/contest/1007/problem/F
木有时间写,但是后面补题也写了好久,但是终于学会写这种枚举数量的题了。
跟之前训练的一个孵小鸡很像,但是我现在学会的枚举跟简洁了。
本题思路暴力枚举,因为数据量不大,做法如下,B数组每一个里面有两个值,
你设置成一个为0,一个为1,这个时候相当于有2的m个选择,枚举每种里面的一个情况,
从全部都是0到全部都是1,找到满足A数组数量最多
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
long long n,m,k;
map<pair<ll,ll>,int>mp;
map<int,pair<ll,ll>>mp2;
int main()
{
unordered_set<ll>st;
//暴力枚举
//设置选中和未选中的状态
//枚举所有开关的状态
//每个开关的状态为0或者1
ios::sync_with_stdio(0),cout.tie(0),cin.tie(0);
cin>>n>>m;
for(int i=1;i<=m;i++){
ll a,b;
cin>>a>>b;
mp[make_pair(a,b)]++;
}
cin>>k;
for(int i=1;i<=k;i++){
ll a,b;
cin>>a>>b;
mp2[i]=make_pair(a,b);
}
ll ma=pow(2,k)-1;
ll ans=0;
for(int i=0;i<=ma;i++){
ll cnt=0;
bitset<16> bt(i);
for(int j=1;j<=k;j++){
bool pd=bt.test(j-1);
if(pd==false){
st.insert(mp2[j].first);
}else
st.insert(mp2[j].second);
}
for(auto it=mp.begin();it!=mp.end();it++){
ll f=it->first.first;
ll s=it->first.second;
if(st.find(f)!=st.end()&&st.find(s)!=st.end()){
cnt+=it->second;
}
}
ans=max(cnt,ans);
st.clear();
}
cout<<ans;
return 0;
}
SMU Summer 2024 Contest Round 3(7.10)zhaosang的更多相关文章
- Codeforces Round #581(Div. 2)
Codeforces Round #581(Div. 2) CF 1204 A. BowWow and the Timetable 题解:发现,$4$的幂次的二进制就是一个$1$后面跟偶数个$0$. ...
- Windows 下安装drozer(Windows 10),连接手机(红米note4X)
Windows 下安装drozer(Windows 10),连接手机(红米note4X) 首先下载drozer(http://mwr.to/drozer). 红米手机开发者模式 遇到第一个问题,红米手 ...
- (1.10)SQL优化——mysql 常见SQL优化
(1.10)常用SQL优化 insert优化.order by 优化 1.insert 优化 2.order by 优化 [2.1]mysql排序方式: (1)索引扫描排序:通过有序索引扫描直接返回有 ...
- (3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析【待写】
(3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析[待写]
- Alpha 冲刺报告(2/10)
Alpha 冲刺报告(2/10) 队名:洛基小队 团队困难汇总:在开始正式编码的时候遇到了很严重的问题,Cocos Creator的教程过少,之前浏览的官网上的教程以为很齐全,但是在最重要的脚本方面还 ...
- Notes of Daily Scrum Meeting(11.10)
Notes of Daily Scrum Meeting(11.10) 今天是周一,虽然仍然在假期里,但是我们仍然要继续我们团队的开发工作了,分工大家已然都很明确,所以接下来 就是认真投入,把自己负责 ...
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第五部分(Page 10)
编写你的第一个 Django app,第五部分(Page 10)转载请注明链接地址 我们继续建设我们的 Web-poll 应用,本节我们会为它创建一些自动测试. 介绍自动测试 什么是自动测试 测试是简 ...
- (2.10)Mysql之SQL基础——约束及主键重复处理
(2.10)Mysql之SQL基础——约束及主键重复处理 关键词:mysql约束,批量插入数据主键冲突 [1]查看索引: show index from table_name; [2]查看有约束的列: ...
- Alpha冲刺一 (5/10)
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9989898.html 作业博客:https://edu.cnblogs.com/campus/ ...
- Alpha冲刺 (4/10)
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9979357.html 作业博客:https://edu.cnblogs.com/campus/ ...
随机推荐
- 痞子衡嵌入式:不同J-Link版本对于i.MXRT1170连接复位后处理行为有所不同
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是不同J-Link版本对于i.MXRT1170连接复位后处理行为. 痞子衡之前写过一篇旧文 <i.MXRT1170上用J-Link连 ...
- 使用python在k8s中创建一个pod
要在Kubernetes (k8s) 中使用Python创建一个Pod,你可以使用Kubernetes Python客户端库(通常称为kubernetes或kubernetes-client).以下是 ...
- C#.NET Winform承载WCF RESTful API (App.config 方式)
1.新建一个名为"WindowsForms承载WCF"的WINFORM程序. 2.在解决方案里添加一个"WCF 服务库"的项目,名为"WcfYeah& ...
- MAPJOIN中无法使用UDF
今天在写SQL时,遇到了一个异常,提示semantic exception generate map join error unable to find class,udf编写的没毛病,其他SQL也有 ...
- SDL3 入门(2):第一个窗口
在上一篇文章中我们已经利用 SDL 的日志接口实现了简单的字符串输出,实际上是解决了开发环境搭建问题,接下来我们将在已有代码的基础上继续开发,实现第一个窗口的创建和背景色绘制. 初始化 首先设置日志输 ...
- VMWare配置处理器个数和实际电脑CPU核心线程数关系
配置说明 处理器数量 :指CPU内核数量(例如:4C / 8C),并不是指CPU颗数. 每个处理的核心数量:指CPU中的线程(4C8T中的8T),并不是指核心(Core)数量. 示例配置 处理器数量 ...
- 行为型模式(Behavioer Pattern)
行为型设计模式 行为型模式定义了系统中对象之间的交互与通信,研究系统在运行时对象之间的相互通信与协作,进一步明确对象的职责,包括对系统中较为复杂的流程的控制. 在软件系统运行时对象并不是孤立存在的,它 ...
- FFmpeg frei0r插件使用学习
背景 ffmpeg做基本的音视频编辑还是比较简单的,但要做一些滤镜及特效就比较麻烦了.接下来看看借用frei0r插件怎么做: 简介 你可以将frei0r看作是一个"视频特效工具箱" ...
- K-means聚类是一种非常流行的聚类算法
K-means聚类是一种非常流行的聚类算法,它的目标是将n个样本划分到k个簇中,使得每个样本属于与其最近的均值(即簇中心)对应的簇,从而使得簇内的方差最小化.K-means聚类算法简单.易于实现,并且 ...
- CLR via C# 笔记 -- 托管堆和垃圾回收(21)
1. 访问一个资源所需的步骤 1). 调用IL指令newobj,为代表资源的类型分配内存(一般使用C# new 操作符来完成). 2). 初始化内存,设置资源的初始状态并使资源可用.类型的实例构造器负 ...