六道普及组题,没啥好说的

场上预计得分:100+100+100+100+100+100=600(省一分数线490)

(AK是不可能AK的,这辈子不可能AK的)

题解:

D1T1 生活大爆炸版石头剪刀布

题面

水题送温暖~

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 2147483647
#define eps 1e-9
using namespace std;
typedef long long ll;
const int ch[][]={{,,,,},{,,,,},{,,,,},{,,,,},{,,,,}};
int n,n1,n2,ans1,ans2,a[],b[];
int main(){
scanf("%d%d%d",&n,&n1,&n2);
for(int i=;i<n1;i++){
scanf("%d",&a[i]);
}
for(int i=;i<n2;i++){
scanf("%d",&b[i]);
}
for(int i=;i<=n;i++){
ans1+=ch[a[(i-)%n1]][b[(i-)%n2]];
ans2+=ch[b[(i-)%n2]][a[(i-)%n1]];
}
printf("%d %d",ans1,ans2);
return ;
}

D1T2 联合权值

题面

和一个同点相连的两个点一定会产生联合权值;

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 2147483647
#define eps 1e-9
#define mod 10007
using namespace std;
typedef long long ll;
struct edge{
int v,next;
}a[];
int n,u,v,tot=,ans=-inf,anss=,top,s[],num[],head[];
void add(int u,int v){
a[++tot].v=v;
a[tot].next=head[u];
head[u]=tot;
}
void work(int u){
int sum=,mx=-inf,mmx=-inf;
top=;
for(int tmp=head[u];tmp!=-;tmp=a[tmp].next){
int v=a[tmp].v;
s[++top]=v;
sum+=num[v];
if(num[v]>mx){
mmx=mx;
mx=num[v];
}else mmx=max(mmx,num[v]);
}
if(top<)return;
ans=max(ans,mx*mmx);
for(int i=;i<=top;i++){
anss=(anss+(ll)num[s[i]]*(sum-num[s[i]]))%mod;
}
}
int main(){
memset(head,-,sizeof(head));
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%d%d",&u,&v);
add(u,v);
add(v,u);
}
for(int i=;i<=n;i++)scanf("%d",&num[i]);
for(int i=;i<=n;i++){
work(i);
}
printf("%d %d",ans,anss);
return ;
}

D1T3 飞扬的小鸟

题面

唯一可能有点思维难度的题?70分显然,正解就向上向下分两种背包(01和完全)转移即可;

(1A爽爽)

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 0x7f7f7f7f
#define eps 1e-9
using namespace std;
typedef long long ll;
int n,m,k,p,L,H,tmp,ans=inf,x[],y[],l[],h[],f[][];
bool isp[];
int main(){
memset(f,0x7f,sizeof(f));
memset(isp,,sizeof(isp));
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++){
scanf("%d%d",&x[i],&y[i]);
l[i]=;
h[i]=m+;
}
for(int i=;i<=k;i++){
scanf("%d%d%d",&p,&L,&H);
isp[p]=true;
l[p]=L;
h[p]=H;
}
for(int i=;i<=m;i++)f[][i]=;
for(int i=;i<=n;i++){
for(int j=x[i]+;j<=m;j++){
f[i][j]=min(f[i][j],f[i-][j-x[i]]+);
f[i][j]=min(f[i][j],f[i][j-x[i]]+);
}
for(int j=m-x[i];j<=m;j++){
f[i][m]=min(f[i][m],min(f[i][j]+,f[i-][j]+));
}
for(int j=l[i]+;j<h[i];j++){
if(j+y[i]<=m){
f[i][j]=min(f[i][j],f[i-][j+y[i]]);
}
}
for(int j=;j<=l[i];j++)f[i][j]=inf;
for(int j=h[i];j<=m;j++)f[i][j]=inf;
}
for(int i=;i<=m;i++){
ans=min(ans,f[n][i]);
}
if(ans==inf){
ans=;
for(int i=;i<=n;i++){
tmp=inf;
for(int j=;j<=m;j++)tmp=min(tmp,f[i][j]);
if(tmp==inf)break;
if(isp[i])ans++;
}
printf("0\n%d",ans);
}else printf("1\n%d",ans);
return ;
}

D2T1 无线网络发射器选址

题面

