10-24NOIP欢乐赛

——By 潘智力

题目名称

分火腿

无聊的会议

班服

时间限制

1s

1s

1s

内存限制

64MB

128MB

128MB

输入文件

hdogs.in

meeting.in

shirt.in

输出文件

hdogs.out

meeting.out

shirt.out

测试点个数

10

10

10

测评环境:windows系统

水题,众神轻虐

 

 

 

 

 

 

分火腿

(hdogs.pas/.c/.cpp)

时间限制:1s;内存限制 64MB

题目描述:

小月言要过四岁生日了,她的妈妈为她准备了n根火腿,她想将这些火腿均分给m位小朋友,所以她可能需要切火腿。为了省事,小月言想切最少的刀数,使这n根火腿分成均等的m份。请问最少要切几刀?

输入描述:

第一行一个整数T,表示有T组数据。

接下来T组数据,每组共一行,有两个数字n,m。

输出描述:

每组数据一行,输出最少要切的刀数。

样例输入:

2

2 6

6 2

样例输出:

4

0

数据范围:

100%的数据保证T<=1000;n,m<=2147483647。

/*
题目相当于一根长为n的火腿肠,切成m段,如果从整数部分切开则不需要代价,否则代价1
n根火腿切m份,每一份长n/m,我们发现对于 n/m * K 为整数的情况,就不用刀子切
k共有n/lcm(n/m,1)-1=gcd(n,m)-1个,所以最终要切m-gcd(n,m)次
*/
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,T;
int gcd(int x,int y){
if(y==)return x;
return gcd(y,x%y);
}
int main(){
freopen("hdogs.in","r",stdin);
freopen("hdogs.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
printf("%d\n",m-gcd(n,m));
}
}

100分 数学推理

无聊的会议

(meeting.pas/.c/.cpp)

时间限制:1s;内存限制 128MB

题目描述:

土豪学长作为一名光荣的学生会干部,每天要参加很多无聊的会议。他发现:他开会的会议桌一定是正n边形,n个干部坐在这个多边形顶点上。因为太无聊了,所以他想要数出所有的“完全”等腰三角形——这种等腰三角形的三个顶点一定全是给出n多边形的顶点,且三个顶点上坐的干部性别相同。

土豪学长是土豪,他用1000000000%10的佣金雇用你,让你帮他数。PS:如果两个“完全”等腰三角形三个顶点相同,计算时只算一个。

输入描述:

第一行一个数字T,表示有T组数据。

接下来有T组数据,每组数据共一行。这一行给出一个长度为n的字符串,表示正n边形n个顶点上干部的性别。1为男,0为女。

输出描述:

对于第i组数据:输出”Case i: ans”(不带引号),ans为“完全”等腰三角形的数量。

样例输入:

5

0001

01

10001

1101010

111010

样例输出:

Case 1: 1

Case 2: 0

Case 3: 1

Case 4: 3

Case 5: 2

数据范围:

40%的数据保证n<=20

100%的数据保证 n<=10^6

所有数据保证T<=10

