第三届传智杯初赛
A.课程时间
A - 课程报名 - 洛谷https://www.luogu.com.cn/problem/T160507
依照题意模拟即可
AC代码:
-
-
using namespace std;
-
int n,v,m,a;
-
int ans;
-
int main()
-
{
-
cin>>n>>v>>m>>a;
-
int s = n/m;
-
for(int i = 1;i<=s; i)
-
{
-
ans =v*m;
-
v =a;
-
}
-
ans =v*(n%m);
-
cout<<ans<<endl;
-
return 0;
-
}
B- 期末考试成绩B - 期末考试成绩 - 洛谷https://www.luogu.com.cn/problem/T160508这题比第一题还水,,按照题意模拟即可。不过我有个问题为什么59分的GPA是2.6,60分的才1.0。。
-
#include<bits/stdc .h>
-
using namespace std;
-
int n;
-
double ans;
-
int main()
-
{
-
cin>>n;
-
if(n>=90)
-
ans = 4;
-
if(n<60)
-
n = sqrt(n)*10;
-
if(n>=60&&n<90)
-
ans = 4.0-((90-n)*0.1);
-
printf("%.1f",ans);
-
return 0;
-
}
C-志愿者
C - 志愿者 - 洛谷https://www.luogu.com.cn/problem/T160509用sort排序下就行,定义一下排序规则。手写排序的小朋友一定要用快排,希尔排序,归并排序这种高级排序算法,使用冒泡插入选择会超时的哦
用结构体分别存难度,时间,志愿者编号然后一起排序就可以了
s是时间啊,k是难度,num是志愿者编号
AC代码:
-
-
using namespace std;
-
struct node{
-
int s,k,num;
-
}a[500005];
-
bool cmp(node a,node b)
-
{
-
if(a.s*a.k!=b.s*b.k) return a.s*a.k>b.s*b.k;
-
if(a.s!=b.s) return a.s>b.s;
-
return a.num<b.num;
-
}
-
int n;
-
int main()
-
{
-
ios::sync_with_stdio(false);
-
cin>>n;
-
for(int i = 1;i<=n; i)
-
{
-
cin>>a[i].s>>a[i].k;
-
a[i].num = i;
-
}
-
sort(a 1,a 1 n,cmp);
-
for(int i = 1;i<=n; i)
-
cout<<a[i].num<<" ";
-
return 0;
-
}
D-终端
D - 终端 - 洛谷https://www.luogu.com.cn/problem/T160510本来想用map的,但是输出顺序要按输入时间输出,我用mapWA了一次就没用了,数据范围才到10e4 就按着他思路模拟就可以过了。
一个数组存储文件名一个数组存储文件是否被删除,ls的时候看一下该点有没有被删除没被删除的输出就行了,算是暴力解法了
AC代码:
-
-
using namespace std;
-
string first[10005];//存储文件名
-
int vis[10005];//存储是否被删除
-
int cnt;
-
string temp,fname;
-
int n;
-
int main()
-
{
-
cin>>n;
-
while(n--)
-
{
-
cin>>temp;
-
if(temp=="ls")
-
{
-
for(int i = 1;i<=cnt; i)
-
if(vis[i])//如果没被删除就输出
-
cout<<first[i]<<endl;
-
continue;
-
}
-
cin>>fname;
-
if(temp=="touch")
-
{
-
bool flag = false;
-
for(int i = 1;i<=cnt; i)
-
if(first[i]==fname){//创建时如果该文件名存在直接跳过
-
flag = true;
-
break;
-
}
-
if(flag) continue;
-
first[ cnt] = fname;//新建文件
-
vis[cnt] = 1;//标记文件未删除
-
}
-
if(temp=="rm")//删除操作找到文件名直接标记为0就行
-
for(int i = 1;i<=cnt; i)
-
if(first[i]==fname)
-
{
-
vis[i] = 0;
-
break;
-
}
-
if(temp=="rename")//更改找到文件名直接更改就行了
-
{
-
string fname2;
-
cin>>fname2;
-
for(int i = 1;i<=cnt; i)
-
if(first[i]==fname)
-
{
-
first[i] = fname2;
-
break;
-
}
-
}
-
}
-
return 0;
-
}
E-运气
E - 运气 - 洛谷https://www.luogu.com.cn/problem/T160513 最基础的搜索,直接暴力枚举每一种情况就行了。时间复杂度是O(6^n)但因为n很小不会超时的
AC代码:
-
-
-
using namespace std;
-
const ll N = 10e9 7;
-
ll ans;
-
int n,k;
-
void dfs(ll now,int s)//now表示目前表示的数,s表示还有几次没甩
-
{
-
if(s==0)
-
{
-
if(now%k==0) ans ;//如果结果是k的倍数,令答案数量 1即可
-
return;
-
}
-
for(int i = 1;i<=6; i)
-
dfs((ll)now*10 i,s-1);
-
}
-
-
int main()
-
{
-
cin>>n>>k;
-
dfs(0,n);
-
printf("%lld",ans%N);
-
return 0;
-
}
F-游戏:
F - 游戏 - 洛谷https://www.luogu.com.cn/problem/T160511唯一没写出来的题,一开始考虑dp或者贪心,但是既不满足无后效性也不满足局部最优能得到全局最优,最后放弃了写这题。。后来发现可能需要建图求联通块啥的,不过没写出来就是没写出来
G-森林:
G - 森林 - 洛谷https://www.luogu.com.cn/problem/T160512这题还行,不过我一遍AC了,(小骄傲)
具体思路代码看我博客:
总结
除了a组比b组多出来的两题,其他题都相当水,,F题和G题勉勉强强够得到NOIP吧,我前五题一小时以内就A完了,G题也就写了十几二十分钟这样。F题我看了十几分钟没想出来解法就放弃了。算是第四届初赛前的一个小自测吧
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfeabj
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01