今天考得不太好,只拿了100+0+0+30=130分。。。


【GDKOI训练】音乐节拍

考场AC了!

其实就是大水一道

思路:二分查找

每次输入后,输出该时刻所在的区间的编号就好了。

总体难度:★★☆☆☆


【GDKOI训练】电视游戏问题##

思路:捆绑背包

设f[i,j]为前i个平台用j钱的最大价值。

然后一边输入一遍DP就好了。

具体过程请看下面的代码~~

总体难度:★★★★☆


【GDKOI训练】头晕的奶牛##

思路拓扑排序 ←(不懂的戳这里)

拓扑排序后,对于每条双向边,排序后位置靠前的先输出即可。

拓扑排序可以用BFS实现(不用管双向边)。

每连通到一个以前没到过的点,都把它存进队列里,并把它连到的所有边擦掉(所连接的点入度-1),再把这个点从图上永远擦去!

总体难度:★★★☆☆


【GDKOI训练】过路费##

变形的最短路算法。

思路:Floyd(DP)

用一个数组表示边值,一个数组表示点值,然后每次都把两个数组的值加起来判断就可以了。

只用做4次Floyd就可以了(卡常数,嘿嘿嘿嘿)

总体难度:★★☆☆☆


总结:这次比赛的质量还是挺高的。

终于不是那种简单到用暴力水法就可以AK的题目了(然而我还是A了)

我还是要学一下怎样做难题吧!

