CodeForces 918B - Radio Station
perm_identity  query_builder
listACM之路,文章  comment评论

前天CF排位赛的题
考验对STL的运用...

来源 Codeforces Round #459 (Div. 2)

1.png
2.png

Accept GNU G++14 6.2.0 15ms 2072kB

/**
 * @author    Moe_Sakiya        i@tun.moe
 * @date        2018-01-29 23:36:36
 *
 */

#include <iostream>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <stack>
#include <queue>

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>

using namespace std;

string name[1000];
map<string, int> smap;

int main(void) {
    string command, ip;
    int i, n, m;
    cin >> n >> m;
    for (i = 0; i < n; i++) {
        cin >> command >> ip;
        name[i] = command;
        smap[ip] = i;
    }
    for (i = 0; i < m; i++) {
        cin >> command >> ip;
        ip.pop_back();
        cout << command << " " << ip << "; #" << name[smap[ip]] << endl;
    }
    return 0;
}

HDU 1251 - 统计难题
perm_identity  query_builder
listACM之路,文章  comment1 条评论

接着水...
话说这个假期过去半个月了 才水了30多题 老师怕不是想打死我

裸着的Trie树
我反正没模板自己敲的 心疼帮我debug的ljb大佬一秒 调了半个小时才发现我malloc里面没打struct

1.png

Accept C++ 109ms 45536kB:

/**
 * @authors    Moe_Sakiya        i@tun.moe
 * @date        2017-12-05 15:55:42
 *
 */

#include <iostream>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <stack>
#include <queue>

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>

using namespace std;

struct Trie
{
    //记录当前节点下共有多少字符串
    int num ;
    //26个叉
    Trie * next[26];
} root;

/**
    对Trie树进行插入操作
        char * str:插入的字符串
**/
void  createTrieNode(char * str) {
    int i, j, id;
    int len = strlen(str);
    //使当前指针指向根
    Trie * ptr = &root;
    Trie * nextptr;
    //执行插入操作
    for (i = 0; i < len; i++) {
        //计算插入时的节点id(a~z==0~25)
        id = str[i] - 'a';
        if (ptr->next[id] == NULL) {
            //当前节点指向的下一个节点为空 新建节点 并将值付给next
            nextptr = (Trie *)malloc(sizeof(struct Trie));
            //初始化节点
            nextptr->num = 0;
            for (j = 0; j < 26; j++)
                nextptr->next[j] = NULL;
            ptr->next[id] = nextptr;
            //将当前节点指针移向下一个节点
            ptr = nextptr;
            //增加计数器
            ptr->num++;
        } else {
            //下个节点有值
            ptr = ptr->next[id];
            ptr->num++;
        }
    }
    return;
}

/**
    对Trie树进行查找操作
        char * str:要查找的字符串
    返回int 查找到的个数
**/
int searchTrieNode(char * str) {
    int i, id;
    int len = strlen(str);
    Trie * ptr = &root;
    //执行搜寻操作 直接访问并返回最后一个节点的num 如果存在NULL则返回0
    for (i = 0; i < len; i++) {
        id = str[i] - 'a';
        if (ptr->next[id] == NULL)
            return 0;
        else {
            ptr = ptr->next[id];
        }
    }
    return ptr->num;
}

int main(void) {
    int i;
    char str[12];
    //初始化根节点
    root.num = 0;
    for (i = 0; i < 26; i++)
        root.next[i] = NULL;
    //读入字符串作为字典
    while (gets(str) && strlen(str) != 0)
        createTrieNode(str);
    //开始查找
    while (gets(str))
        printf("%d\n", searchTrieNode(str));
    return 0;
}

CodeForces 897B - Chtholly's request
perm_identity  query_builder
listACM之路,文章  comment4 条评论

emmm....是时候水点东西了....
昨天去网吧包宿....打的Codeforces
真鸡儿困/(ㄒoㄒ)/~~

第一次写题解emmmm

来源 Codeforces Round #449 (Div. 2)

1.png

首先要求是对从1~a的回文且位数可以被二整除的数字相加并对b取模
emmmm....很暴力的算法没试过 因为第一次没用long卡数据了...╮(╯▽╰)╭
应该是过不去的...我打表花了几分钟

打表之后能看出 第i个数字 = i*i的位数+i的回文
例如

2.png

然后就直接加起来过了.....
别忘了注意数据范围...会爆int然后WA在test 3

Accept 15ms 2020KB:

/**
 * @authors    Moe_Sakiya        i@tun.moe
 * @date        2017-12-03 14:47:29
 *
 */

#include <iostream>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <stack>
#include <queue>

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>

using namespace std;

int tenpw(int i) {
    int tmp = 1;
    while (i--)
        tmp *= 10;
    return tmp;
}

int main(void) {
    //注意数据范围 注意数据范围 注意数据范围
    unsigned long long sum = 0;
    unsigned long long i, a, b, tmp, cnt, rtmp;
    cin >> a >> b;
    for (i = 1; i <= a; i++) {
        //根据打表知第i个数字即为i*位数+i的回文
        tmp = i;
        rtmp = 0;
        cnt = 0;
        while (tmp > 0) {
            rtmp = rtmp * 10 + tmp % 10;
            tmp /= 10;
            cnt++;
        }
        tmp = i * tenpw(cnt) + rtmp;
        sum += tmp;
        sum %= b;
    }
    cout << sum << endl;
    return 0;
}

数据迁移 搬家
perm_identity  query_builder
list日志  comment1 条评论

嗯 景安不让其他地方备案的域名继续解析了
所以还是换回阿里云了

反正有点麻烦就是了....到时候还要处理一下CDN
emmm 就算这个没什么人看的博客重新活回来了吧....

然后嘛...比较值得高兴的...
进学校ACM实验室了...很开心嘛...
(刷题的乐趣啊...)

蒟蒻一只 请多指教
(现在也算是四分之一个ACMer了吧)


emmmm
perm_identity  query_builder
list日志  comment评论

临时加了一个验证码
可能移动端还是会有点小问题...

要做个文明人...不然D死他...
(主要还是因为穷)

算了算了 刷题去了
还要等着ljb大佬请我吃饭呢


  1. 1
  2. 2
  3. 3
  4. 4
  5. ...
  6. 8