ZOJ3944 People Counting

ZOJ3939 The Lucky Week

1.PeopleConting

题意:照片上有很多个人,用矩阵里的字符表示。一个人如下:

.O.
/|\
(.)
占3*3格子,句号“.”为背景。没有两个人完全重合。有的人被挡住了一部分。问照片上有几个人。

题解:

先弄个常量把3*3人形存起来,然后6个部位依次找,比如现在找头,找到一个头,就把这个人删掉(找这个人的各个部位,如果在该部位位置的不是这个人的身体,就不删),删成句号,疯狂找就行了。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring> const int MAXN=;
const char man[][] = { {'.','O','.'},
{'/','|','\\'},
{'(','.',')'}};
const int X[] = {,,,,,};
const int Y[] = {,,,,,};
char a[MAXN][MAXN]; int n,m; void delMan(int x,int y,int k){
int mx,my;
mx = x - X[k];
my = y - Y[k];
int i;
for(i=; i<; i++){
if(a[mx+X[i]][my+Y[i]]==man[X[i]][Y[i]]){
a[mx+X[i]][my+Y[i]] = '.';
}
}
} int farm(){
int i,j,k;
int sum=;
for(k=; k<; k++){
char now = man[X[k]][Y[k]];
for(i=; i<n; i++){
for(j=; j<m; j++){
if(a[i][j]==now){
sum++;
delMan(i,j,k);
}
}
}
}
return sum;
} int main() {
int T,i,j;
scanf("%d",&T);
while(T--) {
scanf("%d%d",&n,&m);
for(i=; i<n; i++)
for(j=; j<m; j++) {
scanf(" %c",&a[i][j]);
}
printf("%d\n",farm());
}
}

2.The Lucky Week

题意:一个月的1号或者11号或者21号是星期一的话,这个星期就是Lucky Week。求从起始日期开始的第n个LuckyWeek是几号开始的。(起始日期当作第一个LuckyWeek)。

题解:日期太大,不能暴力,要找规律。打表观察,发现400年是一个周期,也就是如果今年4月11号是LuckyWeek,400年后,4月11号又是LuckyWeek。

这样如果跨越了若干的400年,就只用算一次400年,其他的直接算出来。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring> const int md[] = {,,,,,,,,,,,}; int Y,M,D,n; inline bool isRun(const int &year) {
return (year%== && year%!=) || (year%==);
} int getDays(int year,int month) {
if(month!=)return md[month-];
if(isRun(year))return ;
else return ;
} void beNextMonth(int &y,int &m,int &d,int &we) {
int days = getDays(y,m);
int cha = days + - d;
m++;
if(m>) {
y++;
m=;
}
d=;
we = (we+cha)%;
} int daBiao() {
int y=, m=, d=;
int we=;
int edy=,edm=;
int sum=;
while(!(y==edy && m==edm)) {
for(int i=; i<=; i+=)
if((we+i)%==) {
if(y>=)sum++;
// if(y==2016 || y==2416)printf("%d-%d-%d\n",y,m,d+i);
}
beNextMonth(y,m,d,we);
}
printf("%d!/n",sum);
} void farm(int &yy,int &mm,int &dd) {
int edy=Y+;
int edm=M;
int sum=;
int y=Y,m=M,d=D,we=;
while(true) {
for(int i=; i<=; i+=)
if((we+i)%==) {
sum++;
if(sum==n) {
yy=y;
mm=m;
dd=d+i;
return;
}
}
beNextMonth(y,m,d,we);
if(y==edy && m==edm)break;
}
n-=sum;
if(n>sum) {
int t = n/sum;
n-=t*sum;
y+=t*;
}
sum=;
while(true) {
for(int i=; i<=; i+=)
if((we+i)%==) {
sum++;
if(sum==n) {
yy=y;
mm=m;
dd=d+i;
return;
}
}
beNextMonth(y,m,d,we);
if(y==edy && m==edm)break;
}
} int main() {
int T,i,j;
// daBiao();
// return 0;
scanf("%d",&T);
while(T--) {
scanf("%d%d%d%d",&Y,&M,&D,&n);
int y,m,d;
farm(y,m,d);
printf("%d %d %d\n",y,m,d);
}
}

