三道比较简单的题,还以为是八校考试的题目,但是并不是,无语了,第三题其实看了挺久的,一看到图,就想到了二分图,网络流之类的算法,但是尽力往这个方向想了好久都没什么思路,

最后从简单入手,然而没什么结果,第一题是真的水,一推就知道了。

谜题

时间限制: 1 Sec  内存限制: 128 MB
提交: 90  解决: 47
[提交][状态][讨论版]

题目描述

输入

一行一个数字N(N<=99)

输出

如果能,输出“YES”;否则输出“XLSB”;

样例输入

3

样例输出

YES

提示

【数据规模】
对于10%的数据,N<=1;
对于20%的数据,N<=3;
对于50%的数据,N<=4;
对于100%的数据1<=N<=99;
 #include<cstdio>
 #include<algorithm>
 #include<cmath>
 #include<iostream>
 #include<iostream>
 using namespace std;

 int n;

 int main()
 {
     scanf("%d",&n);
     ) printf("YES\n");
     else printf("XLSB\n");
 }

题意什么的不要了

选修课

时间限制: 1 Sec  内存限制: 128 MB
提交: 172  解决: 61
[提交][状态][讨论版]

题目描述

温州中学开放了许多选修课,每节选修课都属于一种种类。精力旺盛的黄小龙同学想要尽可能多的参加选修课,但是他只能选择M种种类的课程。当然,对于他所选的种类,他会去上所有该种类的课。现在他想知道他最多能上几节选修课,以及上最多选修课的方案数。
两种方案被认为不同当且仅当一种方案中存在另一种方案所没有的选修课。

输入

第一行一个只由小写字母组成,长度为N的字符串。表示有N节选修课,以及每节选修课的种类。
第二行一个正整数M。

输出

输出一行,两个用空格隔开的正整数,分别表示最多选修课数量和方案数。

样例输入

abcde
1
ababac
2

样例输出

1 5
5 1

提示

【数据规模】
对于30%的数据,M==1;
对于另外30%的数据,每种种类的选修课最多只有一节;
对于100%的数据1<=M<=26、1<=N<=100000;
 
暴力求个组合数就可以了,源代码快拍打错了,然后求组合数的时候有个优化就是C(20,2)=C(20,18)可以通过这个少乘,然后LL就可以过了。
 #include<cstring>
 #include<algorithm>
 #include<iostream>
 #include<cmath>
 #include<cstdio>
 using namespace std;

 int n;
 ]={};
 ];

 bool cmp(int x,int y){return x>y;}
 long long C(int m,int n)
 {
     ;
     ;i<=m;i++)
         res=(long long)(res*i);
     ;i<=n;i++)
         res=(long long)(res/i);
     return res;
 }
 int main()
 {
     scanf("%s%d",s,&n);
     int len=strlen(s);
     ;i<len;i++)
         a[s[i]-]++;
     sort(a+,a++,cmp);
     ;
     ;i<=n;i++)
         res+=a[i];
     printf("%lld ",res);
     int l=n,r=n;
     &&a[l]==a[n]) l--;
     l++;
     &&a[r]==a[n]) r++;
     r--;
     long long ans;
     ans=C(r-l+,min(n-l+,r-n));
     printf("%lld\n",ans);
 }

满分代码

质数

时间限制: 1 Sec  内存限制: 128 MB
提交: 106  解决: 20
[提交][状态][讨论版]

题目描述

 

宿管有一套神奇的控制系统来控制寝室的灯的开关:

共有N盏灯,标号为1到N,有M个标有不同质数的开关,开关可以控制所有标号为其标号倍数的灯,按一次开关,所有其控制的灭着的灯都点亮,所有其控制的亮着的灯将熄灭。现在,宿管可以无限的按所有开关,所有灯初始状态为熄灭,请求出最多能点亮几盏灯。

输入

输入有多组数据,第一行一个正整数T表示数据组数。
每组数据第一行两个整数N,M。
第二行M个不同的质数表示开关上的标号,保证所有标号<=N。

输出

对于每组数据输出一行一个整数表示最多亮灯数。

样例输入

4
10 2
2 5
21 4
2 3 5 7
100 1
5
100 3
3 19 7

样例输出

5
11
20
42

提示

【数据范围】
对于50%的数据,N<=15;
对于100%的数据,T<=10,N<=1000。

