博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BestCoder Round #75 解题报告
阅读量:5291 次
发布时间:2019-06-14

本文共 3093 字,大约阅读时间需要 10 分钟。

1.King's Cake

#include
#include
using namespace std;int ans;void solve(int l,int w){ if(weight == 0||weight == 0) return 0; int t,tl,tw; t = l/w; ans += t; tw = w; w = l%w; l = tw; solve(l,w);}int main(void){ int length,weight,cas; cin >> cas; while(cas--) { int t; ans = 0; cin >> length >> weigth; t = length; if(length < weight){ length = weight; weight = t; } solve(length,weigth); cout >> ans >> endl; } return 0;}

2.King's Phone

#include 
#include
#include
using namespace std;int M[10],a[3][3];void Init(){ int i,j; for(i = 0;i < 3;i ++) for(j = 0;j < 3;j ++) a[i][j] = 0;}int Judge(int len){ int i,j; for(i = 2;i <= len;i ++) for(j = i+1;j <= len;j ++){ if((M[i]-1)/3 == (M[i-1]-1)/3) { if((M[i]-1)/3 == (M[j]-1)/3&&( (M[i]-M[j])*(M[i-1]-M[j]) < 0)) return 0; } else { if( ((M[i]-1)/3-(M[j]-1)/3)*((M[i-1]-1)/3-(M[j]/3-1)) < 0) return 0; } } return 1;}int main(){ int cas; char m[18]; cin >> cas; getchar(); while(cas --){ cin.get(m,18); getchar(); //cout << m << endl; Init(); int len = strlen(m); //cout << "len=" << len << endl; //cout << len << endl; int j = 1; for(int i=0;i < len;i += 2){ M[j ++] = m[i] - '0'; } int ans = Judge(len/2+1); if(ans) cout << "valid" << endl; else cout <<"invalid" <

3.King's Order

#include 
using namespace std;long long dp[2001][26][4]; //dp[i][j][k]表示第i位为第'a' + j末位重复k次的方案数void init(){ int i,j,k; for(i = 1;i <= 26;i ++) { for(j = 0;j < 26;j ++) { for(k = 1;k < 4;k ++) dp[i][j][k] = 0; } } for(i = 0;i < 26;i ++){ dp[1][i][1] = 1; dp[1][i][2] = dp[1][i][3] = 0; }}int main(){ int cas,n; int i,j,k; long long ans; cin >>cas; while(cas --) { ans = 0; cin >> n; int i; init(); for(i = 2;i <= n;i ++) { for(j = 0;j < 26;j ++) { for(k = 0;k < 26;k ++) { if(k!=j) dp[i][j][1] = (dp[i][j][1] + dp[i-1][k][1] + dp[i-1][k][2] + dp[i-1][k][3])%1000000007; else if(k == j){ dp[i][j][2] = dp[i-1][k][1]%1000000007; dp[i][j][3] = dp[i-1][k][2]%1000000007; } } //cout << dp[i][j][1] << endl; } } for(i = 0;i < 26;i ++) ans = (ans + dp[n][i][1] + dp[n][i][2] + dp[n][i][3])%1000000007; cout << ans << endl; } return 0;}

 

转载于:https://www.cnblogs.com/zhangjialu2015/p/5270119.html

你可能感兴趣的文章
SQL SERVER 2005中如何获取日期(一个月的最后一日、一年的第一日等等)
查看>>
django 学习笔记(转)
查看>>
控制台程序秒变Windows服务(Topshelf)
查看>>
字节流与字符流的区别详解
查看>>
20141026--娱乐-箱子
查看>>
自定义分页
查看>>
Oracle事务
查看>>
任意输入10个int类型数据,把这10个数据首先按照排序输出,挑出这些数据里面的素数...
查看>>
String类中的equals方法总结(转载)
查看>>
图片问题
查看>>
bash使用规则
查看>>
AVL数
查看>>
第二章练习
查看>>
ajax2.0
查看>>
C#时间截
查看>>
C语言程序设计II—第九周教学
查看>>
C# 获取系统时间及时间格式转换
查看>>
WCF、WebAPI、WCFREST、WebService之间的区别
查看>>
2018-2019-2-20175332-实验四《Android程序设计》实验报告
查看>>
全栈12期的崛起之捡点儿有用的说说
查看>>