首页 > 其他分享 >第三周第四周周报

第三周第四周周报

时间:2024-02-18 16:24:37浏览次数:30  
标签:rt int sum 第三周 ++ num jk 四周 周报

这两周因为过年的原因训练的时间相对来说少了一些,但是codeforces上的比赛并没有落下,也补了以前的一些习题。寒假已经过去了一大半,总的来说进步自我感觉还是有的,特别是对以前不熟悉的算法加深了理解,运用上也更加流畅了起来。在学校的时候因为有课很少打cf上的比赛,害怕影响第二天的学习。寒假在家里倒是没这方面的担心,cf的分数增长了很多。事后在cf上补了一些习题。我参加的都是CF上的div3和div2的,感觉div2的打着还是比较难的,div3的感觉对我来说更加友好一些。要想进步的话还是要多打div2的比赛。前天的比赛能补的题目都补了,其中有一道最短路的题,我数值怎么都没有调整好就放弃了,感觉对我有点偏难了。也有道题例子过的比较艰难,挺折磨人的。

7-2 地下迷宫探索
这道题就是典型的dfs,我写的时候对最后的输出路径没有理解其意思,导致最后两个例子一直没有过,后来自己弄了例子测试的,才找到了问题点:没有把返回的路径给记录上,需要在dfs(i)
下面用vector存储。

include<bits/stdc++.h>

using namespace std;
int s[1005][1005],vis[10005],num=1;
vector ve;
int n,m,q;
void dfs(int x){
ve.push_back(x);
for(int i=1;i<=n;i++){
if(vis[i]0&&s[x][i]1){
//ve.push_back(i);
vis[i]=1;
num++;
dfs(i);
ve.push_back(x);
}
}
}
int main(){
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
s[a][b]=1;
s[b][a]=1;
}
vis[q]=1;
//ve.push_back(q);
dfs(q);
if(num==n){
for(int i=0;i<ve.size()-1;i++)
cout<<ve[i]<<' ';
cout<<ve[ve.size()-1];
}
else
{
for(int i=0;i<ve.size();i++)
cout<<ve[i]<<' ';
cout<<'0';
}
}
7-15 梯云纵
这道题贪心的比较艰难,需要计算很多麻烦的数值才能找到其规律性,当时做这道题时其实是知道肯定会用到贪心的,当时计算数值时就差最后五分钟了,真的是差一点就能把这道题解决了,还是挺遗憾的。

7-6 家庭房产
这个题思路比较简单,但是写起来还是很复杂的,就是在这道题上浪费了大量的时间,最后写了90多行代码,一提交就对一个例子。就是用并查集,然后用结构体来存储,不同的功能要用不同的函数分别实现,放在一起写很容易让人搞得头晕。

include <bits/stdc++.h>

using namespace std;
int fa[10050];
set peo;
struct people
{
int rooms;
double S;
} head[10050];
struct answer
{
int minid;
int num;
int rooms;
double S;
};
map<int, answer> mp;
void init()
{
for (int i = 0; i < 10050; i++)
fa[i] = i;
}

int Find(int a)
{
if (fa[a] == a)
return a;
else
return fa[a] = Find(fa[a]);
}

void Union(int a, int b)
{
int f1 = Find(a);
int f2 = Find(b);
if (f1 < f2)
fa[f2] = f1;
else
fa[f1] = f2;
}
bool cmp(answer &a1, answer &a2)
{
if (a1.S / a1.num == a2.S / a2.num)
return a1.minid < a2.minid;
return a1.S / a1.num > a2.S / a2.num;
}

void test()
{
init();
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
int id, p1, p2, knum, k;
cin >> id >> p1 >> p2 >> knum;
peo.insert(id);
if (p1 != -1)
{
peo.insert(p1);
Union(id, p1);
}
if (p2 != -1)
{
peo.insert(p2);
Union(id, p2);
}
for (int j = 0; j < knum; j++)
{
cin >> k;
peo.insert(k);//记录所有编号
Union(id, k);
}
cin >> head[id].rooms >> head[id].S;
}

for (int i : peo)
{
    int id = Find(i);
    mp[id].minid = id;
    mp[id].num++;
    mp[id].S += head[i].S;
    mp[id].rooms += head[i].rooms;
}
cout << mp.size() << endl;
vector<answer> res;
for (auto i : mp)
{
    res.push_back(i.second);
}

sort(res.begin(), res.end(), cmp);

for (auto i : res)
    printf("%04d %d %.3lf %.3lf\n", i.minid, i.num, 1.0 * i.rooms / i.num, 1.0 * i.S / i.num);

}

int main()
{
test();
return 0;
}
附上90多行的错误代码。。。

include<bits/stdc++.h>

