首页 > 其他分享 >《冬训周报三》

《冬训周报三》

时间:2023-01-22 19:11:14浏览次数:46  
标签:sort cout int 冬训 cin tie 排序 周报

关于C++中ios::sync_with_stdio(false);

 在C++中的输入和输出有两种方式,一种是scanf和printf,另一种是cin和cout,在#include<bits/stdc++.h>这个万能头文件下,这两种方式是可以互换的。
C++和C很相似,但是在后面的一种方式中cin和cout的输入和输出效率比第一种低,而cin,cout之所以效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来打消iostream的输入 输出缓存,可以节省许多时间,使效率与scanf与printf相差无几,还有应注意的是scanf与printf使用的头文件应是stdio.h而不是 iostream。   即ios::sync_with_stdio(false);这个可以大幅提高大数据的输入和输出以节省时间  

关于cin.tie(0)和cout.tie(0)

tie

tie是将两个stream绑定的函数,空参数的话返回当前的输出流指针。


在默认的情况下cin绑定的是cout,每次执行 << 操作符的时候都要调用flush,这样会增加IO负担。可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率

ACM应用

在ACM里,经常出现数据集超大造成 cin TLE的情况。这时候大部分人认为这是cin的效率不及scanf的错,甚至还上升到C语言和C++语言的执行效率层面的无聊争论。其实像上文所说,这只是C++为了兼容而采取的保守措施。我们可以在IO之前将stdio解除绑定,这样做了之后要注意不要同时混用cout和printf之类。

在默认的情况下cin绑定的是cout,每次执行 << 操作符的时候都要调用flush,这样会增加IO负担。可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率。

 

ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);

// std::ios::sync_with_stdio(false);
// std::cin.tie(0),cout.tie(0); 

原来而cin,cout之所以效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段代码可以来打消iostream的输入 输出缓存,可以节省许多时间,使效率与scanf与printf相差无几.

 

结构体排序

当时觉得应该能写出来的,但是好像写错了


顺便补上一道题 好想听肆宝唱歌啊

代码实现

#include<bits/stdc++.h>
using namespace std;
typedef struct sing{
    int w;
    string s;
};
bool cmp(sing a,sing b)
{
    return a.w > b.w;
}
int main()
{
    int n;
    cin >> n;
    sing str[1000020];
    for(int i=0;i<n;i++)
     cin >> str[i].w >> str[i].s;
     int k;
    cin >> k;
    sort(str,str+n,cmp);
    cout << str[k].s << endl;
    return 0;
}

(其实就是再写cmp函数,可能是我对sort还不太熟悉)

 

关于sort函数

参数

(1)start表示要排序数组的起始地址; (2)end表示数组结束地址的下一位; (3)cmp用于规定排序的方法,可不填,默认升序。  

功能

sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。 一般是直接对数组进行排序,例如对数组a[10]排序,sort(a,a+10)。而sort函数的强大之处在可与cmp函数结合使用,即排序方法的选择。  
为什么要用c++标准库里的排序函数?   sort()函数是c++一种排序方法之一,相较冒泡排序和选择排序所带来的执行效率不高的问题,sort()函数使用的排序方法是类似于快速排序的方法,时间复杂度为n*log2(n),执行效率较高。  

假设定义一个结构体:

struct node
{    
int a;    
int b;    
double c;
}

有一个node类型的数组node arr[100],想对它进行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b还相同,就按c降序排列。就可以写一个比较函数:

bool cmp(node x,node y)
{    
if(x.a!=y.a) return x.a<y.a;    
if(x.b!=y.b) return x.b>y.b;    
return x.c>y.c;
}

 

月光奏鸣曲

题解

处理出第一个正方形0,90,280,270度时的样子,然后将第二个正方形进行比较,最小旋转次数即可,如果都不能匹配,则输出-1;

当时也是这么想的,不过没想出来怎么写旋转

 (记录一下正二维的旋转怎么写)

关键代码

bool check0() {
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            if (b[i][j] != a[i][j]) return false;
        }
    }
    return true;
}//判断0度

bool check1() {
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            if (b[i][j] != a[n - j + 1][i]) return false;
        }
    }
    return true;
}//判断90度

bool check2() {
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            if (b[i][j] != a[j][n - i + 1]) return false;
        }
    }
    return true;
}//判断180度

bool check3() {
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            if (b[i][j] != a[n - i + 1][n - j + 1]) return false;
        }
    }
    return true;
}//判断270度

 

标签:sort,cout,int,冬训,cin,tie,排序,周报
From: https://www.cnblogs.com/Gwzhizi/p/17064582.html

相关文章

  • SMU冬训营第三周周一
    A.Lucky?题意:给出一个六位数,如果它的前三位之和等于它的后三位之和,就输出"YES",否则输出"NO"。思路:测试样例里面有的六位数不是真正的六位数,有的是‘0’开头的,所以选择......
  • .NET周报【1月第3期 2023-01-20】
    这应该是2023年农历新年前的最后一篇.NET周报,再次预祝大家新年快乐!国内文章看我是如何用C#编写一个小于8KB的贪吃蛇游戏的https://www.cnblogs.com/InCerry/p/building-......
  • 寒假周报(三)
    寒假周报Date:2023年1月17日(周二)大致方向这一周把时间花在了学车上,就没怎么写题了,复习一下之前的知识。详细情况复习!!!学车!!!考试!!!总结顺利考完科目一!!!o( ̄︶ ̄)o(100分)(待更新,......
  • 周报三
    2023/1/15周报大主题:字符串&动态规划&数论本周总结:本周主要是对Treap的学习。Treap学习笔记:C.C--/Treap.mdatmaster·JoshuaZhengsurp/C.C--(github.com)之......
  • 2023.1.16周报
    本周总结:《算法竞赛》5.1、5.2,5.5、5.6,《算法竞赛进阶指南》0x53、0x54。大方向:动态规划小专题:区间DP、树形DP题目完成情况:div2、abc各一场。P2015(树形DP)、P1352......
  • 2023.1.9周报
    2023.1.9周报本周总结本周复习了树的直径,最近公共祖先,树上差分和前缀和和tarjan求scc等内容,学习了0/1分数规划,负环,差分约束系统。大主题图论小专题树的直径,最近公共......
  • 2023.1.16周报
    本周总结这周琐事较多,忙着回老家各种,训练量较小,这周主要还是在写数据结构,外加一部分的数论基础知识,主要还是跟着牛客的专题推进。大专题数据结构小专题莫队,带修莫队,......
  • 2023/1/16 周报
    周报本周总结​ 这周前几天主要是在听NamomoCamp训练营,晚上补补上课讲的题。然后跟着OIWIKI学习了一些图论的概念,并且刷了一些图论的题目,完善知识点。课上说ARC和ABC都......
  • 周报
    叶子豪202002020325大主题:搜索,思维小专题:刷相应的题题目完成情况:abc275BCDE思维dpabc274CDE思维dfsdpabc273BCD思维二分abc272CDE思维bfsabc271CDE......
  • SMU冬训营第二周蓝桥杯模拟赛
    A.解码题目:小明有一串很长的英文字母,可能包含大写和小写。在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表达得更短:将连续的几个相同字母写成字母+......