zoukankan      html  css  js  c++  java
  • 2018-12-1学习纪录

    ACM 2.5h

    下午一点钟起床洗澡完,到五点比赛结束,总共花了大概2.5个小时做题,做的效果不尽人意,只做出4题,第五题在5点之后调试成功。由于水题为主,我就简单记录一下。
    题目链接:https://files-cdn.cnblogs.com/files/jinjin-2018/contest1inhdoj.pdf

    • 第一题要求输入多行数,区分一行内的数是否全部严格大于0。 错误点:遇到不满足的直接跳过,忽略了之后的输入。
    • 第二题看起来要用lowbit(),但是由于求期望值,想当于前缀和不变。
    • 第三题告知一个圆上的n个点以及他们分圆弧的长度,要求计算可以构成多少个长方形,O(n²)的搜索即可。
    ```c++ #include #include using namespace std; int pos[500] = {0}; int a[500] = {0};

    int main(){
    int n;
    while(cin >> n){
    map<int,int> mp;
    int sum = 0;
    for(int i = 1; i <= n ; i++){
    pos[i] = sum;
    mp[sum] = i;
    int t;
    cin >> t;
    sum += t;
    }
    int cnt = 0;
    if(sum%2) {cout << 0 << endl;continue;}
    for(int i = 1; i <= n; i++){
    for(int j = i+1; j <= n; j++){
    int d = pos[j] - pos[i];
    if(d >= sum/2) break;
    int e = sum/2 - d;
    if( j < mp[pos[j]+e] && mp[pos[i]+sum - e] <= n && mp[pos[j]+e] < mp[pos[i]+sum - e]) cnt++;
    }
    }
    cout <<cnt<<endl;
    }
    return 0;
    }

    * 第四题计算申请的变量占多少K字节,由于是向上取整,sum - 1 除以1024 + 1及为答案,0作为特殊情况额外考虑。
    * 第五题做出的比较少,由于比赛已经结束无法验证自己的解法是否正确。(开放后调试了一下已AC)思路就是2 * 3 * 4*...直到最大的一个,多出来的数加到之前的因子上,加的策略是从大往小的加。如果全部因子加了1还剩1,那么就加在最大那个数上,大概是贪心的思想,代码实现的比较丑陋,以后有机会可以改善一下。
    

    include

    using namespace std;

    long long f[20];
    int nums[205];

    void init1(){
    long long mul = 1;
    f[0] = 0;
    for(int i = 2; i <= 20;i++){
    mul = i;
    f[i-1] = mul;
    }
    return ;
    }
    void init2(){
    int start = 5;
    int x = 5;
    for(int i = 4; i <= 20; i++){
    x += i;
    while(start < 202 && start < x){
    nums[start] = i-2;
    ++start;
    }
    }
    }
    int main(){
    int n;
    cin >> n;
    init1();
    init2();
    while(n--){
    int m;
    cin >> m;
    if(m == 1) cout << 1<<" "<<1<<endl;
    else if(m == 2) cout << 2 <<" "<<2<<endl;
    else if(m == 3) cout << 2 <<" "<<3<<endl;
    else if(m == 4) cout << 3 <<" " <<4<<endl;
    else{
    int k = nums[m];
    int ss = m - k
    (k+3)/2;
    long long res;
    if(ss > k) res = f[k+2]/2/(k+2);
    else res = f[k+1]/(k+1+1-ss) ;
    cout <<m-1<<" "<<res<<endl;
    }

    }
    return 0;
    

    }

    
    ***
    
    ## CSAPP 1hour
    <font size = "3">晚上家教回来玩了会手机10:00就开始看啦,看到了11:40,但是效率不高,暂且按照1hour计算有效学习时间。
    今天开始看第二章“信息的表示与处理”: 
    C11标准执行:
    

    linux> gcc -std=c11 prog.c

    <font size = "3">2.1信息存储:字节是最小的可寻址的内存单元 
    * 2.1.1 十六进制表示法:0x前缀,支持大小写混合,练习了 10进制 <==>16进制<==>2进制的相互换算。记忆0xA = 1010B ,0xC = 1100B,0xF = 1111B十分有必要。
    * 2.1.2 字数据大小:
    可移植性
    64位机可选操作,体现在编译上的差异:
    

    linux> gcc -m32 prog.c
    linux> gcc -m64 prog.c

    * 2.1.3 寻址和字节顺序: 大端法与小端法:1.网络(网络标准解决)2.机器级代码 3.系统型编程P31,明天解决。
  • 相关阅读:
    C# 字符串多行显示、文本换行
    安卓TextView显示图片与文字作为底部菜单
    在Eclipse中载入安卓SDK框架源代码(部分)
    Android分享到腾讯微博,信息,新浪微博等等,的实现方式
    PHP运行环境配置
    Android布局设计之ExpandableList绑定XML数据构成级联、item布局页面的控件查找及配置child事件,自定义适配显示内容
    Flash开发Android应用
    Android布局设计之ListView使用XML数据源来分页加载
    移动应用开发视频教学下载大全(VeryCD上)
    前端 关于请求地址时出现乱码, 出现%E2%80%8B的问题
  • 原文地址:https://www.cnblogs.com/jinjin-2018/p/10050463.html
Copyright © 2011-2022 走看看