/*
法一:可以假设男性为黑点,女性为白点。枚举一个等腰三角形的顶点,再枚举一个底边点。这个三角形就确定下来了。求同色三角形的个数。n2做法。
法二:所有等腰三角形的个数-所有异色等腰三角形的个数=所有同色三角形的个数。
枚举顶点,然后在枚举任一与他颜色不同的底边点(即为多边形上所有与它颜色不同的点的个数O(1)),求出异色边的数量。这样子有一种三角形(顶点与两底边点一个为同色,一个为异色)数了一次,有一种三角形(顶点与两底边点均为异色)数了两次。可以使其都计算两次。
计算顶点与一底边点一个为同色,一个为异色的三角行的个数:枚举两个底端点,保证其颜色不一样。n为奇数时,任意两个点都能形成底边。n为偶数时,奇偶性相同的点能形成底边。异色边都计算了两次,除以2,就是底边异色的个数。即为三角形的个数。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define ll long long
int T,n;
char a[]; ll calcu(){
ll ans=;
ans=(ll)n*((n-)/);
if(n%==)ans-=n/*;
return ans;
}
ll del(){
ll ans;
if(n%==){
int s1=,i,s0=;
for(i=;i<n;i++){
if(a[i]=='')s0++;
else s1++;
}
ans=(ll)s1*s0*;
if(n%==){
s1=n/;s0=n/*;
for(i=;i<n;i++){
if(a[i]!=a[(i+s1)%n])ans--;
if(a[i]!=a[(i+s0)%n])ans--;
}
}
return ans/;
}
else {
int i,s00=,s01=,s10=,s11=;
for(i=;i<n;i+=){
if(a[i]=='')s00++;
else s01++;
}
for(i=;i<n;i+=){
if(a[i]=='')s10++;
else s11++;
}
ans=(ll)s00*s11*;ans+=(ll)s01*s10*;
ans+=(ll)s00*s01*;ans+=(ll)s10*s11*;
int n1,n2;
n1=n/;
for(i=;i<n;i++)
if(a[i]!=a[(i+n1)%n])ans--;
if(n%==){
int s1=n/,s0=n/*;
for(i=;i<n;i++){
if(a[i]!=a[(i+s1)%n])ans--;
if(a[i]!=a[(i+s0)%n])ans--;
}
}
return ans/;
}
}
int main(){
freopen("meeting.in","r",stdin);
freopen("meeting.out","w",stdout);
scanf("%d",&T);
int Case=;
while(T--){
Case++;
scanf("%s",&a);
n=strlen(a);
printf("Case %d: %I64d\n",Case,calcu()-del());
}
return ;
}

100分

班服

(shirt.pas/.c/.cpp)

时间限制:1s;内存限制 128MB

题目描述:

要开运动会了,神犇学校的n个班级要选班服,班服共有100种样式,编号1~100。现在每个班都挑出了一些样式待选,每个班最多有100个待选的样式。要求每个班最终选定一种样式作为班服,且该班的样式不能与其他班级的相同,求所有可能方案的总数,由于方案总数可能很大,所以要求输出mod 1000000007后的答案。

输入描述:

共有T组数据。

对于每组数据,第一行为一个整数n,表示有n个班级。

2~n+1行,每行有最多100个数字,表示第i-1班待选班服的编号。

输出描述:

对于每组数据,输出方案总数 mod 1000000007后的答案。

样例输入:

2

3

5 100 1

2

5 100

2

3 5

8 100

样例输出:

4

4

数据范围:

对于30%的数据,1<=T<=3, 1<=n<=3,每班待选样式不超过10种。

对于50%的数据,1<=T<=5, 1<=n<=5,每班待选样式不超过50种。

对于100%的数据,1<=T<=10, 1<=n<=10,每班待选样式不超过100种。

/*
把班级状压一下
f[i][j]表示前i件衣服达到j状态的方案
那么显然f[i][j]+=f[i-1][j]
若班级k可以穿i这件衣服,则f[i][j]+=f[i-1][j-(1<<(k-1))]
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define mod 1000000007
using namespace std;
int T,n,bin[],a[][],f[][];
bool flag;
int qread(){
int i=;
char ch=getchar();
while(ch<''||ch>'')ch=getchar();
while(ch<=''&&ch>=''){i=i*+ch-'';ch=getchar();}
if(ch=='\n')flag=;
return i;
}
int main(){
freopen("shirt.in","r",stdin);
freopen("shirt.out","w",stdout);
scanf("%d",&T);
for(int i=;i<=;i++)bin[i]=<<i;
while(T--){
memset(a,,sizeof(a));
memset(f,,sizeof(f));
scanf("%d",&n);
for(int i=;i<=n;i++){
flag=;
while(){
int s=qread();
a[i][s]=;
if(flag==)break;
}
}
f[][]=;
int tot=(<<n)-;
for(int i=;i<=;i++){
for(int j=;j<=tot;j++){
f[i][j]=f[i-][j];
for(int k=;k<=n;k++)
if(a[k][i]&&(j&(<<k-)))
f[i][j]=(f[i][j]+f[i-][j^(<<k-)])%mod;
}
}
printf("%d\n",f[][tot]);
}
}

100分 状压dp

2014-10-24 NOIP欢乐赛的更多相关文章

  1. 10.17 NOIP模拟赛

    目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...

  2. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  3. 2014.8.3情人节欢乐赛【Benny的农场】

    Benny的农场 (farm.pas/.c/.cpp) 时间限制:1s.空间限制:128MB 题目描述: Benny有一片农田需要灌溉.农田的形状为矩形,并被分为许多小块.每一块中都有一些水管.共有1 ...

  4. 2016.10.30 NOIP模拟赛 day2 PM 整理

    满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...

  5. 2016.10.30 NOIP模拟赛 day2 AM 整理

    题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分  2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...

  6. 10.24 noip模拟试题

    尼玛pdf依旧不会粘23333 /* 每段合并到总的里面 假设总的有X个 这一段有Y个 一共有X+1个空 那么就有 C(X+1,1)+C(X+1,2)+C(X+1,3)+...+C(X+1,Y) 这样 ...

  7. 2017 10.25 NOIP模拟赛

    期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w    O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...

  8. 2018.10.16 NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...

  9. 2018.10.03 NOIP+ 模拟赛 解题报告

    得分: \(30+5+0=35\)(考得真不咋滴) \(T1\):奥义商店(点此看题面) 以为很简单,对着这题想了一个多小时,最后果断打了个暴力交了... ... 看完题解发现其实也不是很难. 对于\ ...

随机推荐

  1. (转)source insight 窗口嵌入

    昨天用了一下source insight ,都说很强大,也有感觉,但是这个强大的东西往往不是那么容易弄清楚的,或者一下子就好上手的,工具强大,功能复杂多样,一开始不知道怎么入手,以后慢慢来吧,学习是要 ...

  2. cetons 怎么强制卸载 PHP

    查看php版本命令: #php -v 这个命令是删除不干净的 #yum remove php 因为使用这个命令以后再用 #php -v 还是会看到有版本信息的..... 必须强制删除 #rpm -qa ...

  3. ZOJ - 3865 Superbot 【BFS】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3865 思路 一个迷宫题 但是每次的操作数和普通的迷宫题不一样 0 ...

  4. 5.2 《锋利的jQuery》jQuery对表格的操作(选项卡/换肤)

    表格隔行变色以及单选/复选 表格展开关闭 表格筛选 字体变大/缩小 选项卡 网页换肤 tip1: $("tr:odd")和$("tr:even")选择器索引是从 ...

  5. LightOJ - 1038 Race to 1 Again —— 期望

    题目链接:https://vjudge.net/problem/LightOJ-1038 1038 - Race to 1 Again    PDF (English) Statistics Foru ...

  6. Dubbo之生产者

    环境步骤: 安装Zookeepr启动 创建Maven项目搭建生产者和消费者 安装DubboAdmin平台,实现监控 Dubbo注册中心采用的是Zookeeper.为什么采用Zookeeper呢? Zo ...

  7. java入门了解05

    1.模板模式 (一)需求:解决默写事情有固定模式,但有时内部会发生变化,此时就需要应用模板模式编写此过程 从而解决事情的流程依然可以别使用,这就是模板模式的好处(类似我们的个人简历模板) (二)步骤: ...

  8. HTML5 拖放:在相册中对照片进行排序

    1. [代码]index.html     <div class="albums">    <div class="album" id=&qu ...

  9. leetcode 169. Majority Element 多数投票算法(Boyer-Moore Majority Vote algorithm)

    题目: Given an array of size n, find the majority element. The majority element is the element that ap ...

  10. FileHeader 详解文件头部注释-sublimeText

    FileHeader 前言: 直奔主题吧,sublimeText 的大部分插件都是非常好用,易用的,而且很容易找到资料.这次用 FileHeader 发现网上的资料很少,而且大部分说得都很模糊,或者直 ...