USTCOJ 1382 毛毛虫
题目链接: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 毛毛虫相关推荐
- [HAOI2009]毛毛虫
题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大. 输入输出格式 输入格式: 在文本文件 worm.in 中第一行两个整数 N , M ,分 ...
- IOS基础之毛毛虫案例-重力
IOS基础之毛毛虫案例-重力 // // ViewController.m // 17-毛毛虫案例-重力 // // Created by 鲁军 on 2021/4/17. //#import &qu ...
- P3174 [HAOI2009]毛毛虫(树形dp)
P3174 [HAOI2009]毛毛虫 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树(图 1 )抽出一部分就变成了右边 ...
- 显卡测试软件毛毛虫,超龙超龙,与众不同,顶流配备,散热一流,3070Ti超龙旗舰版评测...
可能大家都没想到此次显卡荒会持续近一年,还是出现国家级干涉才将这股"歪风"刹住了.而且也仅仅算是刹住了大陆的速度,主要踩死刹车的应该就是黄大厨.他从5月初推出的新核心就采取了出厂即 ...
- 苹果CMSV10绿色毛毛虫主题模板
简介: 一套简洁的绿色风格毛毛虫苹果cms模板,苹果CMSV10版本,自适应手机端. 模板包含.新闻.留言.专题模块,页面很多就不一一截图了. 修复了首页图片不显示的BUG,已测试,完美无错. 安装方 ...
- JZYZOJ 1382 光棍组织 状压dp
http://172.20.6.3/Problem_Show.asp?id=1382 水得过分了,本来以为要用lzx学长的写法写,抱着试试看的想法写了个特暴力的dp+dfs,过了,真是... ...
- P3174 [HAOI2009] 毛毛虫
题意:给你一棵树,取出一根链和与链相邻的"脚":问能取出的最大节点数是多少? 分析:很容易想到:f[u] 是 u 为当前子树根节点的毛毛虫头时子树内毛毛虫最大点数.但当时其实最大的 ...
- 【haoi2009】毛毛虫
题面 题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大.例如下图左边的树,抽出一部分就变成了右边的一个毛毛虫了. 输入格式 第一行两个整数N ...
- 【LOJ6570】毛毛虫计数
[题目链接] 点击打开链接 [思路要点] 定义毛毛虫的主链为去掉度为 1 1 1 的节点的部分. 主链长度不足 2 2 2 的情况即为一个菊花图,显然有 N − [ N = 2 ] N-[N=2] N ...
最新文章
- 下一代构建工具 Gradle ,比 Maven 强在哪里!
- 代码片段管理器——SnippetsLab
- 警惕python中的*重复符(运算符)
- mysql查询条件_mysql条件查询,最简单的一种,你知道吗?
- JAVA面对对象(一)——封装
- 如何成为一名优秀的程序员?
- [Java基础]Collections概述和使用
- 深度学习的实用层面 —— 1.8 其它正则化方法
- 七步从Angular.JS菜鸟到专家(1):如何开始【转】
- Ruby之旅(16) 异常处理 rescue与ensure
- ajax调用方式汇总
- AttributeError: module ‘tensorflow‘ has no attribute ‘constant‘
- Ajax的工具类AjaxUtils,使用struts返回Json类型
- 基于jsp+mysql+Spring+SpringMVC+mybatis的房源信息管理系统
- 《数字图像处理》空间滤波学习感悟1:空间滤波原理
- Network Mapper 嗅探工具
- 【软件构造】过程与配置管理
- Spring Security系列教程27--Spring Security实现CAS单点登录--搭建CAS服务端
- gentoo linux 分区_开始使用gentoo linux——gentoo安装笔记(上)
- 变异凯撒(实验吧CTF题库-密码学)