uva-10050-模拟水题

一个社会研究组织决定通过一组简单的参数来模拟国家政党的行为.
第一个参数一个正整数h(叫做罢工参数),用于指示在对应的政党在
俩个连续休假之间的平均天数.虽然这个参数太简单了,它不是最完美的参数.
但是它还是可以用来预测因为罢工带来的损失.以后是计算的例子.
考虑三个政党,假设h1=3,h2=4,h3=8,hi代表i政党的罢工参数.下一步,我们将模拟这三个
政党在N=14天内的行为.模拟的天数总数从周天开始,假设在周末假期(周五和周六)没有罢工.

以上的模拟表明在14天内有五天罢工.在第六天没有罢工,因为它是周五,因此我们在俩周内
有5天是没有工作的.

在这个问题内,给你几个政党的罢工参数和N的值,你的任务是计算出在N天内有多少天因为
罢工没有工作.

输入
输入的第一行是单个int类型的T表示有多少组测试用例.
每一个测试用例的第一行包含一个int N(7<=N<=3650)表示这次模拟的天数.
下一行包含另外一个int P(1<=p<=100)代表政党的数目,
P后面的第i行包含一个正整数hi(永远不会是7的倍数)表示政党i的罢工参数.

输出

AC:0ms

#include<stdio.h>
#include<iostream>
#include<queue>
#include<memory.h>
using namespace std;

const int N = 3650+10;
const int P = 100+10;

int main()
{
	freopen("d:\\1.txt", "r", stdin);
	int t;
	cin >> t;
	while (t--)
	{
		int n, p;
		cin >> n;
		cin >> p;
		int a[P][N];
		memset(a, 0, sizeof(a));
		int pp[P];
		memset(pp, 0, sizeof(pp));
		for(int i = 1; i <= p; i++)
			cin >> pp[i];
		for(int i = 1; i <= n; i++)
		{
			if(i % 7 == 6||i%7==0)
				continue;
			for(int j = 1; j <= p; j++)
				if(i%pp[j]==0)
				{
					a[j][i] = 1;
				}
		}

		int total = 0;
		for(int i = 1; i <= n; i++)
		{
			if(i % 7 == 6||i%7==0)
				continue;
			for(int j = 1; j <= p; j++)
				if(a[j][i] == 1)
				{
					total++;
					break;
				}
		}
		cout<<total<<endl;
	}
	return 0;
}

  

时间: 2024-10-06 06:01:05

uva-10050-模拟水题的相关文章

POJ 3030. Nasty Hacks 模拟水题

Nasty Hacks Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13136   Accepted: 9077 Description You are the CEO of Nasty Hacks Inc., a company that creates small pieces of malicious software which teenagers may use to fool their friends.

HDOJ 2317. Nasty Hacks 模拟水题

Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3049    Accepted Submission(s): 2364 Problem Description You are the CEO of Nasty Hacks Inc., a company that creates small pieces of

UVa 489 HangmanJudge --- 水题

UVa 489 题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错, 你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜过的单词也算出错, 给定计算机的单词以及猜测序列,判断玩家赢了(You win).输了(You lose).放弃了(You chickened out) /* UVa 489 HangmanJudge --- 水题 */ #include <cstdio> #include <cstring

UVa 1585 Score --- 水题

题目大意:给出一个由O和X组成的串(长度为1-80),统计得分. 每个O的分数为目前连续出现的O的个数,例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+1+2+3 解题思路:用一个变量term记录当前O的分数,若出现O,则term+1,若出现X,则term=0: 再用一个sum记录总和,没次加上term即可 /* UVa 1585 Score --- 水题 */ #include <cstdio> #include <cstring> const int maxn =

poj 2497 Strategies 模拟水题

水题,直接贴代码. //poj 2497 //sep9 #include <iostream> #include <algorithm> using namespace std; int a[32]; int main() { int cases,c=0; scanf("%d",&cases); while(cases--){ int tot,n; scanf("%d%d",&tot,&n); int x2,y2,t;

poj 3444 Wavelet Compression 模拟水题

水题,直接贴代码. //poj 3444 //sep9 #include <iostream> using namespace std; const int maxN=260; int a[maxN],b[maxN]; int main() { int i,n,m; while(scanf("%d",&n)==1&&n){ for(i=1;i<=n;++i) scanf("%d",&a[i]); m=1; while

poj 3103 Cutting a Block 模拟水题

水题 #include <iostream> using namespace std; int main() { int x,y,z,n; scanf("%d%d%d%d",&x,&y,&z,&n); for(int i=0;i<n;++i) printf("0 0 %.8lf %d %d %.8lf\n",(z*1.0/n)*i,x,y,(z*1.0/n)*(i+1)); return 0; } 版权声明:本文为博

UVA - 442 Matrix Chain Multiplication(栈模拟水题+专治自闭)

题目: 给出一串表示矩阵相乘的字符串,问这字符串中的矩阵相乘中所有元素相乘的次数. 思路: 遍历字符串遇到字母将其表示的矩阵压入栈中,遇到‘)’就将栈中的两个矩阵弹出来,然后计算这两个矩阵的元素相乘的次数,累加就可以了. PS:注意弹出的矩阵表示的先后顺序. 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define MAX 1000000000 #define mod 1000000007 #define FRE() freopen

模拟水题,查看二维数组是否有一列都为1(POJ2864)

题目链接:http://poj.org/problem?id=2864 题意:参照题目 哈哈哈,这个题discuss有翻译哦.水到我不想交了. #include <cstdio> #include <cstdlib> #include <cstring> int arr[510][110]; int main(void) { int r, c; int i, j; int flag; while(scanf("%d%d", &c, &

UVA 11636-Hello World!(水题,猜结论)

UVA11636-Hello World! Time limit: 1.000 seconds When you ?rst made the computer to print the sentence “Hello World!”, you felt so happy, not knowing how complex and interesting the world of programming and algorithm will turn out to be. Then you did