2014-7-19

昨天做了两道题,感觉挺水的,就没写题解。但是今天感觉还是纪念一下我的努力吧。

第一道是POJ 3630 Phone List

一道基础的Trie树,但是因为采用了动态建树,刚开始就TLE了。最后用了静态储存的方法就过了。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 100010;

struct N
{
    int next[11];
    bool sign;
}node[maxn];

string s;
int sum;

bool add()
{
    int len = s.length();
    int root = 0;
    for(int i = 0; i < len; i++)
    {
        int tmp = s[i] - ‘0‘;
        if(node[root].next[tmp])
        {
            root = node[root].next[tmp];
            if(i == len - 1)
            return 1;
            if(node[root].sign)
            return 1;
        }
        else
        {
            node[root].next[tmp] = sum;
            root = sum++;
        }
        if(i == len - 1)
        node[root].sign = 1;
    }
    return 0;
}

int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        sum = 1;
        bool flag = 1;
        memset(node, 0, sizeof(node));
        int n;
        cin >> n;
        for(int i = 0; i < n; i++)
        {
            cin >> s;
            if(flag)
            if(add())
            flag = 0;
        }
        if(flag)
        cout << "YES" << endl;
        else
        cout << "NO" << endl;
    }
}

第二道是POJ 3067 Japan

是一道树状数组的题。也很简单,但是我也是因为犯了很低级的错误导致WA和TLE了几发。最后调试的时候发现 树状数组的更新,如果传进去的参数为负数就会死循环,一下恍然大悟,负数加起来最后会是0,之后就死了。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
const int maxn = 1010;

struct N
{
    int f, l;
} node[maxn * maxn];

int sum[maxn];
int n, m, k;
vector<int> p;

bool cmp(N a, N b)
{
    return a.f > b.f;
}

void insert(int t)
{
    while(t <= m)
    {
        sum[t] += 1;
        t += t & (-t);
    }
}

int findsum(int t)
{
    t--;
    int ret = 0;
    while(t > 0)
    {
        ret += sum[t];
        t -= t & (-t);
    }
    return ret;
}

void print()
{
    for(int i = 1; i <= m; i++)
    cout << i << " " << sum[i] << endl;
}

int main()
{
    int t;
    cin >> t;
    for(int T = 0; T < t; T++)
    {
        memset(sum, 0, sizeof(sum));
        cin >> n >> m >> k;
        for(int i = 0; i < k; i++)
            scanf("%d%d", &node[i].f, &node[i].l);
        sort(node, node + k, cmp);

        int tt = 0;
        while(node[tt].f == node[0].f)
        {
            insert(node[tt].l);
            tt++;
        }
        long long ans = 0;
        for(int i = tt; i < k; i++)
        {
            if(node[i].f == node[i - 1].f)
            {
                ans += findsum(node[i].l);
                p.push_back(node[i].l);
            }
            else
            {
                for(int j = 0; j < p.size(); j++)
                    insert(p[j]);
                p.clear();

                ans += findsum(node[i].l);
                p.push_back(node[i].l);
            }
        }
        p.clear();
        printf("Test case %d: %lld\n", T + 1, ans);
    }
}

2014-7-19

时间: 2024-11-09 00:55:24

2014-7-19的相关文章

0000pt; margin-bot《怎样才能不得病》黄帝内经系列-2014.5.19群分享-健康养生

   2014/5/19 10:08:06 是以志闲而少欲,心安而不惧,形劳而不倦,气从以顺,各从其欲,皆得所愿. 人身体的汗是心血的变现.由于心主血脉,血全身无处不有,汗水也可能全身都出.所以中国古人的锻炼原则是"形劳而不倦",再怎么活动也不能让人体超负荷地去运转,所以不可以大汗淋漓.   小孩为什么爱吃糖?大家知道吗?    2014/5/19 10:08:06 "少欲"就是人不要有过多的欲望,要让所有的欲望有一个界限,这样就能做到"心安而不惧&quo

2014第19周日