ZOJ3944 People Counting ZOJ3939 The Lucky Week (模拟)的更多相关文章

  1. poj-3899-The Lucky Numbers 模拟+数学

    题目链接: http://poj.org/problem?id=3899 题目意思: 求给定区间内,只含4.7的数的个数以及通过反转后在该区间内的个数和. 解题思路: 模拟+数学. 代码解释的很详细, ...

  2. ZOJ 3939The Lucky Week<模拟/暴力>

    题意:我们认为日期的天数为1,11,21,并且是周一的为Lucky Week;现在给出第一个lucky week的日期,求第N个的lucky week: //1:四百年一轮回,从闰年和平年的判定可以推 ...

  3. 2018.08.27 lucky(模拟)

    描述 Ly 喜欢幸运数字,众所周知,幸运数字就是数字位上只有 4 和 7 的数字. 但是本题的幸运序列和幸运数字完全没关系,就是一个非常非常普通的序列. 哈哈,是 不是感觉被耍了,没错,你就是被耍了. ...

  4. Lucky and Good Months by Gregorian Calendar - POJ3393模拟

    Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS Memory Limit: 65536K Description Have ...

  5. HDU 5676 ztr loves lucky numbers (模拟)

    ztr loves lucky numbers 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/I Description ztr ...

  6. POJ 3393 Lucky and Good Months by Gregorian Calendar 模拟题

    题目:http://poj.org/problem?id=3393 不多说了,简单模拟题,因为粗心写错了两个字母,导致错了N遍,模拟还是一贯的恶心,代码实在不想优化了,写的难看了点.. #includ ...

  7. poj 3393 Lucky and Good Months by Gregorian Calendar(模拟)

    题目:http://poj.org/problem?id=3393一道题目挺长的模拟题,参考了网上大神的题解. #include <iostream> #include <cstdi ...

  8. Lucky and Good Months by Gregorian Calendar(模拟)

    http://poj.org/problem?id=3393 好大的一道模拟题,直接当阅读理解看了.下面是大神写的题意,解释的好详细. 定义: Goog month : 该月第一个工作日为星期一的月份 ...

  9. jzoj6009. 【THUWC2019模拟2019.1.18】Counting (dp)

    Description 羽月最近发现,她发动能力的过程是这样的: 构建一个 V 个点的有向图 G,初始为没有任何边,接下来羽月在脑中构建出一个长度为 E 的边的序列,序列中元素两两不同,然后羽月将这些 ...

随机推荐

  1. TCP三次握手/四次挥手详解

    一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...

  2. Android Studio NDK 开发 问题记录

    Android NDK 开发 问题解决 编译:找不到gles3库 使用旧的编译方式,写Android.mk 进行编译.报错如下 gles3/gl3.h no such file or director ...

  3. 升级Ubuntu 16.04 LTS后 DSL拨号上网(ppp)连接自动断开解决办法

    原本在Ubuntu 15.10用拨号上网没有问题,但升级了16.04 LTS后发现原来的DSL连接不上了.主要表现为: 1.在NetworkManager里面选择DSL Connection能够尝试拨 ...

  4. BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 [treap hash]

    1862: [Zjoi2006]GameZ游戏排名系统 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1318  Solved: 498[Submit][ ...

  5. MFC画线功能总结

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6216464.html MFC画线功能要点有二:其一,鼠标按下时记录初始位置为线的起始 ...

  6. Error invoking SqlProvider method (com.github.abel533.mapper.MapperProvider.dynamicSQL). Cause: java.lang.InstantiationException: com.github.abel533.mapper.MapperProvider

    org.apache.ibatis.exceptions.PersistenceException: ### Error querying database.  Cause: org.apache.i ...

  7. 启用SQLite的Data Provider 运行WECOMPANYSITE时遇到ERROR CREATING CONTEXT 'SPRING.ROOT': ERROR THROWN BY A DEPENDENCY OF OBJECT 'SYSTEM.DATA.SQLITE'

    从网上下载的源码WeCompanySite,运行时报错 Error creating context 'spring.root': Error thrown by a dependency of ob ...

  8. JSP九大内置对象及四个作用域

    九大对象: 内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 1-out: javax.servlet.jsp.JspWriter类型,代表输出流的对象.作用 ...

  9. [LeetCode] Customers Who Never Order 从未下单订购的顾客

    Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL qu ...

  10. C#网络编程——IPHostEntry

    using System; using System.Net; namespace study { class IPHostEntrySample { public static void func( ...