水题送温暖~

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 2147483647
#define eps 1e-9
using namespace std;
typedef long long ll;
int n,d,x,y,k,ans=,tmp,anss=,mp[][];
int main(){
scanf("%d%d",&d,&n);
for(int i=;i<=n;i++){
scanf("%d%d%d",&x,&y,&k);
mp[x][y]=k;
}
for(int i=;i<=;i++){
for(int j=;j<=;j++){
tmp=;
for(int x=max(i-d,);x<=min(i+d,);x++){
for(int y=max(j-d,);y<=min(j+d,);y++){
tmp+=mp[x][y];
}
}
if(tmp>ans){
ans=tmp;
anss=;
}else if(tmp==ans)anss++;
}
}
printf("%d %d",anss,ans);
return ;
}

D2T2 寻找道路

题面

什么时候裸的最短路可以上D2T2了??显然建反向边把不能到达的点判掉,然后裸的最短路;

(并没有卡SPFA好评)

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 2147483647
#define eps 1e-9
using namespace std;
typedef long long ll;
struct edge{
int v,next;
}a[],_a[];
int n,m,u,v,vs,vt,tot=,_tot=,head[],_head[],sp[];
bool isin[],used[],vis[];
void add(int u,int v){
a[++tot].v=v;
a[tot].next=head[u];
head[u]=tot;
}
void _add(int u,int v){
_a[++_tot].v=v;
_a[_tot].next=_head[u];
_head[u]=_tot;
}
void bfs(int s){
queue<int>q;
q.push(s);
used[s]=true;
while(!q.empty()){
int u=q.front();
q.pop();
for(int tmp=_head[u];tmp!=-;tmp=_a[tmp].next){
int v=_a[tmp].v;
if(!used[v]){
used[v]=true;
q.push(v);
}
}
}
}
void spfa(int s){
memset(isin,,sizeof(isin));
memset(sp,0x3f,sizeof(sp));
queue<int>q;
q.push(s);
isin[s]=true;
sp[s]=;
while(!q.empty()){
int u=q.front();
q.pop();
isin[u]=false;
for(int tmp=head[u];tmp!=-;tmp=a[tmp].next){
int v=a[tmp].v;
if(vis[v]&&sp[v]>sp[u]+){
sp[v]=sp[u]+;
if(!isin[v]){
isin[v]=true;
q.push(v);
}
}
}
}
}
int main(){
memset(used,,sizeof(used));
memset(head,-,sizeof(head));
memset(_head,-,sizeof(_head));
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
scanf("%d%d",&u,&v);
if(u==v)continue;
add(u,v);
_add(v,u);
}
scanf("%d%d",&vs,&vt);
bfs(vt);
if(!used[vs])return printf("-1"),;
for(int i=;i<=n;i++){
vis[i]=true;
for(int tmp=head[i];tmp!=-;tmp=a[tmp].next){
int v=a[tmp].v;
vis[i]&=used[v];
}
}
spfa(vs);
printf("%d",sp[vt]);
return ;
}

D2T3 解方程

题面

无力吐槽了……一道跟D1T1一样水的题放在D2T3是想考我们读题能力吗……还是考字符串转化成数字的处理??

枚举解,把所有系数膜一个大质数即可;

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#define inf 2147483647
#define eps 1e-9
#define mod 998244353
using namespace std;
typedef long long ll;
int rd(){
int x=,f=;
char ch;
do{
ch=getchar();
if(ch=='-')f=-;
}while(!isdigit(ch));
do{
x=((ll)x*+ch-'')%mod;
ch=getchar();
}while(isdigit(ch));
if(f==-)x=mod-x;
return x;
}
int n,m,ans=,anss[],num[];
void work(int x){
ll nw=,ret=;
for(int i=;i<=n;i++){
ret=(ret+(ll)nw*num[i]%mod+mod)%mod;
nw=(nw*x)%mod;
}
if(ret==)anss[++ans]=x;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
num[i]=rd();
}
for(int i=;i<=m;i++){
work(i);
}
printf("%d\n",ans);
for(int i=;i<=ans;i++){
printf("%d\n",anss[i]);
}
return ;
}

总结:

早就听说很水,没想到这么水……晚上无聊写写一个半小时不到写完了……“当你走进提高组考场考了六道普及组题目是怎样一种体验”

