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

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

谜题

时间限制: 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. 为table元素添加操作日志

    1.为所有的元素添加函数onchange() <input id="status" value="${status}" onchange="ch ...

  2. 使用js jquery分别获取地址栏参数值

    使用JS获取地址栏参数 方法一: function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +& ...

  3. servlet中doPost()和doGet()

    转载至 http://blog.163.com/grandry_it_bird/blog/static/1751633362010102615553610/ 一般来说我们是用不到doGet方法的,do ...

  4. 大型网站的 HTTPS 实践(四)——协议层以外的实践

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt390 1 前言 网上介绍 https 的文章并不多,更鲜有分享在大型互联网站 ...

  5. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解

    在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 led.bin ...

  6. 五,ESP8266 TCP服务器多连接

    一些时间去准备朋友的元器件了... 接着写,,争取今天写完所有的文章,,因为答应了朋友下周5之前要做好朋友的东西 对于TCP大家在玩AT指令的时候有没有发现客户端最多连接5个,,,再连接就不行了?? ...

  7. !终端伪装测试之fuck校园网

    众所周知,中国校园网络是最特么弱的网络构架之一,因此也成为众多黑客和学生的攻击对象-肉鸡.为什么学生也是主要报复者呢,我想主要是源于对学校的愤恨吧,不多说了,我这次将介绍一下我的一个个人测试--对学校 ...

  8. java环境安装说明

    Java从安装到运行第一个程序 对于初学者来说,能否成功运行第一个Java程序,关系到这杯咖啡的口感. 作为才疏学浅的常年初学者,语言描述不清,还是上图吧! 一.安装JDK 打开网址http://ww ...

  9. CCIE-MPLS VPN-实验手册(上卷)

    看完了看完了看完了,豪爽豪爽豪爽,一个月了,写得挺棒.总共14个mpls vpn的实验,为留下学习的痕迹,原封不动献出. CCIE实验手册 (路由部分-MPLSVPN基础篇) [CCIE]  JUST ...

  10. JavaSE(十)集合之Set

    今天这一篇把之前没有搞懂的TreeSet中的比较搞得非常的清楚,也懂得了它的底层实现.希望博友提意见! 一.Set接口 1.1.Set集合概述 Set集合:它类似于一个罐子,程序可以依次把多个对象 “ ...