题目链接   A. Currency System in Geraldion

有1时,所有大于等于1的数都可由1组成。没有1时,最小不幸的数就是1.

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
void solve(){
int n,x;
scanf("%d",&n);
int flag = ;
for(int i = ; i<=n; i++){
scanf("%d",&x);
if(x == ) flag = ;
}
if(flag) printf("-1\n");
else printf("1\n");
}
int main()
{
solve();
return ;
}

题目链接:B .Gerald is into Art

神之队友,八个if条件秒A,orz...

最后给的两个矩形每个长和宽翻过来倒过去,有四种情况。再和给的第一个矩形匹配总共有八种情况。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
void solve(){
int a1,b1,a2,b2,a3,b3;
cin>>a1>>b1>>a2>>b2>>a3>>b3;
int flag = ;
if(a2+a3<=a1 && max(b2,b3)<=b1) flag = ;
if(a2+a3<=b1 && max(b2,b3)<=a1) flag = ;
if(a2+b3<=a1 && max(b2,a3)<=b1) flag = ;
if(a2+b3<=b1 && max(b2,a3)<=a1) flag = ;
if(b2+a3<=a1 && max(a2,b3)<=b1) flag = ;
if(b2+a3<=b1 && max(a2,b3)<=a1) flag = ;
if(b2+b3<=a1 && max(a2,a3)<=b1) flag = ;
if(b2+b3<=b1 && max(a2,a3)<=a1) flag = ;
if(flag) printf("YES\n");
else printf("NO\n");
}
int main()
{
solve();
return ;
}

题目链接: C.Making a String

题意:给定每一个字母出现的个数ai,组成一个最长的字母串.

此字母串满足的条件:

1.其中的每个字母出现的总次数不超过ai.

2.每个字母出现的次数必须是不同的。

题解:这个题直接贪心。 从最大值开始,拿第一组样例,2 5 5来说

排序后2 5 5,从最后5开始,找局部最优解。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[];
void solve(){
int n;
scanf("%d",&n);
for(int i = ; i<n; i++) scanf("%d",&a[i]);
sort(a,a+n);
int maxn = 1e9+;
long long sum = ;
for(int i = n-; i>=; i--){
if(maxn == ) break;
if(maxn>=a[i]){
sum += a[i];
maxn = a[i] - ;
}
else{
sum += maxn;
maxn--;
}
}
printf("%I64d\n",sum);
}
int main()
{
solve();
return ;
}

题目链接: D.Bear and Elections

记得寒假做过这道水题,我发现我一见到做过的题就懵了。。。

就把第一个人票数一直和后面最大的比较,如果此人最大的小于后面最大的,他就再得一票,后面最大的那个就减一票,ans+1,排序,直到后面没有比它还大的。数据较小,不会超时,至于司老大说的二分法我还没有领会。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[];
void solve(){
int n,ans = ;
scanf("%d",&n);
for(int i = ; i<n; i++) scanf("%d",&a[i]);
while(){
sort(a+,a+n);
if(a[n-]<a[]) break;
a[n-]--;
a[]++;
ans++;
}
printf("%d\n",ans);
}
int main()
{
solve();
return ;
}

题目链接:E.Finding Team Member

我想说这个题寒假也做过……

题意:对于每个人,他都想找到能和他组成最大力量的人匹配。

题解:所以从大到小排序后,我从最大值入手,找到后取出标记,再继续找下一个未被标记且最大的值,贪心思想。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = ;
int cnt[maxn][maxn];
int flag[maxn],ans[maxn];
struct node{
int x,y,v;
}arr[maxn*maxn];
bool cmp(node A,node B){
return A.v>B.v;
}
void solve(){
int n;
scanf("%d",&n);
int k = ;
for(int i = ; i<=n*; i++){
for(int j = ; j<i; j++){
scanf("%d",&cnt[i][j]);
arr[k].x = i;
arr[k].y = j;
arr[k].v = cnt[i][j];
k++;
}
}
sort(arr,arr+k,cmp);
for(int i = ; i<k; i++){
if(!flag[arr[i].x]&&!flag[arr[i].y]){
ans[arr[i].x] = arr[i].y;
ans[arr[i].y] = arr[i].x;
flag[arr[i].x] = ;
flag[arr[i].y] = ;
}
}
for(int i = ; i<*n; i++){
printf("%d ",ans[i]);
}
printf("%d\n",ans[*n]);
}
int main()
{
solve();
return ;
}

