摘要:
C4730各种乱搞,拼手速了。 1 #include 2 #include 3 #include 4 using namespace std; 5 char str[110]; 6 int main () 7 { 8 int t; 9 scanf("%d",&t);10 for(int Case=1; Case 2 #include 3 #include 4 #define maxlen 100010 5 using namespace std; 6 long long n,m; 7 long long a[maxlen]; 8 int main () 9 {... 阅读全文
摘要:
update 13-12-3hdu47342013年成都网络赛G题A按位分解为(AnAn-1An-2... A2A1)定义F(A)= An* 2n-1+ An-1* 2n-2+ ... + A2* 2 + A1* 1现在给你两个数A,B。问你在0~B区间内有多少个数 2 #include 3 #include 4 using namespace std; 5 int dp[20][200000]; 6 int digit[20]; 7 int dfs(int pos,int num,bool flag) 8 { 9 if(pos==-1)10 return num>... 阅读全文
摘要:
hdu 1565方格取数(1)题目大意:取不能有临边的点,求最大和分析:把每一列转化为2进制每一位,1表示这个格子取,0为不取,通过二进制得到的整数值表示一个状态。这边判断没有临边的方法即x&y==0同时x与y的二进制也没有相邻的1。即x&(x 2 #include 3 #include 4 #define maxlen 18000 5 using namespace std; 6 int dp[21][maxlen]; 7 int status[maxlen]; 8 int maps[21][21]; 9 int main ()10 {11 int n;12 while(.. 阅读全文
摘要:
hdu 1520 Anniversary party分析:要求不跟自己的上司或下属在一起即根不与其孩子同时选择。dp[i][0]表示i为根且根不选获得的最大值,则其值为孩子结点选择与不选的最大值即dp[i][0]=max(dp[son][0],dp[son][1]);dp[i][1]表示i为根且选择获得的最大值,则其孩子结点不能选择dp[i][1]=sum{dp[son][0]}; 1 #include 2 #include 3 #include 4 #define maxlen 6010 5 using namespace std; 6 struct node 7 { 8 in... 阅读全文
摘要:
Problem DescriptionBenny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a lot of samll squares. Water pipes are placed in these squares. Different square has a different type of pipe. There are 11 types of pipes, which is marked from A to K, as Figure 1 shows 阅读全文
摘要:
比赛的时候跟学长说了一下我的想法,贪心,首先排序,x从小到大排序,x相同的y从小到大,然后优先选择边长小的能组成正方形的点。但是写跪了,后来交给学长写状态压缩dp。今天看到结题报告里有人用的类似的方法过了,查看后发现是我没有判断重点的情况,改后怒ac,还是太弱了,不然可以省下点时间做其他的题目。 1 #include 2 #include 3 #include 4 #include 5 #define maxlen 30 6 using namespace std; 7 int maps[110][110]; 8 struct node 9 {10 int x,y;11 }p[... 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=4745比赛的时候一直想的是枚举每个起点然后求最长公共子序列,一直TLE,一直优化无果。后来看到了过的人都是用最长回文子序列的算法,第一次见到这个算法,学习了。在这题中我们用dp[i][j]表示一只兔子从i逆时针走,另一只从j顺时针走,可以走到的最长距离。那么方程就是(与最长公共子序列类似)dp[i][j]=dp[(i-1+n)%n][(j+1)%n]+2 a[i]==a[j]dp[i][j]=max{dp[(i-1+n)%n][j],dp[i][(j+1)%n]} a[i]!=a[j]最后的结果就是枚举... 阅读全文
摘要:
uva 10891Game of Sum题目大意:两个人轮流从数组里面取数,可以在头或者尾选择连续的任意多个,直到取完。最后统计两个人取走的数之和,两个人都尽量让自己的得分高,求A的得分减去B的得分。分析:这题的关键是只能在头尾取,把数组看成一个序列(i~j),那么取走k个数后仍是一个连续的序列(i+k,j)或(i,j-k)。我们用dp[i][j]表示碰到(i,j)这个序列能得到的最高分数。那么我们考虑如何转移,这里有点博弈的思想,我们要现在这个状态最高即要求对方碰到的状态(即自己取完后的状态)的得分越少越好。那么状态转移方程就是dp[i][j]=sum[i][j]-min{dp[i+1][j 阅读全文
摘要:
hdu 1829A Bug's Lifehttp://acm.hdu.edu.cn/showproblem.php?pid=1829解题思路:这个题目跟其他的不太一样,给出的不是同类而是异类,其实是差不多的。增加一个sex[i]表示i的异类,那么就是有两个集合,输入一组数据的时候判断一下两个是不是在同一个集合里,如果是那么输出Suspicious bugs found!一直没有输出No suspicious bugs found! 1 #include 2 #include 3 #include 4 #define maxlen 2010 5 using namespace std; 阅读全文
摘要:
线段树的风格是跟NotOnlySuccess学的单点更新:最最基础的线段树,只更新叶子节点,然后把信息用PushUP(int r)这个函数更新上来1、hdu1166 敌兵布阵C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇 阅读全文