题目链接:http://acm.ustc.edu.cn/ustcoj/problem.php?id=1382

想清楚其中变化规律很重要,一开始只想到位置的变化技巧,没注意到方向也有这种规律:

虫子可以视为对穿而过,那么所有虫子假设不转头,t时间后,有t个位置,这与虫子转头情况下的的位置一样,(虫子的位置换了,但还是那几个坐标)

其实到这里可以在想想方向的变化是一样的,因为每次掉头,相当于虫子互换了方向信息,所以直接结构体里的信息互换即可。

代码如下:

/**********
*Author: lerence1201
***********/
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<ctime>
#define N 10010
using namespace std;int a[N] = {0};struct worm
{int pos, num;char s[10];
}wormm[N];bool cmp1(worm p, worm q)
{return p.pos < q.pos;
}bool cmp2(worm p, worm q)
{return p.num < q.num;
}int main()
{int T, i, l, s, t, n;/*freopen("1382.in", "r", stdin);freopen("1382.out", "w", stdout);*//*freopen("1382small.in", "r", stdin);freopen("1382small.out", "w", stdout);*//*clock_t st, en;st = clock();*/cin >> T;s = 1;while (T--){cin >> l >> t >> n;i = 0;while (i < n){cin >> wormm[i].pos >> wormm[i].s;wormm[i].num = i;i++;}sort(wormm, wormm + n, cmp1);for (i = 0; i < n; ++i){a[i] = wormm[i].num;if (strcmp("L", wormm[i].s) == 0)wormm[i].pos -= t;elsewormm[i].pos += t;}sort(wormm, wormm + n, cmp1);for (i = 0; i < n; ++i)wormm[i].num = a[i];for (i = 0; i < n - 1; ++i){if (wormm[i].pos == wormm[i + 1].pos){strcpy(wormm[i].s, "Turning");strcpy(wormm[i + 1].s, "Turning");}}sort(wormm, wormm + n, cmp2);cout << "Case #" << s << ":\n";for (i = 0; i < n; ++i){if (wormm[i].pos < 0 || wormm[i].pos > l)cout << "Fell off\n";elsecout << wormm[i].pos << ' ' << wormm[i].s << endl;}s++;cout << endl;}/*en = clock();*//*cout << "Time :" << (double) (en - st) / CLOCKS_PER_SEC << endl;*/return 0;
}

正式提交建议用scanf,printf,而不要用cin, cout

写这篇报告来,提醒自己要善于发现规律,思维再开阔一些

USTCOJ 1382 毛毛虫相关推荐

  1. [HAOI2009]毛毛虫

    题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大. 输入输出格式 输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分 ...

  2. IOS基础之毛毛虫案例-重力

    IOS基础之毛毛虫案例-重力 // // ViewController.m // 17-毛毛虫案例-重力 // // Created by 鲁军 on 2021/4/17. //#import &qu ...

  3. P3174 [HAOI2009]毛毛虫(树形dp)

    P3174 [HAOI2009]毛毛虫 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边 ...

  4. 显卡测试软件毛毛虫,超龙超龙,与众不同,顶流配备,散热一流,3070Ti超龙旗舰版评测...

    可能大家都没想到此次显卡荒会持续近一年,还是出现国家级干涉才将这股"歪风"刹住了.而且也仅仅算是刹住了大陆的速度,主要踩死刹车的应该就是黄大厨.他从5月初推出的新核心就采取了出厂即 ...

  5. 苹果CMSV10绿色毛毛虫主题模板

    简介: 一套简洁的绿色风格毛毛虫苹果cms模板,苹果CMSV10版本,自适应手机端. 模板包含.新闻.留言.专题模块,页面很多就不一一截图了. 修复了首页图片不显示的BUG,已测试,完美无错. 安装方 ...

  6. JZYZOJ 1382 光棍组织 状压dp

    http://172.20.6.3/Problem_Show.asp?id=1382   水得过分了,本来以为要用lzx学长的写法写,抱着试试看的想法写了个特暴力的dp+dfs,过了,真是...   ...

  7. P3174 [HAOI2009] 毛毛虫

    题意:给你一棵树,取出一根链和与链相邻的"脚":问能取出的最大节点数是多少? 分析:很容易想到:f[u] 是 u 为当前子树根节点的毛毛虫头时子树内毛毛虫最大点数.但当时其实最大的 ...

  8. 【haoi2009】毛毛虫

    题面 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树,抽出一部分就变成了右边的一个毛毛虫了. 输入格式 第一行两个整数N ...

  9. 【LOJ6570】毛毛虫计数

    [题目链接] 点击打开链接 [思路要点] 定义毛毛虫的主链为去掉度为 1 1 1 的节点的部分. 主链长度不足 2 2 2 的情况即为一个菊花图,显然有 N − [ N = 2 ] N-[N=2] N ...

最新文章

  1. 下一代构建工具 Gradle ,比 Maven 强在哪里!
  2. 代码片段管理器——SnippetsLab
  3. 警惕python中的*重复符(运算符)
  4. mysql查询条件_mysql条件查询,最简单的一种,你知道吗?
  5. JAVA面对对象(一)——封装
  6. 如何成为一名优秀的程序员?
  7. [Java基础]Collections概述和使用
  8. 深度学习的实用层面 —— 1.8 其它正则化方法
  9. 七步从Angular.JS菜鸟到专家(1):如何开始【转】
  10. Ruby之旅(16) 异常处理 rescue与ensure
  11. ajax调用方式汇总
  12. AttributeError: module ‘tensorflow‘ has no attribute ‘constant‘
  13. Ajax的工具类AjaxUtils,使用struts返回Json类型
  14. 基于jsp+mysql+Spring+SpringMVC+mybatis的房源信息管理系统
  15. 《数字图像处理》空间滤波学习感悟1:空间滤波原理
  16. Network Mapper 嗅探工具
  17. 【软件构造】过程与配置管理
  18. Spring Security系列教程27--Spring Security实现CAS单点登录--搭建CAS服务端
  19. gentoo linux 分区_开始使用gentoo linux——gentoo安装笔记(上)
  20. 变异凯撒(实验吧CTF题库-密码学)

热门文章

  1. java 实验4 字体对话框_文字字体设计窗体 实验!求大神
  2. SQL 已更新或删除的行值要么不能使该行成为唯一行
  3. python读取以及保存gif图
  4. 叮咚同城小程序问题:点击发布信息按钮自动闪退到首页的解决方法
  5. 10[粒子系统的实现]
  6. 解决U-net上采样过程后,结合下采样信息时特征图大小不匹配问题
  7. windows7远程桌面
  8. 哈佛的计算机视觉医学方向排名,搜狐科学 | 美国医学院十强排名出炉 哈佛大学再次排名榜首...
  9. docker安装redis镜像步骤
  10. 光猫,交换机和路由器的区别