题目链接: F.Kefa and Park

老柴一眼看出来这是道dfs题,可惜没时间做了。。。

题解:首先记录每个点的度数方便找到叶子节点。通过记录路上连续的猫的个数,判断是否走该点,然后继续遍历。

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long ll;
const int maxn = 1e5+;
vector<int> path[maxn];
int cat[maxn],leaf[maxn];
int vis[maxn];
int n,m,num = ;
void dfs(int u,int numcat){
if(vis[u]) return;
else vis[u] = ;
if(cat[u]) numcat++;
else numcat = ;
if(numcat>m) return;//判断猫的数量是否超过m
if(leaf[u] == &&u != ) num++;//记录方案数
for(int i = ; i<path[u].size(); i++){
dfs(path[u][i],numcat);
}
}
void solve(){
scanf("%d%d",&n,&m);
for(int i = ; i<=n; i++) scanf("%d",&cat[i]);
int x,y;
for(int i = ; i<=n-; i++){
scanf("%d%d",&x,&y);
path[x].push_back(y);
path[y].push_back(x);
leaf[x]++;//寻找叶子节点
leaf[y]++;
}
dfs(,);
printf("%d\n",num);
}
int main()
{
solve();
return ;
}

题目链接: H.Cards

找规律题目,这么多if else写的我醉醉的。。。

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
void solve(){
int n,i = ,j = ,k = ;
scanf("%d",&n);
getchar();
char c;
for(int p = ; p<n; p++){
scanf("%c",&c);
if(c == 'B') i++;
else if(c == 'G') j++;
else if(c == 'R') k++;
}
if(i >= && j == && k == ) puts("B");
else if(i == && j >= && k == ) puts("G");
else if(i == && j == && k >= ) puts("R");
else if(i == && j == && k == ) puts("R");
else if(i == && j == && k == ) puts("G");
else if(i == && j == && k == ) puts("B");
else if(i > && j == && k == ) puts("GR");
else if(i > && j == && k == ) puts("GR");
else if(i == && j > && k == ) puts("BR");
else if(i == && j == && k > ) puts("BG");
else if(i == && j > && k == ) puts("BR");
else if(i == && j == && k > ) puts("BG");
else puts("BGR");
}
int main()
{
solve();
return ;
}

题目链接:J.Duff in Love

我还想说这个题寒假也做过。。。

唯一分解定理。即 : n = p1^e1* p2^e2 * p3^e3* … * pr^er;其中p为质数。

注意数据范围,所有素数乘起来便没有平方。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
ll p[];
void solve(){
ll n;
scanf("%I64d",&n);
int ans = ;
for(ll i = ; i*i<=n; i++){
if(n%i == ){
p[ans++] = i;
while(n%i == ){
n /= i;
}
}
}
if(n>) p[ans++] = n;
ll sum = ;
for(int i = ; i<ans; i++){
sum = sum*p[i];
}
printf("%I64d\n",sum);
}
int main()
{
solve();
return ;
}

I 和 G两个题还没看,未完待续。。。

