uva 10290 {Sum+=i++} to Reach N (数论-整数和素数)
题目大意:
问一个数n用连续的几个数相加表示的方案数。
解题思路:
假设首项为a,有m项,则 (a+a+m-1)*m=2*n,所以为奇数*偶数的结果,只需要算出2*n用奇数表示的方法数即可。...
分类:
其他好文 时间:
2014-07-31 20:49:07
阅读次数:
179
先贴代码,以后再写题解。。。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 typedef long long ll; 8 9 ll s[100];10 11 ll init (int n){...
分类:
其他好文 时间:
2014-07-31 20:26:37
阅读次数:
206
如果求出第一种情况的逆序列,其他的可以通过递推来搞出来,一开始是t[1],t[2],t[3]....t[N]它的逆序列个数是sum个,如果把t[1]放到t[N]后面,逆序列个数会减少t[1]个,相应会增加N-(t[1]+1)个 1 #include 2 #include 3 using name.....
分类:
其他好文 时间:
2014-07-31 20:21:17
阅读次数:
270
代码:#include #include using namespace std; int a[1005], dp[1005]; int main() { int n,sum,i,j; while( scanf("%d",&n)&&n){ for( i=0; ia[j]) dp[i]=max...
分类:
其他好文 时间:
2014-07-31 16:42:26
阅读次数:
151
线段树 1 #include 2 #include 3 using namespace std; 4 #define N 200010 5 int sum[N]; 6 void build(int l,int r,int root){ 7 if(l==r)scanf("%d",&sum...
分类:
其他好文 时间:
2014-07-31 16:21:47
阅读次数:
200
线段树,懒惰标记 1 #include 2 #include 3 using namespace std; 4 #define N 400010 5 int sum[N],lazy[N]; 6 void pushup(int root){ 7 sum[root]=sum[root*2]+...
分类:
其他好文 时间:
2014-07-31 16:07:46
阅读次数:
255
分析得,选取的电视塔的位置应当位于各城市的加权中位数位置的右边最近的城市位置。理由:对于上述位置A,假设它右边城市+它本身的人数为rp,它左边城市的人数为lp,由定义rp>=lp。所以,如果向左移动D距离,则右边城市不满意度增加D*rp,左边减少D*lp=sum/2+sum%2){ printf.....
分类:
其他好文 时间:
2014-07-31 15:57:46
阅读次数:
196
ACdreamOJ 1154 Lowbit Sum (数位dp)
ACM
题目地址:ACdreamOJ 1154
题意:
long long ans = 0;for(int i = 1; i n; i ++) ans += lowbit(i)
lowbit(i)的意思是将i转化成二进制数之后,只保留最低位的1及其后面的0,截断前面的内容,然后再转成10进制...
分类:
其他好文 时间:
2014-07-31 13:35:46
阅读次数:
195
1、大数加减法
思路分析:
1、将数据当做字符串输入(gets(s))
2、将字符型转换为整型,逆着存
char?int i=0,j=len-1, int[i++]=char[j--]
3、从首位开始相加,
若sum>9,int[i]=sum%10,int[i+1]+=sum/10...
分类:
其他好文 时间:
2014-07-31 13:26:16
阅读次数:
215
UVA 1401 - Remember the Word
[题目链接]
题意:给定一些单词,和一个长串,问这个长串拆分成已有单词,能拆分成几种方式
思路:Trie,先把单词建成Trie,然后进行dp,dp[i]表示以i为开头的情况,然后每个状态只要在Trie树上找到相应的i开头的单词,然后dp[i] = sum{dp[i + len]}进行状态转移即可
代码:
#in...
分类:
其他好文 时间:
2014-07-31 13:25:06
阅读次数:
195