Σ(`д′*ノ)ノ


代码

音乐节拍

#include<cstdio>
using namespace std;
struct notes
{
int start,end;
}a[50010];
int main()
{
freopen("mnotes.in","r",stdin);
freopen("mnotes.out","w",stdout);
int l,r,n,k,i,j,mid,next=0,b;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&b);
a[i].start=next,a[i].end=next+b-1;
next=next+b;
}
for(i=1;i<=k;i++)
{
scanf("%d",&b);
l=1,r=n;
while(l<=r)
{
mid=(l+r)/2;
if(a[mid].start<=b&&a[mid].end>=b) break;
if(a[mid].start>b) r=mid-1;
else if(a[mid].end<b) l=mid+1;
}
printf("%d\n",mid);
}
return 0;
}

电视游戏问题

#include<cstdio>
#include<cstring>
using namespace std;
__attribute__((optimize("-O2"))) //代码加速!!!
int n,m,f[51][100001];
__attribute__((optimize("-O2")))
int max(int x,int y)
{
if(x>y) return x;
else return y;
}
__attribute__((optimize("-O2")))
int main()
{
freopen("vidgame.in","r",stdin);
freopen("vidgame.out","w",stdout);
int i,j,k,t,ans=0,x,y,use,num,money,milk;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d%d",&use,&num);
for(j=use;j<=m;j++) f[i][j]=f[i-1][j-use];
for(j=1;j<=num;j++)
{
scanf("%d%d",&money,&milk);
for(k=m;k>=use+money;k--)
{
f[i][k]=max(f[i][k],f[i][k-money]+milk);
}
}
for(j=0;j<=m;j++) f[i][j]=max(f[i-1][j],f[i][j]);
}
for(i=1;i<=m;i++) if(f[n][i]>ans) ans=f[n][i];
printf("%d\n",ans);
return 0;
}

头晕的奶牛

#include<cstdio>
using namespace std;
int a[100010],lian[100010][110],b[100010],date[100010];
__attribute__((optimize("-O2")))
int main()
{
freopen("dizzy.in","r",stdin);
freopen("dizzy.out","w",stdout);
int n,m1,m2,i,j,k,x,y,head=0,tail=0;
scanf("%d%d%d",&n,&m1,&m2);
for(i=1;i<=m1;i++)
{
scanf("%d%d",&x,&y);
lian[x][++lian[x][0]]=y;
a[y]++;
}
for(i=1;i<=n;i++)
{
if(!a[i])
{
tail++;
date[tail]=i;
b[i]=tail;
}
}
while(head<tail)
{
head++;
k=date[head];
for(i=1;i<=lian[k][0];i++)
{
j=lian[k][i];
a[j]--;
if(!a[j])
{
tail++;
date[tail]=j;
b[date[tail]]=tail;
}
}
}
for(i=1;i<=m2;i++)
{
scanf("%d%d",&x,&y);
if(b[x]>b[y]) printf("%d %d\n",y,x);
if(b[x]<b[y]) printf("%d %d\n",x,y);
}
return 0;
}

过路费

#include<cstdio>
using namespace std;
int a[100010],lian[100010][110],b[100010],date[100010];
__attribute__((optimize("-O2")))
int main()
{
freopen("dizzy.in","r",stdin);
freopen("dizzy.out","w",stdout);
int n,m1,m2,i,j,k,x,y,head=0,tail=0;
scanf("%d%d%d",&n,&m1,&m2);
for(i=1;i<=m1;i++)
{
scanf("%d%d",&x,&y);
lian[x][++lian[x][0]]=y;
a[y]++;
}
for(i=1;i<=n;i++)
{
if(!a[i])
{
tail++;
date[tail]=i;
b[i]=tail;
}
}
while(head<tail)
{
head++;
k=date[head];
for(i=1;i<=lian[k][0];i++)
{
j=lian[k][i];
a[j]--;
if(!a[j])
{
tail++;
date[tail]=j;
b[date[tail]]=tail;
}
}
}
for(i=1;i<=m2;i++)
{
scanf("%d%d",&x,&y);
if(b[x]>b[y]) printf("%d %d\n",y,x);
if(b[x]<b[y]) printf("%d %d\n",x,y);
}
return 0;
}

2017.10.21 C组比赛总结的更多相关文章

  1. 2017.10.28 C组比赛总结

    这次比赛有点坑... [GDKOI2004]石子游戏 方法:判断奇偶性 输入n 如果n是奇数,输出 xiaoshi 如果n是偶数,输出 xiaoyong 比赛得分:30 错因:找错规律了(忘记了两个人 ...

  2. 2017.9.23 C组比赛总结

    今天又回到了C组,感觉爽歪歪~分数终于是个三位数了,yes! 第一题,赛车.水!只用一个贪心就可以AC了. first,以速度为关键字小到大qsort一下... scond,枚举每一个赛车,看看它可以 ...

  3. 2017.10.21 Java中的数据源与连接池技术

    1.数据源技术就是预先建立好一定的数量的数据库连接,并将这些连接保存在连接池中,有连接池负责对这些数据库连接管理,当访问数据库时,只需要从连接池中取出有空闲状态的数据库连接:当程序访问数据库结束时,释 ...

  4. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  5. 第9次Scrum会议(10/21)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华小组照片 二.开会信息 时间:2017/10/21 17:20~17:45,总计25min.地点:东北师范 ...

  6. 2016.9.10初中部上午NOIP普及组比赛总结

    2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...

  7. 2016.10.7初中部上午NOIP普及组比赛总结

    2016.10.7初中部上午NOIP普及组比赛总结 这次的题还可以,重新入了比赛的前十. 进度: 比赛:90+10+70+30=200 改题:AC+AC+AC+AC=AK 找试场 这题很简单,但是被欺 ...

  8. 2016.10.6初中部上午NOIP普及组比赛总结

    2016.10.6初中部上午NOIP普及组比赛总结 中了病毒--病毒--病毒-- 进度: 比赛:AC+0+0+20=120 改题:AC+0+AC+20=220 Stairs 好--简--单!递推就过了 ...

  9. 2016.10.5初中部上午NOIP普及组比赛总结

    2016.10.5初中部上午NOIP普及组比赛总结 这次的题目出得挺有质量的.但我觉得我更应该努力了. 进度: 比赛:0+20+0+0=20 改题:AC+AC+AC+AC=AK kk的作业 这题我错得 ...

随机推荐

  1. ASP.NET上传断点续传

    IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...

  2. linux中的selinux到底是什么

    一文彻底明白linux中的selinux到底是什么 2018年06月29日 14:17:30 yanjun821126 阅读数 58877 标签: SElinux 更多 个人分类: Linux   一 ...

  3. [LOJ3120][CTS2019|CTSC2019]珍珠:生成函数+NTT

    分析 容易发现\(D \leq n - 2m\)时,任意数列都满足要求,直接判掉,下文所讨论的均为\(D > n - 2m\)的情况. 考虑把两个数列合并,显然可以认为是两个带标号对象的合并,可 ...

  4. 实验吧(你真的会PHP吗)CTF之代码审计最终版---解析是错的 我的才是对的

    0X01代码的详细讲解 0X02代码分析完了 我们来理一下 思路 条件 A POST提交一个number参数的值不能为纯数字 C number取整数后是回文数 D number经过strval转译后的 ...

  5. jquery 动态增加table行,动态删除table行

    在html中我们大量的用到了局部刷新,局部刷新就是使用js来动态的修改html局部的数据.下面来介绍下使用jquery来动态的增加table的行,当然这种方式可以适用到任何的html组件中去. < ...

  6. 高性能JavaScript之加载和执行

    JS在浏览器中的性能,可以认为是开发者所面临的最重要的可行性问题.这个问题因JS的阻塞特性变得复杂,也就是说当浏览器在执行JS代码时,不能同时做其他任何事情.事实上,大多数浏览器都使用单一进程来处理U ...

  7. ES6 变量的结构赋值

    1.数组的解构赋值 a.基本用法:(‘模糊匹配’) let [a, b, c] = [1, 2, 3]; a b c b.嵌套数组结构例子: let [x, , y] = [1, 2, 3]; x y ...

  8. 使用stringstream代替sprintf和sscanf

    C++里面的字符串格式话 之前一直是用的sprintf和sscanf 比较麻烦的是要申请一个字符数组然后在调用 用stringstream就比较完美 int main(int narg,char** ...

  9. C++ Map实践

    实践如下: #include <iostream> #include <map> #include <string> #include <typeinfo&g ...

  10. sigmoid function的直观解释

    Sigmoid function也叫Logistic function, 在logistic regression中扮演将回归估计值h(x)从 [-inf, inf]映射到[0,1]的角色. 公式为: ...