
ACM_模拟
文章平均质量分 52
羁绊残阳
四川大学计算机科学与技术
展开
-
Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C. Ray Tracing 模拟
分析:把所有的点按照他们所在地斜线分类,斜线形如y=x+b,y=−x+by=x+b,y=-x+b。然后模拟整个运动过程,每次都是一个斜线到另一个斜线的变换,最多有O(max(n,m))O(max(n, m))的复杂度。 比赛的时候快速想出了整个思路,并且紫色渡劫成功。欢迎读者关注Codeforces id:JIBANCANYANG。#include <cstdio>#include <cstri原创 2016-10-09 13:30:43 · 545 阅读 · 0 评论 -
poj 3087 模拟
背景:bfs专题的题,可是直接模拟就好了啊。思路:管件在于记录第一个s12串,当再次出现第一个s12串时说明进入了循环之中,不能呢达到目标状态。学习:1.strcmp时要注意,该字符串的有效部分是不是以'\0'结尾的。#include#include#include#include#include#include#include#include#include#inclu原创 2015-03-21 16:39:46 · 600 阅读 · 0 评论 -
UVa 133 双向约瑟夫环
背景:1_TlE:没有考虑到,当k,m很大的时候,就会用太多时间,那么我想到了:k=k%n+n;// 之所以要加n,是为了避免,k是n的倍数时,k等于0。m=m%n+n;2_WA:经过_TLE:之后没有完善,当k不是n的倍数时就不能加n!终究来说还是没有测试所有数据,以后切题,就把所有数据保存在记事本,要全部通过,才提交!! 好多人都说这是一个双向链表的数据结构题,被我数组模拟过了,双向约瑟原创 2015-01-23 10:09:28 · 1176 阅读 · 0 评论 -
UVa 1585 字符串处理
背景:小紫书上习题学习:1.条件运算符?:; 的运用可以简化,高效代码。?的优先级大于=,小余算术和关系运算符。与多重赋值语句一样采用右结合。(用到了dp的思想)代码:#include#includeint main(void){ int num[80]; char str[81]; int t; scanf("%d",&t); while(t--){ int原创 2015-01-04 21:13:31 · 671 阅读 · 0 评论 -
UVa 1586 字符串处理
背景:做了快40分钟,还是好多细节是调试过来的,看来距离150行以内代码一次通过的能力还很远。学习:1.变量定义的时候不仅要想到初始化,更要想到初始化的位置,这个变量的作用域如果开大了,和没初始化一样的效果。代码:#include#includeint main(void){ char str[85]; int t; scanf("%d",&t); while(t--)原创 2015-01-04 23:41:49 · 1674 阅读 · 0 评论 -
UVa1225 字符串处理
背景:无。#include#includeint main(void){ int t,str[10]; scanf("%d",&t); while(t--){ int n; memset(str,0,sizeof(str)); scanf("%d",&n); for(int i=1;i<=n;i++){ if(i/1000) {str[i/1000]原创 2015-01-05 12:26:24 · 1793 阅读 · 0 评论 -
UVa 455 最小重复字符串
背景:因为一个输出之间间隔一个空行,wa了几次........#include#includeint main(void){ int t; char str[85]; scanf("%d",&t); while(t--){ getchar();getchar(); scanf("%s",str); int i=1,n=strlen(str); for原创 2015-01-05 13:14:15 · 1084 阅读 · 0 评论 -
UVa 1588 字符串
背景:1——WA:很难想到还有如下情况(见图),认真读题后发现!!!思路:就是吧两个部件所有重合情况都考虑了,取其中满足的最小长度。学习:1.'1'+'2'='3'是错误的!!!!!!!!!#include#includeint make(char a[],char b[],int ha, int hb); int make(char a[],char b[],int ha原创 2015-01-21 17:08:01 · 1150 阅读 · 0 评论 -
UVa 489 侩子手游戏
背景:学习:原创 2015-01-22 11:40:50 · 1171 阅读 · 0 评论 -
UVa 1339 简单加密(encrypt)
背景:1Y,最简单的密码学!思路:把每个字符串中每个字母的频数统计 出来,把频数相同的两个数映射就可,如果最后所有字母都有对应的映射,那么就是YES,permutation cipher不需要管。学习:1.C语言stdlib.h里的qsort函数原型:void qsort(void * base,size_t num,size_t size,int (*comparator)(c原创 2015-01-22 10:50:11 · 678 阅读 · 0 评论 -
UVa 1584
背景:1Y思路:类似于选择排序的思想,用一个ans来记录最小值,搜索所有可能值中的最小值。学习:1.strcmp(a,b)的返回值是a相对于b的字典序,大则返回1,小则返回-1,等则返回0.2.一个线性的链要成环的话,就%n。#include#includeint main(void){ int t; char DNA[105],ans[105]; s原创 2015-01-21 10:20:12 · 1329 阅读 · 0 评论 -
UVa 1583打表
背景:1--TLE:超时,没有考虑到时间复杂度,开始对每一个数都从1开始到99999,这样就是O(t*key)这样20组大数就可以超时。2--WA:3--WA都是把数字误以为最多4位了,其实是五位!!!。思路:找出i(从1到100000)产生的数n,i是n的生成元,由于最多5位数字相加,所以n-i学习:1.对于所有情况最多10万级别的可以打表。#includeint str[9原创 2015-01-20 23:25:05 · 1428 阅读 · 0 评论 -
UVa 400 模拟vector
背景:多久没有一次ac过了,要提升一次ac的几率啊!这对比赛是很重要的。思路:这个题主要是更加熟悉了下vector,然后就是一些格式的问题,构造即可。主要感受还是一定要把思路想好再写题!#include #include #include #include #include #include #include #include #include #define LL long原创 2015-04-02 22:55:14 · 599 阅读 · 0 评论 -
UVa 1592模拟(map)
背景:第一因为找到结果之后没有及时的停止查找而wa了一发,改正后ac。思路:首先对读入的每一个string,设置一个独特的ID,这样就把string变为int,后来比较的时候就会简化很多,设置ID的时候用map来赋予每一种string对应一个独特的ID。然后构建一个key为pair的map,因为行比较多列比较少(列的数为10),就枚举列的所有组合,然后对每组组合来进行map判重。我的代码;原创 2015-04-05 09:26:44 · 984 阅读 · 0 评论 -
SCU2016-05 K题 (模拟水)
水。。/**********************jibancanyang************************** *Author* :jibancanyang *Created Time* : 三 7/13 10:21:19 2016**Problem**:**Analyse**:**Get**:**Code**:*******************原创 2016-09-10 16:45:57 · 376 阅读 · 0 评论 -
SCU2016-04 F题 (大模拟)
颇有难度的代码题。。/**********************jibancanyang************************** *Author* :jibancanyang *Created Time* : 二 7/12 14:49:04 2016**Problem**:**Analyse**:**Get**:**Code**:************原创 2016-09-10 16:40:52 · 430 阅读 · 0 评论 -
Codeforces Round #363 (Div. 2) B. One Bomb(模拟)
分析: 挂了终测,方法没写好。 用aia_i表示第ii行有多少个∗*,bib_i表示第ii列有多少个星。 然后再去枚举炸弹放得每一个点,看去掉这个一个点的行列之后是否没有星了。 心得: 想好了思路,应该再想好简洁的写法,即使花费长时间。#include <stdio.h>#include <iostream>int a[1111], b[1111], n, m, c;char d[1原创 2016-07-20 09:52:50 · 250 阅读 · 0 评论 -
SCU2016-05 R题数学模拟
Analyse: 这个题就是模拟除法的过程,标记被除数第二次出现的位置即可. Get: 写的时候思路迁移到正确的简洁思路用时过长,迁移到之后写的时间过长,不能边写边完善思路,在纸上写好才是对的./**********************jibancanyang************************** *Author* :jibancanyang *Create原创 2016-07-14 10:40:16 · 319 阅读 · 0 评论 -
Codeforces Round #364 (Div. 2) C. They Are Everywhere (尺取法)
要维护区间内字符数为定值,求最小的满足条件的区间典型的双指针。#include <cstdio>#include <iostream>#include <cstring>#include <set>#include <map>using namespace std;#define pr(x) cout << #x << ": " << x << " " #define pl(x) c原创 2016-07-23 14:19:57 · 265 阅读 · 0 评论 -
SCU2016-04 C题模拟
Analyse: 模拟,翻转就是遍历顺序不同而已.t/**********************jibancanyang************************** *Author* :jibancanyang *Created Time* : 一 7/11 09:31:26 2016**Problem**:**Get**:**Code**:*********原创 2016-07-11 09:42:19 · 284 阅读 · 0 评论 -
cf665a 简单模拟
/**********************jibancanyang************************** *Author :jibancanyang *Created Time : 三 4/20 22:59:56 2016 *File Name : cf665a.cpp *Problem: *Get:认真读题******************原创 2016-04-21 11:05:02 · 1445 阅读 · 0 评论 -
codeforces665b 模拟
/**********************jibancanyang************************** *Author :jibancanyang *Created Time : 三 4/20 23:23:24 2016 *File Name : cf665b.cpp *Problem: *Get:简单模拟******************原创 2016-04-21 11:03:45 · 468 阅读 · 0 评论 -
cf669c模拟
/**********************jibancanyang************************** *Author :jibancanyang *Created Time : 一 4/25 00:27:04 2016 *File Name : cf669c.cpp *Problem:模拟 *Get:想好思路,并符号化,再动手写。。。***原创 2016-04-26 00:20:18 · 1334 阅读 · 0 评论 -
SOJ 4445 2015四川省赛模拟题
背景:赛场上就是因为没开这道题,而没拿到银,回来A了,感觉代码能力还是很弱,一定要先想好再敲,而且注重代码的函数化,这样无论是观感,还是调试都要好很多,逻辑要清晰,看代码要仔细,提交之前通读代码。题意:起点在原点的frog,开始向右运动,且碰到障碍物就右转,问转多少次?思路:关键是图的大小范围是10910^9,无法存下,只有用类似链表的方法来存图。这里用了两个容器,一个以X为基准,一个一Y为基准原创 2015-07-20 19:31:33 · 1510 阅读 · 3 评论 -
hdu 1544 连续回文子串的个数 构造法
思路:子串的长度只能为奇数或偶数(长度为1的不算,直接特判)。对于长度为奇数的子串,以22到nn之间的数为该子串的中心,然后分别向两边扩展,只要碰到一个子串扩展不满足回文的,就退出。对于偶数长度的子串分别以1到n - 1之间的数为左,该数右边的数为右,组成两个数,然后再拿这两个数扩展。 代码:#include <queue>#include <set>#include <map>#incl原创 2015-04-30 10:33:09 · 1168 阅读 · 2 评论 -
UVa 340 模拟
背景:思路:就直接模拟即可。学习:1.输入流中的全部数据都要处理干净。*#includeint main(void){ int n,count=1; while(scanf("%d",&n)!=EOF&&n){ int list[1000],temp[1000]; printf("Game %d:\n",count++); for(int i=0;原创 2015-01-19 22:02:25 · 625 阅读 · 0 评论 -
UVa 540 queue的使用
背景:书上的思路很好,开始自己想的思路行不通,因为queue定义的操作太少,不可直接访问内部内容,也不可以插入。思路:用了一个主队列,和一个队列数组。主队列里储存的是队名,每一个队名对应一个队列数组中的团体。学习:1.用一个map来记录队员和队员的队名是十分好的方法,应为map内部是红黑树实现,查找效率是log(n)。代码:#include#include#include#inc原创 2015-02-07 16:46:57 · 613 阅读 · 0 评论 -
UVa 12096 map ,vector,set,string ,stack的混用
背景:这个题对stl不熟悉根本无法自己作,只有照着理解书上的代码。思路:用一个vector容器来储存集合,map中key为集合,value为该集合对应的vector容器的下标,并把下标称为ID,stack中储存的是ID每次对stack执行操作,实际是对stack中ID对应的集合执行操作用到了set_uinon和set_intersection。#include#include#incl原创 2015-02-07 10:00:51 · 971 阅读 · 0 评论 -
UVa 253
背景:一次编译通过加一次ac就是这么爽!!!!!!思路:枚举六个面朝上,每种情况旋转4次的所有情况,一共24种,全部枚举出来比较即可!这里比较巧妙的是把每一种情况都写作一个长度为6的字符串,并在第七位加一个'\0',这样就可以用strcmp来比较了。学习:1.#include#includeint main(void){ char l[7],r[7],temp[13原创 2015-02-03 11:39:54 · 752 阅读 · 0 评论 -
soj 4389模拟
背景:周赛A题,学习:1.开始没有注意到题目中对于帖子数大于1/2的描述,纯暴力计数,各种超!2.后来发现按顺序扫描每一个数看是否有它在数组中的数量大于1/2,是则找到。我的代码:#include#includeint str[10000000];int main(void){ int n; scanf("%d",&n); while(n--) { int m,cout原创 2014-12-23 19:24:47 · 617 阅读 · 0 评论 -
UVa 201
背景:1Y!!!调试一个小时。没有仔细看题,V 2 1,实际上表示的是第二列第一行,因为这个调试了好久。要逐渐养成耐心读代码的习惯!思路:把行和列的分别记录在两个数组你,让后从边长为1开始枚举出所有即可!学习:1.scanf读取字符的时候一定要考虑到,换行行符在键盘缓冲区的遗留问题!#include#includeint main(void){#ifdef LOCAL原创 2015-01-30 14:13:11 · 945 阅读 · 1 评论 -
UVa 1368
背景:每列找出最多重复次数即可。#include#includeint main(void){ int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d %d",&n,&m); char DNA[n][m+1]; for(int i=0;i<n;i++) scanf("%s",DNA[i]); int list[原创 2015-01-10 19:38:16 · 773 阅读 · 3 评论 -
UVa 12412
背景:1_wa:单词拼写错误。(一定要好生对比,样例)2——wa:当database中数据消失的时候,出现了除0的情况(一旦有除法就要考虑是否有除0的现象出现) .....继续wa..学习:1.加了一个比保留位数小的eps=1e-5来消除浮点误差。2.编译选项里定义了LOCAL.#include#include#includetypedef struct{ char原创 2015-01-29 23:05:53 · 1293 阅读 · 0 评论 -
UVa 1368
背景:每列找出最多重复次数即可。#include#includeint main(void){ int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d %d",&n,&m); char DNA[n][m+1]; for(int i=0;i<n;i++) scanf("%s",DNA[i]); int list[原创 2015-01-10 19:38:00 · 3362 阅读 · 1 评论 -
UVa 232 字符串处理、
背景:做了三个半小时,代码能力堪忧啊,各种调试,各种出错,要分析一下,这些错点尽量不能再错。学习:1.对于字符串数组,要把每一行都开大一位,该位用来存放'\0',否则将会出现未知输出。也就是说:字符串二维数组的每一行都可以看做一个字符数组,结尾都有一个'\0'.printf在用'%s'格式符输出字符串,总是从给定的首地址开始,遇到'\0'结束。2.写程序的时候要有动态的眼光来看待当前写原创 2015-01-09 16:35:48 · 2293 阅读 · 1 评论 -
soj 4393模拟
背景:周赛e题;#include#include#includeusing namespace std;int str[100000],cpy[100000];int main(void){ int t; scanf("%d",&t); while(t--) { int n,m; scanf("%d",&n);原创 2015-01-27 10:42:18 · 769 阅读 · 0 评论 -
UVa 512 模拟!
背景:1——wa:最后一组输出不要空行!。思路:我的思路,就是模拟整个表,把表实行操作之后的形态表示出来,把原表中的数据再在已经模拟的表中去查询。书上的思路是,先把一系列的操作保存在一个结构体数组中,每一个结构体数组元素对应一个操作,最后对于每一个坐标的系统执行这一套操作,就可以得出变化好的坐标!这种方法可能只要知道操作结构体的思想,写起来更容易.学习:1.写完之后查一遍代码,比去单步调试原创 2015-01-27 21:02:16 · 2141 阅读 · 0 评论 -
UVa 1589 da模拟!!
背景:1_WA:忘了把用来检测bug的中间结果输出注释!!2_WA:各种小错,外加输出处,下标错误!!!!!3—原创 2015-01-26 00:05:58 · 1078 阅读 · 2 评论 -
UVa 227 模拟
背景:做了两个多小时,各种出错,各种调试,看了是1993的final题。学习1.结构体数据类型的定义:typedef struct{ int x; int y; }place;//使用该类型定义变量。palce a,b;2.输入序列一旦被判断为无效的,不应该立即退出,还要处理剩下的该输入序列中的元素,避免被当做下一个输入序列。3.一旦有变量值可以超出数原创 2015-01-06 22:57:15 · 839 阅读 · 0 评论 -
soj 4390 电梯问题
背景:周赛题,当时未读。就算读了也只能想到暴力,不可ac。学习:1.在暴力搜索超时的情况下,必须找到优秀的算法,这个题就是用类似变化趋势的角度来审视最优解而不是算出每层楼对应的值,找最大值。思路:假设当前楼层以下有n1人,当前楼层有n2人,当前楼层以上有n3人。每向上走一层就有n1+n2人要多走一楼,来人要少走一楼,若从第0楼开始考虑,这时n1+n2是0,n3为总人数,然后依次上楼,n1+原创 2014-12-26 23:07:09 · 644 阅读 · 0 评论