chd校内选拔赛题目+题解的更多相关文章

  1. 20191029校内ACM部分题解

    20191029校内ACM部分题解 https://codeforces.com/group/32W4q7bPme/contest/257710 B数学 给定一个在\([0,1]\)等概率随机区间的随 ...

  2. ZROI 部分题目题解

    ZROI 部分题目题解 335 首先发现一个性质: 对于最短的边而言,所有点的路径如果经过了这条边,那么路径的权值就是这条边的边权(废话) 那么我们把最短的边拎出来,可以发现,博物馆确定时,每个点按照 ...

  3. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

  4. 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)

    一.标题:正则表示     正则表达式表示了串的某种规则或规律.恰当地使用正则表达式,可以使得代码简洁.事半功倍.java的很多API都支持正则表达式作为参数.其中的String.split就是这样. ...

  5. Tarjan & LCA 套题题目题解

    刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <se ...

  6. LuoguB2001 入门测试题目 题解

    Update \(\texttt{2021.7.3}\) 经测试,本题 \(a,b\) 范围在 long long,对代码进行了修改,并修改一些笔误,更新了数据范围. \(\texttt{2021.7 ...

  7. cogs 自己出的题目 题解报告

    第一题很简单嘛,就是裸的动态树分治嘛 对于每一层的重心维护子树路径的信息和子树到上一层重心的点的信息 空间复杂度O(nlogn) 对于每一层我们按dis排序,之后记录军队数量的前缀和 查询的时候我们只 ...

  8. Gym - 101480 CERC 15:部分题目题解(队内第N次训练)

    -------------------题目难度较难,但挺有营养的.慢慢补. A .ASCII Addition pro:用一定的形式表示1到9,让你计算加法. sol:模拟. solved by fz ...

  9. 【qboi冲刺NOIP2017复赛试题4】 全套题目+题解+程序

    作为一个好人(验题人),我给大家奉上下这套题的题解,并且预祝大家这套题能够AK: T1题面:Alice现在有n根木棍,他们长度为1,2,3....n,Bob想把某一些木棍去掉,使得Alice剩下的木棍 ...

随机推荐

  1. 关于C#中readonly

    关于C#中readonly的一点小研究 关于C#中readonly的一点小研究   可能园子里有不少文章已经说明了这个问题了,但是我在这里写这篇博客只是写写自己的一些体会,也权当是整理归纳,高手莫见笑 ...

  2. 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP

    由ASP.NET所谓前台调用后台.后台调用前台想到HTTP 在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议内容,在由 ...

  3. XP系统安装ArcGIS10.0需要修改的一个配置

    1,右击我的电脑,查看属性. 2,选择“高级”选项卡,“启动和故障恢复”单击“设置”.   3,在“默认操作系统”中单击“编辑”:   4,在弹出的boot.ini文档中把操作系统改成相应的操作系统, ...

  4. JQ与AJAX 省市区三级联动下拉框

    用于初学者学习基本的联动下拉框,废话不多说,见代码 首先看控制器里的3个下拉框对应代码: public ActionResult GetProvinceList() { ProvinceReposit ...

  5. zookeeper学习(上)

    zookeeper学习(上) 在前面的文章里我多次提到zookeeper对于分布式系统开发的重要性,因此对zookeeper的学习是非常必要的.本篇博文主要是讲解zookeeper的安装和zookee ...

  6. 数据访问模式之Repository模式

    数据访问模式之Repository模式   数据访问层无非就是对数据进行增删改查,其中增.删.改等我们可以抽象出来写一个公共的接口或抽象类来定义这些方法,并采用一个基类实现这些方法,这样该基类派生的子 ...

  7. resin-pro-4.0.34 服務器在windows环境下的配置

    resin-pro-4.0.34 服務器在windows环境下的配置(轉載请注明作者:icelong) 到caucho網站上http://www.caucho.com/download/下載resin ...

  8. 相对于C#,PHP中的个性化语法

    相对于C#,PHP中的个性化语法 背景 今天把PHP的基本语法结构熟悉了一下,包括:变量.类型.常量.运算符.字符串.作用域和函数等,本文列举一些我需要强化记忆的结构(和C#不同). 一些个性化的结构 ...

  9. tastypie Django REST framework API [Hello JSON]

    tastypie is a good thing. Haven't test it thoroughly. Gonna need some provement. Now I will introduc ...

  10. OpenRisc-37-OpenRISC的CPU&core的整体架构分析

    引言 前面我们分析了ORPSoC的整体架构,并对其子系统进行了深入的分析和了解.但对于ORPSoC的核心模块or1200_top及其内部的core--or1200_cpu模块却鲜有涉及,算是ORPSo ...