BestCoder Round 70
惨败,不能再嘲笑别人了,否则自己也会像别人那样倒霉
求ax^2+bx+c能否拆成(px+k)(qx+m)的形式
不错的方法,原来的被hack了
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm> #define rep(i,a,n) for(int i = a;i < n;i++)
#define per(i,n,a) for(int i = n-1;i >=a;i--)
#define pb push_back
#define VI vector<int>
#define QI queue<int>
#define log2(N) log10(N)/log10(2)
#define eps 1e-8 typedef long long ll; using namespace std; int main(){
int T;
scanf("%d",&T);
while(T--){
ll a,b,c,d;
scanf("%I64d%I64d%I64d",&a,&b,&c);
d = b*b - *a*c;
if(d == (ll)sqrt(d)*(ll)sqrt(d)){
puts("YES");
}
else{
puts("NO");
}
}
return ;
}
01背包,记得要来回两次
另外为了简便用到了操作符或 0|0 = 0, 0|1 = 1, 1|1 = 1
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm> #define rep(i,a,n) for(int i = a;i < n;i++)
#define per(i,n,a) for(int i = n-1;i >=a;i--)
#define pb push_back
#define VI vector<int>
#define QI queue<int>
#define log2(N) log10(N)/log10(2)
#define eps 1e-8 typedef long long ll; using namespace std; const int N = + ;
const int MAXN = + ;
int n,sum;
int a[N] = {};
int dp[MAXN] = {}; int main(){
int T;
scanf("%d",&T);
while(T--){
sum = ;
scanf("%d",&n);
rep(i,,n){
scanf("%d",&a[i]);
sum += a[i];
}
memset(dp,,sizeof(dp));
dp[] = ;
rep(i,,n){
per(j,sum+,a[i]){
dp[j] |= dp[j-a[i]];
}
}
rep(i,,n){
rep(j,,sum-a[i]+){
dp[j] |= dp[j+a[i]];
}
}
int z;
scanf("%d",&z);
while(z--){
int s;
scanf("%d",&s);
if(dp[s]){
printf("YES\n");
}
else{
printf("NO\n");
}
}
}
return ;
}
学习的是NANOAPE的代码。赶紧记录一下。
写得还是糊里糊涂,希望牛人能再指导一下。
#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm> #define rep(i,a,n) for(int i = a;i <= n;i++)
#define per(i,n,a) for(int i = n;i >= a;i--)
#define pb push_back
#define VI vector<int>
#define QI queue<int>
#define log2(N) log10(N)/log10(2)
#define eps 1e-8 typedef long long ll; using namespace std; const int MOD = ;
const int MAXN = + ;
char s[MAXN][MAXN] = {};
int n;
int dp[][MAXN][MAXN] = {}; //第一个表示状态,第二个表示j横坐标,第三个表示k横坐标 int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
rep(i,,n-){
scanf("%s",s+i); //s+i相当于s[i]
}
memset(dp,,sizeof(dp));
if(s[][] != s[n-][n-]){ //如果左上角第一个和右下角最后一个不一样,直接输出0
puts("");
continue;
}
dp[][][n] = ; //先让起点和终点为1
rep(i,,n){
int a = i& ;int b = - a; //可以产生两种状态,0和1
rep(j,,i){
per(k,n,n-i){
if(s[j-][i-j+-] == s[k-][n-(i-(n-k))+-]){ //这步非常关键,估计也看的出来是在比较是否两个字母相同。其中n-(i-(n-k))最难理解,大牛写得更是看不懂,如果是我自己的话这样写就能推理出来了吧^_^
dp[a][j][k] = (dp[b][j][k]+dp[b][j-][k]+dp[b][j][k+]+dp[b][j-][k+])%MOD; //分别把前后坐标时候的总数给加起来
}
else{
dp[a][j][k] = ;
}
}
}
} int ans = ;
rep(i,,n){
(ans += dp[n&][i][i])%=MOD; //假设分别是从两头开始出发的,当他们的横坐标都是i且相遇的时候的总数
}
printf("%d\n",ans);
}
return ;
}
BestCoder Round 70的更多相关文章
- BestCoder Round #70 Jam's math problem(hdu 5615)
Problem Description Jam has a math problem. He just learned factorization. He is trying to factorize ...
- hdu5634 BestCoder Round #73 (div.1)
Rikka with Phi Accepts: 5 Submissions: 66 Time Limit: 16000/8000 MS (Java/Others) Memory Limit: ...
- BestCoder Round #89 02单调队列优化dp
1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01 HDU 5944 水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...
- BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元
BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy Init函数 然后统计就ok B. 博弈 题 不懂 推了半天的SG..... 结果这 ...
- bestcoder Round #7 前三题题解
BestCoder Round #7 Start Time : 2014-08-31 19:00:00 End Time : 2014-08-31 21:00:00Contest Type : ...
- Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- 暴力+降复杂度 BestCoder Round #39 1002 Mutiple
题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...
- 贪心 BestCoder Round #39 1001 Delete
题目传送门 /* 贪心水题:找出出现次数>1的次数和res,如果要减去的比res小,那么总的不同的数字tot不会少: 否则再在tot里减去多余的即为答案 用set容器也可以做,思路一样 */ # ...
随机推荐
- C#高级编程笔记 2016年10月26日 MVC入门 Controller
1.MVC的定义: Models: Classes that represent the data of the application and that use validation logi ...
- JQ倒计时天时分秒
<div id="times_wrap" class="time_num"> 距离现在时间: <div class="time_w& ...
- 按钮button的css样式(扁平化底色)
.button { background-color: #ff0000; /* Green */ border: none; color: white; font-family:Arial; padd ...
- Excel中VBA进行插入列、格式化、排序
在数据分析中经常需要对数据进行排序.排名,观察指标排名变化情况,手工处理的话不是太困难,但经常使用,还是编写宏比较方便. 宏命令比较简单,不多解释,只说一下注意事项: 1.有合并单元格,比如列.行合并 ...
- 阿里云centos7基于搭建VPN
本文参考自:http://www.xxkwz.cn/1495.html 前段时间使用pptp搭建了一个VPN,速度很快,但是用了大概一个月挂了,估计是被墙了吧,于是,用shadowsocks重新搭建了 ...
- centos6.6 安装jdk1.7
1:在oracle官网下载jdk liunx版本,放入到虚拟机中 2:解压jdk,解压命令 tar -xvzf jdk-7u15-linux-x64.tar.gz 解压完成(如下图) 3:在/usr/ ...
- kettle系列-4.kettle定制化开发工具类
要说的话这个工具类还是比较简单的,每个方法体都比较小,但用起来还是可以的,把开发中一些常用的步骤封装了下,不用去kettle源码中找相关操作的具体实现了. 算了废话不多了,直接上重点,代码如下: im ...
- python学习笔记(4)--函数
1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...
- 浅析/dev/shm
一,/dev/shm 概念 /dev/shm 是一个tmpfs文件系统,临时文件系统,是基于内存的文件系统,也就是说/dev/shm中的文件是直接写入内存的,而不占用硬盘空间. 在Centos和Red ...
- Win10 UI入门RelativePanel(2)
自适应 1) Gif: 添加动画 2)