这道题就是求√n以内的质数,这样比√n大的质数两两之间已经超过了n因此不会相互影响,可以发信啊每个开关只开一次是有意义的,多开没意义。

 #include<cstdio>
 #include<algorithm>
 #include<cmath>
 #include<iostream>
 #include<cstring>
 #include<queue>
 using namespace std;

 ,NN=;

 int n,m,ans,k;
 int boo[NN],prime[NN];

 bool cmp(int x,int y){return x<y;}
 void dfs(int ci)
 {
     if (ci==k)
     {
         ,num;
         queue<int>q;
         while(!q.empty()) q.pop();
         ;i<=m;i++)
         {
             num=;
             for (int j=prime[i];j<=n;j+=prime[i])
                 ) num++;
                 else num--;
             )
             {
                 q.push(i);
                 for (int j=prime[i];j<=n;j+=prime[i])
                     boo[j]^=;
             }
         }
         ;i<=n;i++)
             if (boo[i]) x++;
         ans=max(ans,x);
         while (!q.empty())
         {
             int i=q.front();
             q.pop();
             for (int j=prime[i];j<=n;j+=prime[i])
                 boo[j]^=;
         }
     }
     else
     {
         ci++;
         dfs(ci);
         for (int i=prime[ci];i<=n;i+=prime[ci])
             boo[i]^=;
         dfs(ci);
         for (int i=prime[ci];i<=n;i+=prime[ci])
             boo[i]^=;
     }
 }
 void solve()
 {
     ans=-INF;
     memset(boo,,sizeof(boo));
     dfs();
     printf("%d\n",ans);
 }
 int main()
 {
     int Cas;
     scanf("%d",&Cas);
     while (Cas--)
     {
         scanf("%d%d",&n,&m);
         ;i<=m;i++)
             scanf("%d",&prime[i]);
         sort(prime+,prime+m+,cmp);
         k=m;
         while (prime[k]>(int)sqrt(n)) k--;
         solve();
     }
 }

NOIP2017SummerTraining0726的更多相关文章

随机推荐

  1. RPC框架实现思路浅析

    第一部分,设计分析 远程调用要解决的主要问题: 1,序列化 : 如何将对象转化为二进制数据进行传输,如何将二进制数据转化对象 2,数据的传输(协议,第三方框架) 3,服务的注册/发现,单点故障,分布式 ...

  2. 帆软的报表系统与泛微OA结合起来,这两个软件麦枫提供了经典的服务。

    一.集成配景泛微OA对企业的代价 泛微协同办公计划能向你供给一个协同的.集成的办公情况,使所有的办公职员都在统一且个性化的信息流派中一路事情, 解脱光阴和地区的限定,实现协同事情与知识治理. Eoco ...

  3. 高阶自定义View --- 粒子变幻、隧道散列、组合文字

    高阶自定义View --- 粒子变幻.隧道散列.组合文字 作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:h ...

  4. springboot 入门一 hello world!

    微服务框架springboot,目的是用来简化新Spring应用的初始搭建以及开发过程.简化的代价,就是约定俗成很多规则,比如默认读取的配置文件名是application.properties 必需在 ...

  5. HTML解析原理概括(转载)

    HTML解析原理 标准的web前端工程师需要知道 ◎浏览器(或者相应播放器)的渲染/重绘原理  这我得加把劲了.我还真的说的不是很清楚,我就G下,结果不是很多,找到了有一个,就记下来了... 以下部分 ...

  6. 201521123113《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 1.2 可选:使用常规方法总结其他上课内容. 使用NetB ...

  7. 201521123097《Java程序设计》第三周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...

  8. 201521123007《Java程序设计》第2周学习总结

    1.本周学习总结 类名第一个字母大写,类名下的方法如main第一个字母要小写: Java有三种基本数据类型:整型(byte,short,int,long,char),浮点型(float,double) ...

  9. 201521123117 《Java程序设计》第2周学习总结

    本周学习总结: 1.String常量,创建之后不能再进行修改 2.类管理机制是包. 3.Java数组的使用. 书面作业: Q1:使用Eclipse关联jdk源代码,并查看String对象的源代码(截图 ...

  10. 201521123013 《Java程序设计》第1周学习总结

    1. 本章学习总结 1.Java是面向对象的编程语言,它在通过jvm和jre将其转成本地机器代码,达到一次撰写,到处运行的效益,实现跨平台运行,代码开源,使用范围广. 2.了解jdk.jre.jvm的 ...