晚上好不容易可以一个人安静一段时间,不自觉的上了知乎1个多小时,感觉很多只有作者能自圆其说的东西我都会觉得很有道理,看来我也很必要提升自己的知识修养和判断力.两个多小时过去了,我原来纠结的一些心结依旧存在,我该如何坦然接受甚至忘掉哪些无法挽回到过去?我该如何判断当前事或某件事重要性?1.判断当前事对未来3-5年的重要性,幻想站在未来的时空看现在,十年后回忆现在或者百年后闭眼临终前来审视现在,找出最值得做最有意义的事.2.生命死亡倒计时法,假定只有半年或三个月能活,我会做那些该做的事.3.不设任何

2014.5.19知识点学习:上下文切换

上下文切换(Context Switch) 或者环境切换 多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件.(时间片切换) 在操作系统中,CPU切换到另一个进程需要保存当前进程的状态并恢复另一个进程的状态:当前运行任务转为就绪(或者挂起.删除)状态,另一个被选定的就绪任务成为当前任务.上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境.(进程切换) 进程上下文用进程的PCB(进程控制块,也称为PCB,即任务控制块)表示,它包括进程状态,CPU

2014.8.19穷举法

穷举法(for循环嵌套) eg: 1 //100购物券,香皂2元,牙刷5元,洗发水15元,购物券不找零,每样至少买一个,哪个组合能吧100元正好花完 2 int count = 0; 3 for (int i = 1; i <= 40; i++)//香皂穷举 4 { 5 for (int j = 1; j <= 17; j++)//牙刷穷举 6 { 7 for (int k = 1; k <= 7; k++)//洗发水穷举 8 { 9 if (2 * i + 5 * j + 15 * k

2014第19周六

理智还是输给了情感,明知道对我不是最优解还是鲁莽去做,或许我只是努力做饭了自己认为的知道做到,在项目运作人员安排使用上远不能达到别人的期望,同时又把自己搞的很累,有这样的想法说明当前遇到了困难,也遇到了战胜困难让自己更强大的机会,全心去做自己认为该做的吧.2014第19周六

2014 8.19记录……

观摩了下传说中的的FFT(快速傅里叶) 大致就是用递归,和非递归两种方法实现. 赶脚fft算法比较适合在fpga里面跑个流水线.感觉应该比CPU&&dsp&&gpu强多了…… 用MATLAB验证计算结果.   2014 8.19记录--

2014第19周三

周三今天又做了不少开发工作,系统集成单点登录,tokon值管理以及集成用户session管理,权限管理.然后是附件上传.用到了jquery判断div是否显示隐藏.不能在公司和家里电脑发随笔,只能手机,感觉效率很低2014第19周三

2014第19周四开发记

第19周四感觉时间过的好快,五一后漫长的一周很快就要过去了,手上的工作任务依然很紧张,概括讲明天就有很几件事要做:1.调试上传按钮和div层滚动条样式问题:2.增加上传附件总大小和文件名不重复限制:3.修改掉原来stub的WS调用方式,众多接口要修改后验证:4.提交并进行代码审核:5.还有一系列要协调完成的任务: 今天开发几点问题小结:1.有两三次在用jquery的选择器时由于id错误或者把class属性值当成id调用导致jquery选择器后执行的dom操作都无效,还花费了不少时间才找到问题,以

Excel服务器待办事宜提醒客户端程序 [2014.03.19 日更新]

软件可以免费使用,作者仅保留一个版权声明于待办事宜提醒的状态栏处. 适用版本:Excel服务器9.2版及以上版本均支持. 欢迎大家提意见!联系QQ:303629685[Excel服务器待办事宜提醒客户端程序 20140113更新]        1.修复查询语句的小错误.        2.服务器端设置后,自动带出已设置的服务器端除密码外的相关信息.        3.客户端提醒设置后,自动带出已设置的客户端除密码外的相关信息.[Excel服务器待办事宜提醒客户端程序 20140109更新] 

Scrum Meeting 13 -2014.11.19

最近数据库和编译的实验课也开始了,大家晚上的时间直接被砍掉了大部分. 希望大家能顺利完成项目吧.剩下时间也不多了,如果程序还存在一些特别的问题和需要优化修改的地方也应该考虑留到下阶段进行了. Member Today’s task Next task 林豪森 与其他小组商讨整合问题 检测功能完整性,处理整合问题 宋天舒 测试项目功能实现 处理测试结果并对下阶段修改作建议 张迎春 测试项目功能实现 处理测试结果并对下阶段修改作建议 黄漠源 优化代码结构,添加注释 书写项目说明文档 黄敬博 优化代码