using namespace std;
struct pe{
int sum=1e5;
double ar,num;
int yu;
}s[1005];
bool compare(struct pe a,struct pe b){
if(a.ar!=b.ar)
return a.ar>b.ar;
else
a.sum<b.sum;
}
int y[100005];
int main(){
int n,jk=1;
cin>>n;
while(n--){
int n,m,q,j,mm=0,rt;
cin>>n>>m>>q>>j;
int u[j+5];
if(y[n]!=0)
rt=y[n];
else
mm++;
if(y[m]!=0&&m>0)
rt=y[m];
else
mm++;
if(y[q]!=0&&q>0)
rt=y[q];
else
mm++;
for(int i=1;i<=j;i++){
cin>>u[i];
if(y[u[i]]0)
mm++;
else
{
rt=y[u[i]];
break;
}
}
int o,p;
cin>>o>>p;
if(mm
j+3){
y[n]=jk;
s[jk].sum=min(n,s[jk].sum);
s[jk].yu+=1+j;
if(m>0)
s[jk].sum=min(m,s[jk].sum),y[m]=jk,s[jk].yu++;
if(q>0)
s[jk].sum=min(q,s[jk].sum),y[q]=jk,s[jk].yu++;
for(int i=1;i<=j;i++)
s[jk].sum=min(u[i],s[jk].sum),y[u[i]]=jk;
s[jk].ar+=p;
s[jk].num+=o;
jk++;
}
else{
if(y[n]0)
{
y[n]=rt;
s[rt].yu++;
s[rt].sum=min(s[rt].sum,n);
}
if(y[m]
0&&m>0){
y[m]=rt;
s[rt].yu++;
s[rt].sum=min(s[rt].sum,m);
}
if(y[q]0&&q>0){
y[q]=rt;
s[rt].yu++;
s[rt].sum=min(s[rt].sum,q);
}
for(int i=1;i<=j;i++){
if(y[u[i]]
0){
y[u[i]]=rt;
s[rt].yu++;
s[rt].sum=min(s[rt].sum,u[i]);
}
}
}
}
for(int i=1;i<jk;i++){
s[i].ar/=s[i].yu;
s[i].num/=s[i].yu;
}
sort(s+1,s+jk,compare);
cout<<jk-1<<'\n';
for(int i=1;i<jk;i++)
cout<<s[i].sum<<' '<<s[i].yu<<' '<<s[i].num<<' '<<s[i].ar<<'\n';
}

标签:rt,int,sum,第三周,++,num,jk,四周,周报
From: https://www.cnblogs.com/niubuniu/p/18019479

相关文章

  • SMU Winter 2024 div2 ptlks的周报Week 3(2.12-2.18)
    这周主要加强了对知识点的掌握。P10161[DTCPC2024]小方的疑惑10从题目可以得知a个连续括号贡献为a(a+1)/2,代价为2a。要求总贡献恰为k,且代价不高于n。一开始我想到了模拟,先取一个贡献低于k最大的a,剩下的再直接在外面套括号,结果wa。又想到可以分出多个a来组成k,就用递归,每次......
  • 第三四周训练总结
    第三周是过年之前的最后一周,所以我也是憋足了劲写题。而第一次牛客组队合作写题也是令我印象深刻。虽然有点坐牢但合作的感觉还是不错的。题目也是难易分明,能在难题上看出自己的不足。而年前最后一次比赛似乎是想让我们过个好年,题目也变得简单了许多,但是有些简单的题我没把握好,确......
  • 《安富莱嵌入式周报》第332期:铷时钟控制板,航天战斗机C++代码标准,免费开源芯片设计,在线
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版https://www.bilibili.com/video/BV1tU421d7ZK/目录:1、Rubidium铷时钟控制板2、开源小设计,简易万用表连通性测试仪3、免费开源芯片设计软件Electric4、在线电路仿......
  • 周报3
    补题1:TokitsukazeandPassword(easy)题意:给一个只包含数字0到9,字母a,b,c,d,_.的字符串(1<=length<=9)和一个数字Y,其中a,b,c,d,_;都是未知的,且a,b,c,d直接各不相等,_无限制。问在没有前导0的前提下,a,b,c,d,_;填入数字,得出来的stoi(str)且是8的倍数,且小于Y.的填法有多少种。做......
  • 第四周
    本周我主要阅读了第二章——系统工程方法。第一节什么是系统工程。系统工程是以组织建立或者经营管理某一系统为目的的工程。系统工程具有复杂程度高、有一个目标体系、具有定量化特征、最优化特征从细化特征、应用范围广六大特点。系统工程本质上是一种方法论,在学科分类上处于......
  • 第三周读后感
    阅读《程序是怎样跑起来的》这本书后,我对计算机程序的运行原理有了更深入的理解。这本书以通俗易懂的方式,介绍了计算机的基本组成部分、程序的执行过程以及编程语言的实现细节。通过阅读这本书,我了解到计算机程序的运行不仅仅是代码的执行,还涉及到硬件、操作系统、编译器等多个层......
  • winter 2024 第二周周报
    内容winterweek2day1这套题复习了最短路,主要是dp,都是比较好推的dp,还是要多写dp吧,感觉写dp用的时间太久了day2这天是ccf的测试赛,测完就练了套河南大学联赛,10题看当时榜可能第八,只能说队友太给力了。写的那道l感觉挺好想的求方案数,刚开始也是在猜结论,没有想着去好好推qwq,后面......
  • 第二周周报
    训练赛2024蓝桥杯模拟赛2(div1+div2)题解2022年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(重现赛)题解2024牛客寒假算法基础集训营1题解自主训练题解题解题解......
  • SMU Winter 2024 div2 ptlks的周报Week 2(1.29-2.4)
    这周学习到的知识点有斯特林数(F鸡数题!)F鸡数题!思路第二类斯特林数代码#include<bits/stdc++.h>#defineintlonglong#defineMOD1000000007usingnamespacestd;intn,m,f[100005],fi[100005];intqpow(inta,intn){ intans=1; while(n){ if(n&1){ ......
  • 周报2
    补题1:[蓝桥杯2013国AC]网络寻路题意:找出包含四个结点的路径条数,源结点和终结点可以相同,但中间节点必须不同。做法:dfs暴力搜简单易想,但是会TLE。另一种巧妙的做法,枚举每一条边(最多1e5条),固定每一条边,ans+=(du[u]-1)*(du[v]-1)*2;即为答案。一条边固定两个端点,剩下两个端点在相互......