[NOIP补坑计划]NOIP2014 题解&做题心得的更多相关文章

  1. [NOIP补坑计划]NOIP2015 题解&做题心得

    感觉从15年开始noip就变难了?(虽然自己都做出来了……) 场上预计得分:100+100+60~100+100+100+100=560~600(省一分数线365) 题解: D1T1 神奇的幻方 题面 ...

  2. [NOIP补坑计划]NOIP2017 题解&做题心得

    终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...

  3. [NOIP补坑计划]NOIP2012 题解&做题心得

    场上预计得分:100+90+70+100+100+3060=490520(省一分数线245) 题解: D1T1 Vigenère 密码 题面 水题送温暖~~ #include<iostream& ...

  4. [NOIP补坑计划]NOIP2016 题解&做题心得

    感觉16年好难啊QAQ,两天的T2T3是不是都放反了啊…… 场上预计得分:100+80+100+100+65+100=545(省一分数线280) ps:loj没有部分分,部分分见洛咕 题解: D1T1 ...

  5. [NOIP补坑计划]NOIP2013 题解&做题心得

    场上预计得分:100+100+100+100+100+60=560(省一分数线410) 五道傻逼题+一道大搜索题…… 题解: D1T1 转圈游戏 题面 水题送温暖~ #include<algor ...

  6. [BJOI2016]水晶 做题心得

    [BJOI2016]水晶 做题心得 这是一个写了我两小时的傻逼题.写这个题浪费了一堆时间后,我才意识到我码力又不行了.于是整理起了实现技巧,开始练码力. 思路 不难.首先把 \((x,y,z)\) 变 ...

  7. CF1416D 做题心得

    CF1416D 做题心得 上次在某trick中提到了这个题,一开始觉得太毒瘤没有写,现在把它补上了. 感觉实现这个东西,比单纯收获一个trick,收获的东西多太多了. 主要思路 它的主要trick是& ...

  8. [JSOI2019]节日庆典 做题心得

    [JSOI2019]节日庆典 做题心得 一个性质有趣的字符串题 这要是在考场上我肯定做不出来吧 一开始还以为要 SAM 什么的暴力搞,没想到只用到了 \(Z\) 函数 -- 也是我生疏了罢 (学了啥忘 ...

  9. 2018.我的NOIP补全计划

    code: efzoi.tk @ shleodai noip2011 D1 选择客栈 这道题是一道大水题,冷静分析一会就会发现我们需要维护最后一个不合法点和前缀和. 维护最后一个不合法点只要边扫描边维 ...

随机推荐

  1. POJ 1328 Radar Installation 【贪心 区间选点】

    解题思路:给出n个岛屿,n个岛屿的坐标分别为(a1,b1),(a2,b2)-----(an,bn),雷达的覆盖半径为r 求所有的岛屿都被覆盖所需要的最少的雷达数目. 首先将岛屿坐标进行处理,因为雷达的 ...

  2. C语言-统计数字、字母、特殊字符

    Action() { //统计字符019aBcd8***,4,4,3 int i,z,t; char *str="019aBcd8***"; fun_Count(str,i,z,t ...

  3. Unity 点击屏幕发射射线 代码

    1,创建一根射线 2,检查射线与其他物体的碰撞,得到碰撞信息 3,通过碰撞信息对碰撞到的物体进行处理 using System.Collections; using System.Collection ...

  4. Unity3d 拖拽脚本报错 Can’t add script

    报错截图: 报错原因: c#文件创建以后再改名,会报错找不到对应类. 类名和文件名要一致才行.(这个是Unity要求,c#本身不要求一致)

  5. ZBrush中的实时遮罩

    在ZBrush®中有许多遮罩类型,包括柔滑遮罩.反转遮罩,实时遮罩等.其中,实时遮罩又包含很多种类,它不同于一般的遮罩是不显示的,实时遮罩是根据实时信息产生新的遮罩. 在“Brush”菜单下“Auto ...

  6. underscore的简单了解

    1.underscore:一个封装好的js工具库,它提供了一整套函数式编程的使用功能,但是没有扩展任何js内置对象.它解决了这个问题:如果我面对一个空白的HTML,并希望立即开始工作,我需要什么? 2 ...

  7. centos7安装anaconda之后报错:rpm: /home/wyl/anaconda3/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)

    1.报错 参考:https://stackoverflow.com/questions/47633870/rpm-lib64-liblzma-so-5-version-xz-5-1-2alpha-no ...

  8. python的迭代器、生成器、三元运算、列表解析、生成器表达式

    一 迭代的概念 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前 ...

  9. java SSM多操作注解回滚

    在业务操作时难免会遇到一个业务多操作,会用到事物回滚这里写了一个简单的多操作失败事物回滚案例 在这之前你需要在你的applicationContext-mybatis.xml中配置: <!-- ...

  10. [剑指offer] 5. 用两个栈实现队列+[剑指offer]30. 包含min函数的栈(等同于leetcode155) +[剑指offer]31.栈的压入、弹出序列 (队列 栈)

    c++里面stack,queue的pop都是没有返回值的, vector的pop_back()也没有返回值. 思路: 队列是先进先出 , 在stack2里逆序放置stack1的元素,然后stack2. ...