奋斗群群赛17总结与心得(未完)
来源:互联网 发布:贵阳浪人网络 编辑:程序博客网 时间:2024/05/18 15:52
- 总体情况
- T1
- 思路
- T2
- 思路
- T3
- 思路
- T4
- 思路
- T5
- 思路
总体情况
http://codeforces.com/contest/11
本次群赛从codeforces里选了第11套题.像我这种蒟蒻能做出A已经是万幸了.
我接下来的题目都不写题意了.
T1
思路
直接模拟TLE,我用一些方法减少了循环的次数.
#include<bits/stdc++.h>using namespace std;long long a[5000];int main(){long long n,i,d,s=0,t;scanf("%I64d%I64d",&n,&d);for (i=1;i<=n;i++) scanf("%I64d",&a[i]);for (i=1;i<n;i++) if (a[i]>=a[i+1]) { t=(a[i]-a[i+1])/d+1;//除法,看看能加多少次. a[i+1]+=t*d; s+=t; }printf("%I64d",s);}
T2
我看到题推了几下,然后跪了.
思路
如果说a步能走到n,说明1-a的和必与n同奇偶.这样的话稍微压压行只需要1个for循环就可以了.
#include<bits/stdc++.h>int n,i,s;main(){std::cin>>n;for (n=abs(n);s<n||s%2!=n%2;s+=i) i++;std::cout<<i; }
T3
思路
这题想必是个dfs,搜索一下有多少正方形和斜着的正方形.
#include<bits/stdc++.h>using namespace std;const int x[9]={0,1,0,-1,1,1,-1,-1},y[9]={1,0,-1,0,1,-1,1,-1};int n,m,s;char norie[310][310];void dfs(int p,int q,int &s){if (p<0||p>=n||q<0||q>=m||norie[p][q]!='1') return;norie[p][q]='2',s++;for (int i=0;i<8;i++) dfs(p+x[i],q+y[i],s);}bool solve(int p,int q,int d,int l,int r){int i,j;for (i=0;i<=d;i++) for (j=l;j<r;j++) if (p+x[j]*i<0||p+x[j]*i>=n||q+y[j]*i<0||q+y[j]*i>=m||norie[p+x[j]*i][q+y[j]*i]!='2') return 0;return 1;}int main(){int i,j,t;for (scanf("%d",&t);t--;) { scanf("%d%d",&n,&m); for (i=0;i<n;i++) scanf("%s",norie[i]); int answer=0; for (i=0;i<n;i++) for (j=0;j<m;j++) if (norie[i][j]=='1') { dfs(i,j,s=0); if (s%4||s/4>min(n,m)) continue; answer+=solve(i,j,s/4,0,2)&&solve(i+s/4,j+s/4,s/4,2,4); answer+=solve(i,j,s/4,4,6)&&solve(i+s/2,j,s/4,6,8); } printf("%d\n",answer); }}
T4
思路
状压dp,然而我dp超级差.
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int boss=1e6;ll answer,dp[boss+10][20];int bits[20],w[20],n,m,edge[boss+10],state;int main(){int i,j,k,u,v;scanf("%d%d",&n,&m);for (i=0;i<=n;i++) bits[i]=1<<i;for (i=1;i<=m;i++) { scanf("%d%d",&u,&v); w[u-1]|=bits[v-1],w[v-1]|=bits[u-1]; }for (i=1;i<=bits[n];i++) { for (state=0;state<n;state++) if (i&bits[state]) break; if (i==bits[state]) { dp[i][state]=edge[i]=1; continue; } edge[i]=edge[i^bits[state]]+1; for (j=state+1;j<n;j++) if (i&bits[j]) { for (k=0;k<n;k++) if (w[j]&bits[k]) dp[i][j]+=dp[i^bits[j]][k]; if (w[j]&bits[state]&&edge[i]>2) answer+=dp[i][j]; } }printf("%I64d",answer/2);}
T5
思路
什么鬼.
//
阅读全文
0 0
- 奋斗群群赛17总结与心得(未完)
- 奋斗群群赛2总结与心得
- 奋斗群群赛4总结与心得
- 奋斗群群赛5总结与心得
- 奋斗群群赛6总结与心得
- 奋斗群群赛7总结与心得
- 奋斗群群赛9总结与心得
- 奋斗群群赛10总结与心得
- 奋斗群群赛11总结与心得
- 奋斗群群赛13总结与心得
- 奋斗群群赛15总结与心得
- 奋斗群群赛16总结与心得
- 奋斗群群赛18总结与心得
- 奋斗群群赛19总结与心得
- 奋斗群群赛3总结与心得(缺5)
- 奋斗群群赛12总结与心得(缺4)
- 奋斗群群赛14总结与心得附上周总结与目标
- 奋斗群群赛8总结与心得,附上周所有错误小结
- 综合指南: 何时使用 Em 与 Rem
- Redis持久化方法
- iOS成长之路-- XCode工程中 Project 和 Targets区别
- 什么是P问题、NP问题和NPC问题
- [codevs4267]阮神的妹子们
- 奋斗群群赛17总结与心得(未完)
- 基本概念
- Strategic Game HDU
- java学习第25天,学习stringBuilder,stringBuffer,基础的正则,matches()
- flask学习
- 官方原装正版YTD Video Downloader Pro批量下载Youtube视频专版
- leetcode 367. Valid Perfect Square 数学优化
- js下载文件
- 线性模型